[SQLite]浅析其一——SQLite数据库简介

SQLite数据库简述

1.1. 介绍

节选并翻译自官网介绍:

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。其代码完全开源,可供个人或商业完全免费使用。

SQLite是一个嵌入式的SQL数据库引擎。与大部分SQL服务器不同,SQLite不存在单独的服务端进程,所有读写都是直接操作磁盘上的一个db文件;SQLite保存的数据库文件可跨平台使用——无论是32位/64位系统,还是大端/小端架构;

SQLite并不是为了替代Oracle而生,而是为了替代fopen()而生;

SQLite非常轻量,完整功能的库文件可以在某些编译情况下做到600Kib以下。而运行时的内存占用,与执行效率是不可调和的两面,给的内存越多,执行效率越高。尽管如此,在低内存设备上也有良好的表现。SQLite在使用得当的情况下,可以做到比Direct I/O更快;

1.2. 特点

SQLite的主要特性有如下几点:

  • ACID*事务。

  • 零配置–无需安装和管理配置。

  • 支持大多数SQL92标准,比如:ATTACH DATABASE,BEGIN TRANSACTION,COMMENT等等,同时它还支持事务处理功能。

  • 单个数据库的所有信息储存在单一磁盘文件中。适用于作为应用程序文件的存储格式。

  • 支持数据库大小扩展至2TB。

  • 源码代码量小, 大致13万行C代码, 4.43M。

  • 简单易用的API。

  • 用ANSI-C编写,同时加入TCL**绑定。可通过Wrapper支持其他语言的绑定。

  • 良好注释的源代码, 并且有着90%以上的测试覆盖率。

  • 可作为单独头文件包,编译简单,易于添加到大型项目中。

  • 独立: 没有额外依赖.

  • 支持多平台多开发语言:UNIX(Linux, Mac OS-X, Android, IOS), Windows(Win32, WinCE, WinRT), C, PHP, Perl, Java, C#,Python, Ruby.

  • 源码完全的开源, 你可以用于任何用途, 包括出售它.

  • 命令行接口,可通过命令行来管理数据库.

    * ACID - 原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)

    ** TCL - Tool Command Language,一种有编程特征的解释语言;

1.3. 架构

下图是基于官网架构示意图进行的改进版:
在这里插入图片描述
整体来说,应用通过SQLite提供的Interface接口,对数据库进行CRUD操作,其经历流程如上图箭头所示;

具体来看,每个模块的分工如下:

  • Core 即核心模块,负责整个数据库流程正常运行;
  • SQL Compiler 即编译器模块,Core中的SQL Command Processor步骤展开即为该模块进行处理;
  • Backend 即后端模块,与Core模块中的Virtual Machine对接,负责数据结构化、分页、调用对应系统调用进行持久化存储等;
  • Accessories 即附加模块,主要包括一些调试工具以及测试代码,本身不参与整个CRUD操作流程;

以上是基于官网,以及自己的认知对SQLite的一个简介,后续会更新不同日志模式下的流程浅析;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值