小巧、快速、可靠。
三选二。
SQLite 是无服务器的

1. SQLite 是无服务器的

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

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

另一方面,使用服务器的数据库引擎可以更好地防止客户端应用程序中的错误 - 客户端中的野指针无法破坏服务器上的内存。并且由于服务器是一个单一的持久进程,因此它能够更精确地控制数据库访问,从而允许更细粒度的锁定和更好的并发性。

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

2. 经典无服务器与新式无服务器

(此部分于 2018-04-02 添加)

最近,人们开始使用“无服务器”一词来表示与本文档中预期含义略有不同的意思。以下是“无服务器”的两种可能的定义

  1. 经典无服务器:数据库引擎在与应用程序相同的进程、线程和地址空间中运行。没有消息传递或网络活动。

  2. 新式无服务器:数据库引擎在与应用程序不同的命名空间中运行,可能在单独的机器上,但数据库由托管服务提供商作为交钥匙服务提供,不需要应用程序所有者进行管理或维护,并且易于使用,因此开发人员可以认为数据库是无服务器的,即使它实际上确实在幕后使用了服务器。

SQLite 是经典无服务器数据库引擎的一个示例。使用 SQLite 时,没有其他进程、线程、机器或其他机制(除了主机计算机操作系统和文件系统)来帮助提供数据库服务或实现。确实没有服务器。

Microsoft Azure Cosmos DBAmazon S3 是新式无服务器数据库的示例。这些数据库由在云中单独运行的服务器进程实现。但是,服务器由 ISP 维护和管理,而不是由应用程序开发人员维护。应用程序开发人员只需使用该服务。开发人员无需配置、配置或管理数据库服务器实例,因为所有这些工作都由服务提供商自动处理。数据库服务器确实存在,只是对开发人员隐藏了。

了解“无服务器”这两个不同的定义非常重要。当一个数据库声称自己是“无服务器”时,请务必区分它们指的是“经典无服务器”还是“新式无服务器”。

此页面上次修改于 2024-02-13 17:39:19 UTC