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的一个简介,后续会更新不同日志模式下的流程浅析;

[SQLite]浅析其一——SQLite数据库简介相关推荐

  1. 简述sqlite数据库的特点_SQLite数据库 简介、特点、优势、局限性及使用

    SQLite简介 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足.无服务器.零配置的.事务性的SQL数据库引擎.它是一个零配置的数据库,这就体现出来SQLite与 ...

  2. android mysql sqlite_Android SQLite (一) 数据库简介

    大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准 ...

  3. Android SQLite (一) 数据库简介

    大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准 ...

  4. 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...

    PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost ...

  5. Android开发学习笔记:数据存取之SQLite浅析

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...

  6. android mysql 图片_android sqlite添加图片到数据库

    sqlite图片是怎么储存的呢?其实是二进制的方式存储的 blob代表使用二进制储存 (更多类型参考:数据库简介) 在创建表的地方,VALUE_PIC代表存储图片字段,blob代表这个字段是以二进制储 ...

  7. sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库

    原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...

  8. sqlite管理工具_Liquibase 数据库版本管理工具:1.安装

    1.Liquibase 是什么 粘一段官方的解释 Track, version, and deploy database changes 跟踪.管理和应用数据库变化 说白了,就是一个将你的数据库脚本转 ...

  9. SQLite和NPoco的数据库初始化器

    目录 介绍 IDbInitialiser IDatabaseConfigurator 示例实现 注意事项 下载源代码 - 49.7 KB 介绍 这篇文章是在我创建一个小型博客风格的Web应用程序时出现 ...

最新文章

  1. vue全家桶+Koa2开发笔记(2)--koa2
  2. C#操作Word完全功略!
  3. 春节英语祝福【中英文对照】
  4. 基于规则的应用程序开发实战(转载与MSDN)
  5. 你知道用git打补丁吗?
  6. 01c-1: 主流长远
  7. MATLAB矩阵的算术运算
  8. python爬虫英文单词_Python_爬虫百度英文学习词典
  9. 设z服从标准正态分布_设Z服从标准正态分布,则P(Z1.33)=
  10. C语言练习-还原算术表达式
  11. c语言知道ascII码求字母,c语言的ascii代码
  12. 国企面试-260题-单选题 下列哪组成语反映了同一种人际关系: A 琴瑟和鸣 破镜重圆 B 负荆请罪 载舟覆舟 C 结草衔环 青梅竹马 D 相濡以沫 舐犊情深
  13. 如何还原完整差异备份
  14. (二)u-boot2013.01.01 for TQ210:《Makefile分析》
  15. Maple学习笔记——编程
  16. 解决centos8 中安装mysql5.7.26时 libtinfo.so.5()(64bit)被依赖的问题
  17. XP停止服务:不必难过 千里相送终有一别
  18. 简单爬虫1688商品的主图和详情图
  19. (原創) 如何將DE2_70_TV範例加上Sobel Edge Detector? (SOC) (Verilog) (Image Processing) (DE2-70)...
  20. PowerBI基础——第二天 最强大的引擎calculate、筛选表calculatetable、高级筛选器filter

热门文章

  1. 伊斯坦布尔之旅第二天:托普卡帕宫与神圣和平教堂与考古博物馆
  2. linux图形界面压缩软件,p7zip 压缩软件 for Linux
  3. SpringBoot 文件上传 通过Content-Type和文件头判断文件类型
  4. P24 023递归:这帮小兔崽子
  5. VMware vRealize Automation 8 Install
  6. 标星 3.6k+ 让你无所不能的工具
  7. FAQ:Docker和K8s部署常见问题汇总(持续更新)
  8. 关于计算机学习的总结-2016
  9. 项目管理手记(29)ERP项目高层大力支持的冰火两重天
  10. Kotlin基础学习 17