Skip to content

Latest commit

 

History

History
61 lines (42 loc) · 2.5 KB

File metadata and controls

61 lines (42 loc) · 2.5 KB

SQLite

概述

技术优点及特性

  • 单一文件:数据库中所有的信息都包含在一个文件内,这个文件复制到其他地方也可以使用。
  • 轻量级:SQLite 是进程内数据库引擎,不存在客户端及服务器。
  • 绿色软件:SQLite 核心引擎不依赖第三方软件。
  • 跨平台/可移植性:除了支持主流操作系统,还支持很多冷门操作系统。对于嵌入式设备系统也支持,如 Android。
  • 支持关系型模型
  • 支持内存数据库 (In-memory database)
  • 支持较大的数据文件(TB 级别)

技术缺点及不足

  • 并发访问的锁机制:采用文件锁的方式,整个数据库有可能会被写操作独占。
  • SQL 标准支持不全:和其他数据库的最主要区别是不支持外键约束。
  • 在网络文件系统 (NFS) 中使用有隐患:SQLite 文件放在 NFS 上时,一旦出现并发读写时,可能会出现数据损坏。 (某些 NFS 文件系统对文件锁的实现有 bug)。

应用场景

作为数据库

  • 需要数据库的小型桌面软件
  • 需要数据库的移动端软件

作为数据容器

即是把 SQLite 作为装数据的容器,充分发挥 SQLite 单一数据文件的优点。 另外,还可以避免自己定义一套数据文件格式。

  • 数据备份/恢复
  • 数据导入/导出
  • 在线升级:把需要要升级的内容放置到 SQLite 数据库文件中,升级时只需下载单一的升级文件。

作为内存数据库

SQLite 的 API 设计比较合理,操作内存数据库和操作文件数据库几乎没区别,从“文件型”切换到“内存型”,代码无需大改。

SQLite 还支持 online backup,支持在内存数据库和文件数据库之间进行数据同步。

降低机械磁盘 I/O 开销

在初始化时把软件固有数据(比如词典、游戏数据等)载入内存的 SQLite 数据库中,避免频繁的磁盘 I/O。

作为临时表

用来存放一些临时数据,当程序进程退出时,内存数据库就自然消失了,不会留下垃圾。