小。速度很快。可靠。
选择任意三个选项。

SQLite的独特特征

本页重点介绍了SQLite的一些特性不寻常,这使得SQLite不同于许多其他SQL数据库引擎。

零配置

SQLite在使用之前不需要“安装”。没有“设置”程序。没有需要启动、停止或配置的服务器进程。管理员无需创建新的数据库实例或分配对用户的访问权限。SQLite不使用配置文件。不需要做任何事情来告诉系统SQLite正在运行。系统崩溃或电源故障后,无需执行任何操作即可恢复。没有需要排除的问题。

SQLite很管用。

其他更熟悉的数据库引擎在运行后运行良好。但进行初始安装和配置可以复杂得吓人。

无服务器

(另请参见无服务器文档页面。)

大多数SQL数据库引擎都是作为单独的服务器实现的过程。要访问数据库的程序通信使用某种进程间通信与服务器(通常是TCP/IP)向服务器发送请求并接收返回结果。SQLite不是这样工作的。使用SQLite要访问数据库的进程读取和写入直接从磁盘上的数据库文件。没有中介服务器进程。

无服务器有优点也有缺点。这个主要优点是没有单独的服务器进程安装、设置、配置、初始化、管理和故障排除。这就是SQLite是“零配置”数据库的原因之一发动机。使用SQLite的程序不需要管理支持用于在运行之前设置数据库引擎。任何程序能够访问磁盘的用户可以使用SQLite数据库。

另一方面,使用服务器的数据库引擎可以提供更好地防止客户端应用程序中的错误-零散指针在客户端中无法损坏服务器上的内存。因为服务器是单个持久进程,它可以使用更精确,允许更细粒度的锁定和更好的并发性。

大多数SQL数据库引擎都是基于客户机/服务器的。在那些无服务器,SQLite是作者唯一知道的允许多个应用程序同时访问同一数据库。

单个数据库文件

SQLite数据库是一个可以定位的普通磁盘文件目录层次结构中的任意位置。如果SQLite可以读取然后它可以读取数据库中的任何内容。如果磁盘文件及其目录都是可写的,那么SQLite可以更改任何内容在数据库中。数据库文件可以轻松复制到USB上记忆棒或通过电子邮件共享。

其他SQL数据库引擎倾向于将数据存储为文件夹。通常,这些文件位于标准位置数据库引擎本身可以访问。这使数据更加安全,但也使得访问变得更加困难。一些SQL数据库引擎提供直接写入磁盘并绕过文件系统的选项总共。这提供了额外的性能,但代价是设置和维护相当复杂。

稳定的跨平台数据库文件

SQLite文件格式是跨平台的。写入的数据库文件可以将一台计算机上的不同的体系结构。大端序或小端序,32位或64位无关紧要。所有机器使用相同的文件格式。此外,开发人员承诺保持文件格式稳定且向后兼容,因此较新版本的SQLite可以读写旧的数据库文件。

大多数其他SQL数据库引擎都要求您转储和恢复从一个平台移动到另一个平台时的数据库当升级到软件的较新版本时。

契约

当针对大小进行优化时,整个SQLite库都启用了所有功能大小小于1MiB(在ix86上使用“尺寸”测量GNU编译器套件中的实用程序。)可以禁用不需要的功能在编译时进一步减小库的大小。

大多数其他SQL数据库引擎都比这个大得多。IBM自夸其最近发布的CloudScape数据库引擎“仅”是2MiBjar文件-比SQLite大一个数量级压缩的!Firebird自夸其客户端库只有350KiB。那是与SQLite一样大,甚至不包含数据库引擎。Oracle的Berkeley DB库是450KiB,它省略了SQL支持,只为程序员提供简单的键/值对。

清单类型

大多数SQL数据库引擎使用静态类型。关联了一个数据类型表中的每一列只包含特定数据类型的值允许存储在该列中。SQLite放宽了这一限制通过使用manifest类型。在清单类型中,数据类型是值本身的属性,而不是存储值的列的。因此,SQLite允许用户存储任何数据类型的任何值放入任何列中,而不管声明的类型是什么该列的。(此规则有一些例外:整数PRIMARY KEY列只能存储整数。SQLite试图胁迫如果可以,将值转换为列的声明数据类型。)

