laichangbo 2018-11-01
SQLite,是一款轻型的数据库,它的设计目标是嵌入式的,而且现在很多嵌入式产品中使用它,它占资源非常低,在嵌入设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它,无需配置。
不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows中运行。
SQLite的数据库权限只依赖于文件系统,没有用户帐户的概念。
SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:易于管理;易于使用;易于嵌入其他大型程序;易于维护和配置。
许多人喜欢SQLite就是因为它的小巧和快速。但是这些特性只是它的部分优点,使用者还会发现SQLite是非常稳定的。出色的稳定性源于它的简单,越简单就越不容易出错。除了上述的简单、小巧和稳定性外,最重要的在于SQLite力争做到简单化。
以下几种场景经常用到sqlite:
1、嵌入式设备: 例如:手机、机顶盒、电视等等。这些嵌入式设备不可能自启动一个网络服务来存储信息,存在文件里面又不方便查询,sqlite是很好的选择。
2、 应用程序文件格式:SQLite作为桌面应用程序的本地磁盘文件格式取得了巨大成功。即一些配置信息或者数据可以直接存储到sqlite文件中,方便查询,也无需增加系统服务。
3、小型网站甚至中型网站:如果一个网站的点击率少于100000次/天的话,SQLite是可以正常运行的。100000次/天是一个保守的估计,不是一个准确的上限。事实证明,即使是10倍的上述流量的情况下SQLite依然可以正常运行。
4、数据分析工具:可以将csv的文件导入到sqlite中,然后使用SQL进行统计查询。
5、临时数据库:有些客户端由于网络原因,无法即时将数据发送到服务端,这时候缓存存储在本地的数据库,等网络恢复后再进行传输。
不适合的场景
1、通过网络服务共享数据库数据的服务:sqlite是一个本地数据库,如果是集群或者多台主机服务需要共享数据,这时候sqlite就不适用了。
2、高流量网站:网站的访问量大到你开始考虑采取分布式的数据库部署,那么你应当毫不犹豫的考虑用一个企业级的客户端/服务器数据库来替代SQLite。
3、超大的数据集:虽然sqlite可以直接到2T,但是对于超大的数据集来说,这完全是不够用的,而且如果文件大了,备份、转移都不方便。
4、高并发访问:SQLite对于整个数据库文件进行读取/写入锁定。高并发会引起锁,导致服务失败。
sqlite:本机存储,低并发,低数据量,零配置,零管理。