SQLite 作为应用程序文件格式

(注意:当前页面简要总结了为什么 SQLite 是一种良好的应用程序文件格式。该主题在单独的技术说明中有更详细的考虑。)

SQLite 已作为磁盘文件格式用于桌面应用程序,如版本控制系统、财务分析工具、媒体编目和编辑套件、CAD 包、记录保存程序等,并取得了巨大成功。传统的文件/打开操作调用 sqlite3_open() 附加到数据库文件。更新会随着应用程序内容的修改而自动发生,因此文件/保存菜单选项变得多余。File/Save_As 菜单选项可以使用备份 API实现。

使用 SQLite 作为应用程序文件格式有很多优点,包括:

  1. 更好的性能
    • 从 SQLite 数据库读取和写入通常比从磁盘读取和写入单个文件更快。查看比文件系统快 35%内部 BLOB 与外部 BLOB相比。
    • 应用程序只需加载它需要的数据,而不是读取整个文件并在内存中保存完整的解析。
    • 小的编辑只会覆盖文件中发生变化的部分,从而减少写入时间和 SSD 驱动器的磨损。
  2. 降低应用成本和复杂性
    • 无需编写和调试应用程序文件 I/O 代码。
    • 可以使用简洁的 SQL 查询而不是冗长且容易出错的程序例程来访问和更新内容。
    • 文件格式可以在未来的版本中扩展,只需添加新的表和/或列,保持向后兼容性。
    • 应用程序可以利用 全文搜索RTREE索引,并使用触发器来实现自动撤消/重做堆栈
    • 使用CREATE INDEX ,性能问题通常可以得到解决,即使是在开发周期的后期,也可以避免代价高昂的重新设计、重写和重新测试工作。
  3. 可移植性
    • 该应用程序文件可移植到所有操作系统、32 位和 64 位以及大端和小端架构。
    • 程序的联合,可能都是用不同的编程语言编写的,可以访问相同的应用程序文件而没有兼容性问题。
    • 多个进程可以附加到同一个应用程序文件,并且可以互不干扰地读写。
    • 可能以其他方式存储为“文件堆”的各种内容被封装到单个磁盘文件中,以便通过 scp/ftp、USB 记忆棒和/或电子邮件附件进行更简单的传输。
  4. 可靠性
    • 内容可以连续自动更新,因此在电源故障或崩溃时几乎不会丢失任何工作。
    • 与自定义编写的文件 I/O 代码相比,SQLite 中出现错误的可能性要小得多。
    • SQL 查询比等效的过程代码小很多倍,并且由于每行代码的错误数量大致恒定,这意味着总体错误更少。
  5. 辅助功能
    • 可以使用多种第三方工具查看 SQLite 数据库内容。
    • 存储在 SQLite 数据库中的内容更有可能在未来几十年恢复,即使原始应用程序的所有痕迹都已丢失。数据比代码寿命更长。
    • SQLite 数据库文件是美国国会图书馆推荐的 一种长期保存数字内容的存储格式。

SQLite 允许数据库文件具有任何所需的文件扩展名,因此应用程序可以根据需要选择自定义文件扩展名供自己使用。application_id pragma可用于在数据库文件中设置一个“应用程序 ID”整数,以便 file(1) 等工具 可以确定文件与您的应用程序相关联,而不仅仅是一个通用的 SQL 数据库。