据我们所知,SQL语言规范允许使用清单类型的。然而,大多数其他SQL数据库引擎静态类型等等感觉清单类型的使用是SQLite中的一个错误。但是作者们SQLite的用户强烈认为这是一个功能。清单的使用在SQLite中键入是一个经过深思熟虑的设计决策,已在实践中得到证明使SQLite更可靠、更易于使用,尤其是在与动态类型编程语言(如Tcl和蟒蛇。

可变长度记录

大多数其他SQL数据库引擎都分配了固定数量的磁盘空间对于大多数表中的每一行。他们玩特殊的处理技巧BLOB和CLOB的长度可能相差很大。但对大多数人来说表,如果将列声明为VARCHAR(100),则数据库引擎将分配100字节的磁盘空间,无论您实际有多少信息存储在该列中。

相反,SQLite只使用实际的磁盘空间量需要将信息存储在一行中。如果您存储单个VARCHAR(100)列中的字符,则只有单个字节的磁盘空间被占用。(实际上是两个字节-在记录其数据类型和长度的每列的开头。)

SQLite使用可变长度记录有很多优点。显然,这会导致较小的数据库文件。它还使数据库运行速度更快,因为来回移动的信息更少磁盘。而且,使用可变长度的记录可以SQLite使用清单类型而不是静态类型。

可读的源代码

SQLite的源代码设计为可读且可访问普通程序员。所有程序和数据结构以及许多自动变量被仔细注释,并包含以下有用信息他们做了什么。省略了锅炉板注释。

SQL语句编译为虚拟机代码

每个SQL数据库引擎都会将每个SQL语句编译为内部数据结构,然后用于执行声明。但在大多数SQL引擎中,内部数据结构是由相互关联的结构和对象组成的复杂网络。在SQLite中,编译的语句形式是一个类似机器语言的短程序代表。数据库用户可以查看此虚拟机语言通过在解释关键字查询。

在SQLite中使用虚拟机对图书馆的发展。虚拟机提供了清晰、定义明确的SQLite前端(解析SQL的部分)之间的连接语句并生成虚拟机代码)和后端(执行虚拟机代码并计算结果的部分。)虚拟机允许开发人员在从SQLite试图对每条语句进行的操作中很容易阅读它可以编译,这对调试非常有帮助。根据编译方式的不同,SQLite还具有以下功能跟踪虚拟机的执行-打印每个虚拟机指令及其执行时的结果。

公共领域

SQLite的源代码在公共域中。无版权要求是在核心源代码的任何部分上生成的。(文件和测试代码是另一回事-文档和测试逻辑的某些部分由开源许可证管理。)所有贡献者SQLite核心软件已签署宣誓书,明确否认代码的版权利益。这意味着任何人都可以合法地用SQLite源代码做任何他们想做的事情。

还有其他具有自由许可证的SQL数据库引擎允许广泛自由使用的代码。但其他引擎仍受版权法管辖。SQLite在版权方面有所不同法律根本不适用。

其他SQL数据库引擎的源代码文件通常从带有注释,说明您查看和复制该文件的合法权利。SQLite源代码不包含许可证,因为它不受版权。SQLite源代码提供了一个优点,而不是许可证:

愿你行善而非作恶
愿你能原谅自己,原谅他人
愿你自由分享,永不索取多于付出。

SQL语言扩展

SQLite为SQL语言提供了许多增强功能通常在其他数据库引擎中找不到。已经提到EXPLAIN关键字和清单类型以上。SQLite还提供以下语句更换论冲突允许增加了对约束冲突解决的控制。SQLite支持附件DETACH公司允许多个在同一查询中一起使用的独立数据库。SQLite定义了允许用户添加新的SQL函数排序序列.

此页面上次修改时间2024-05-08 11:54:12联合技术公司