每日数据库知识-SQLite好用吗?

269 阅读4分钟

每日数据库知识-SQLite好用吗?

SQLite

SQLite是一个独立的、基于文件的、完全开源的RDBMS。它以可移植性、可靠性和强大的性能而闻名,即使在低内存环境中也能很好的发挥作用。很多手机的应用都内嵌着Sqlite,包括你正在使用的微信等。其实Sqlite是非常了不起的。

SQLite被描述为“无服务器”数据库,它是单机的、更像是文件的迷你数据库。大多数关系数据库引擎是作为服务器进程实现的,应用程序通过进程间通信的方式与数据库服务器进行通信。而SQLite允许任何访问数据库的进程直接读写数据库磁盘文件。这大大简化了SQLite的使用,你可以像访问文件一样使用SQLite,几乎不需要任何配置。

我本人非常喜欢Sqlite数据库,我自己建的一个网站 jumper.pub 后台现在使用的就是 Sqlite3,因为它是一个小巧的并发量很低的网站。

SQLite发明于作者在海军服役期间,也是非常的有传奇性。而且,SQLite是世界上使用范围最广的数据库。

查看

.tables 或者 .table 查看所有表

.schema TABLE_NAME 查看表的定义

优势

它的优势总结起来有3点:占用空间小;用户友好;便携式。

占用空间小:顾名思义,SQLite库非常轻量级。它占用的空间不到600KiB。此外,它是完全自包含的,这意味着你不必在系统上安装任何外部依赖项就可以使用SQLite

用户友好SQLite开箱即用,被描述为“零配置”数据库。而且SQLite不作为服务器进程运行,这意味着它永远不需要停止、启动或重新启动,也不需要管理任何配置文件。这些特性有助于简化SQLite与应用程序集成的过程。

便携式:与其他数据库管理系统(通常将数据存储为大量单独的文件)不同,整个SQLite数据库存储在单个文件中。 此文件可以位于目录层次结构中的任何位置,并且可以通过可移动媒体或文件传输协议共享。

劣势

虽然轻巧好用,但是与传统数据库相比,SQLite的劣势也很明显。

有限并发:虽然多个进程可以同时访问和查询SQLite数据库,但在任何给定时间只有一个进程可以对数据库进行更改。

无用户管理:数据库系统通常支持用户,或具有预定义的数据库和表访问权限的托管连接。由于SQLite直接读写普通磁盘文件,因此唯一适用的访问权限是底层操作系统的典型访问权限。

安全:使用服务器的数据库引擎比SQLite这类无服务器数据库有更好的应用程序漏洞保护。此外,由于服务器是单个持久进程,因此客户端-服务器的数据库可以比无服务器数据库更精确地控制数据访问,允许更细粒度的锁定和更好的并发性。

有限的SQL语法支持: 标准的SQL语句不完全被SQLite支持,这个需要明确一下。

适用的场景

SQLite适用于以下的场景: 嵌入式应用程序SQLite对于需要可移植性且不需要未来扩展的应用程序来说是绝佳选择。比如单用户本地应用、移动的应用或游戏。

替代直接用文件保存的数据:如果你的应用程序用文件来保存数据,可以尝试用SQLite来替换,可以获得使用SQL所带来的额外功能和简单性。

测试:对于许多应用程序来说,可将SQLite用于快速运行测试的数据库,这样就不需要实际数据库操作的开销,使其成为测试的理想选择。

不适用的场景

对于以下场景,请谨慎使用SQLite

处理大量数据SQLite虽然在技术上可以支持高达140 TB的数据库,只要磁盘驱动器和文件系统也支持数据库的大小要求。然而,SQLite建议任何接近1 TB的数据库都放在客户端-服务器的数据库上。对于普通做实验来说,Sqlite倒是够了。

高写入量SQLite在任何给定时间只允许发生一次写入操作,这大大限制了其吞吐量。如果您的应用程序需要大量的写操作或多个并发编写器,SQLite可能无法满足您的需求。

需要网络访问:因为SQLite是一个无服务器数据库,它不提供对其数据的直接网络访问。如果SQLite中的数据位于与应用程序不同的机器上,建议使用客户端-服务器的DBMS

参考

1 SQLite vs MySQL vs PostgreSQL对比总结 mp.weixin.qq.com/s/sV2WsTHyV…