在大多数情况下,SQLite唯一需要的数据库

2021-04-15 22:26:24

SQLite是C库中包含的关系数据库管理系统。它是符合酸性的,实现大部分SQL标准。

它是一个流行的选择,可在应用软件中存储嵌入式数据库软件,例如Web浏览器和移动电话,它是世界上部署最广泛的数据库引擎。然而,与流行的信念SQLite ISN' T只有在嵌入式设备中。每当你建立一个人没有缩放到几台机器的网站时,那么你将在大多数情况下使用只使用SQLite,而不仅仅是这样,而且你会发现你的工作刚刚变得更加容易。

与许多其他数据库管理系统相比,SQLite不是客户端 - 服务器数据库引擎,但您实际上很少需要。如果您的应用程序软件在与数据库相同的物理计算机上运行,​​这是最小的中等大小的Web应用程序,那么您只需需要SQLite即可。

可以同时访问多个进程或线程,并且可以并行运行读取访问。由于数据库由单个文件组成,因此只有在当前没有写入数据库时​​才能满足写访问。但是,使用可配置的BUSY_TIMEOUT设置并启用了注册日志记录(WAL),SQLite启用并发读取和写入。这意味着作家队列。每个应用程序都会快速启动数据库并继续移动,并且没有锁定超过几毫秒的锁定。

即使你开始小,后来需要高档,只要你的Web应用程序可以在与数据库上的同一台机器上运行,它可以在99%的时间内,你可以刚升级硬件到允许的机器并保持照常营业。

在其中,您可以通过网络访问相同的数据库服务器的多种物理计算机。在此设置中,您在多个客户端之间具有共享数据库。

如果您的机器非常写忙,就像每秒接受数千个同时写请求一样,那么您也需要一个客户端 - 服务器设置,因为客户端 - 服务器数据库专门构建以处理。

如果您'重新使用非常大的数据集,就像在Tberabytes大小中一样。客户端 - 服务器方法更适合大型数据集,因为数据库将文件拆分为较小的文件,而SQLite仅适用于单个文件。

我将SQLite运行为Web应用程序数据库,每秒都有数千个并发写入,来自不同的HTTP请求,没有任何延迟或问题。这是因为即使在一个非常繁忙的网站上,硬件也非常快速,完全能够处理该硬件。

当您遵循趋势和炒作时,大多数问题都会出现并通过所有的&#34将应用程序放在一起;闪亮的东西"然后,由于所有抽象,您都有所有额外的复杂性,并且一旦表现成为一个重要因素,所有这些事情都会导致问题。

如果您的设置sqlite正确,即符合您的特定需求,那么在大约99%的时间只需要它。

嗯,首先,所有数据库管理任务都变得更加容易。您不需要任何数据库帐户管理,数据库只是一个文件。

此外,您不需要监视的单独数据库进程运行。如果您的应用程序已启动,那么您的数据库也会起来!

您可以将数据库拆分为多个单独的数据库,您甚至可以在服务器上为每个用户提供他/ HERS拥有自己的数据库。根据应用程序类型,您可以拥有一个包含所有用户帐户信息的单个数据库,例如用户名和密码,并且您将此用于登录会话,但在确认登录后,您将使用其他个人数据库进行工作客户正在做。如果客户需要他的数据库副本,只需复制文件并运送它。

备份SQLite也非常容易,只是复制文件!访问数据库的访问时,您甚至可以执行此操作。

如果您需要,可以通过将其转换为ASCII文本,然后将其归档为GZIP等内容来归档整个SQLITE数据库。

这将包含在稍后重建数据库所需的所有内容。要重建数据库,只需输入:

看看SQLite的命令行shell以查看您可以使用sqlite执行的一些非常酷的东西。

当您来自基于流行的客户端 - 服务器之一的数据库时,有两件事要特别注意,这是自动增量命令不同,并且SQLite也使用不保证的动态和弱键入的SQL语法域完整性。

SQLite中的自动扫描命令意味着在插入件上,如果未明确给出一个整数主键列,则将使用未使用的整数自动填充,通常是超过使用中最大的ID。无论是否使用自动增量关键字,这都是如此。但是,如果在整数主键之后出现自动增量关键字,则将分配算法更改为防止在数据库的生命周期内重用ID。这意味着在SQLite中自动增量的目的是防止从先前删除的行中重用ID。

动态和弱型SQL语法意味着您可以将字符串插入定义为整数的列。 SQLite将尝试在适当的格式之间转换数据,字符串" 123"在这种情况下进入整数,但它不保证此类转换,并将存储数据,如果不可能这样的转换。这不是一个错误,但它被认为是一个特征(参见"表现打字和#34;)。

下面的设置是我在Web应用程序上部署SQLite时使用的一些设置。 许多其他相关设置存在,米金列可能会有所不同。 busy_timeout与每个连接到数据库相关联,因此您需要为每个连接设置超时。 如果是。 您'重新使用PHP中的本机SQLite驱动程序,需要为每个连接设置以下内容: 在括号中的数字是超时以毫秒为单位,在这种情况下,在这种情况下30秒。 可能是相关的其他选项,具体取决于您的特定需求是Pragma Temp_store和Pragma同步 SQLite是我希望在我所做的那些项目中所知道的那些项目之一。 我听说过它,但多年来我从未想过过着严肃的看,因为我是一个小型数据库的虚假印象,只适用于个人地址簿和小型嵌入式设备。