微信为何选用 SQLite 存储聊天记录?

图片[1]-微信为何选用 SQLite 存储聊天记录?-山海云端论坛

SQLite,一个轻量级的嵌入式数据库,经常被人低估,有人认为它只是一个玩具数据库,不适合生产环境。然而,实际情况是,SQLite是一个非常可靠的数据库引擎,能够处理TB级别的数据,尽管它缺乏网络层支持。本文将探讨SQLite在过去一年中新增的SQL功能,从版本3.22.0到3.26.0。

SQLite的适用性

SQLite被称为部署和使用最广泛的数据库引擎之一。尽管它只是一个库,而不是传统意义上的服务器,但在许多场景下,它是最合适的选择。SQLite没有版权限制,因此无论何时,只要开发者想要在文件中存储结构化数据,SQLite都是首选方案。

SQL方言的强大功能

SQLite的SQL方言非常强大,比如早在MySQL之前四年就开始支持with语句。最近,它还实现了对窗口函数的支持,这使得SQLite在SQL语言方面更加现代化。

2018年新增的SQL功能

1. 布尔字面量和判断

SQLite从版本3.23.0开始支持布尔字面量true和false,同时引入了is [not] true | false的判断语句。这使得SQLite的布尔支持更接近其他开源数据库,唯一的差距是SQLite不支持is[not] unknown,但可以用is [not] null来代替。

2. 窗口函数

SQLite 3.25.0引入了窗口函数,这是SQL中最重要的现代特性之一。虽然在range语句中存在一些限制,但窗口函数的支持使得SQLite在业界领先。

3. 过滤语句

尽管filter语句只是语法糖,但它使得SQL语句更易读。不幸的是,目前SQLite在使用group by子句的聚合函数中还不支持filter子句,希望未来能够加入这一功能。

4. Insert … on conflict (“Upsert”)

从版本3.24.0开始,SQLite引入了“upsert”概念,可以处理主键和唯一约束的冲突。虽然这不是标准SQL的一部分,但SQLite遵循了与PostgreSQL相同的语法。

5. 重命名列

SQLite引入了重命名基准数据库表中列的功能,遵循了其他产品的常用语法。

结语

除了在SQL语法上的变化,SQLite还在API方面有一些变化。总的来说,SQLite在过去一年中新增的SQL功能使得它更加强大和灵活,成为处理结构化数据的首选工具之一。

在2018年,SQLite在SQL功能方面取得了长足的进步,我们期待在未来看到它在更多方面的发展和改进。

脚注:

  1. SQLite通常遵循PostgreSQL语法,这被称为PostgreSQL会怎么做(WWPD)。
  2. 基准数据库表是指用Create table语句创建的数据库表。派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变。

https://www.sqlite.org/news.html

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容