SQLite?低调不是小众...

前几天在一个群里看到一位同学说:"SQLite这么小众的数据库,到底是什么人在用啊?"

首先要说的是 SQLite 可不是小众的数据库,相反,SQLite 是世界上装机量最多的数据库,远超 MySQL,只不过比较低调而已。低调到我想在官网上找一个好看的用来当插图的图片都找不到,只能截一张官网首页来撑一撑,看起来十分朴素。

我最早听说 SQLite 是刚毕业工作的时候,我们部门做微软内容管理产品的二次开发,其中有一个客户端即时沟通工具叫做 Lync,搭配上 LDAP 的组织架构,其功能就和现在的企业微信差不多。

Lync 支持二次扩展,结合我们的产品需要在其中做一些功能拓展,负责这项工作的是一位厉害的 C++ 大佬。有一次我和他聊起来,我说客户端要记住用户自己的配置和数据,是不是要在目录下放一个配置文件啊,那数据量大了会不会很慢。他说,用配置文件也行,但是咱这个不用配置文件,用 SQLite。

也是孤陋寡闻,那是我第一次听说 SQLite,才知道这也是个数据库,只不过多用在客户端而不是服务器上。

SQLite

SQLite是一个轻量级的嵌入式关系型数据库管理系统。它由D. Richard Hipp在2000年开发,它实现了一个小型、快速、独立、高可靠性、功能齐全的SQL数据库引擎。

SQLite 用C语言开发,最开始的设计目标是嵌入式系统,它可以在不需要单独的服务器进程的情况下,直接嵌入到应用程序中。后来正好赶上智能手机等智能设备普及,正好契合 SQLite 的使用场景,于是大量的智能设备都在使用 SQLite 。这么说吧,你用的手机上,一定有 SQLite 存在。

像 MySQL 一样,SQLite 也是开源且免费的,据官方统计,目前正在使用的 SQLite 数据库超过 1 万亿个。

SQLite 也可以通过配置像MySQL 那样装在服务器上,通过网络连接访问,但是,完全没有必要。

SQLite 支持C、C++、Java、Python、Swift等大多数语言直接使用。

为什么说你的手机上肯定有 SQLite 呢?因为 SQLite 会随着应用程序代码一起打包,所以这样说来,你的手机上还不止一个 SQLite ,可能有很多,例如微信有一个、美团有一个、网易云音乐等等 APP ,都可能包含自己的 SQLite。

使用场景有哪些

移动应用

前面也一直在说手机上的SQLite。Android就默认集成了SQLite作为应用数据存储的标准解决方案。

Apple 的 IOS 其实提供了自己的数据存储方案,比如 CoreData,但是很多开发者都觉得官方提供的方案实在太难用,所以,有很多应用开发者还是选择 SQLite 作为本地存储方案使用。

嵌入式系统

SQLite 本来就是为了嵌入式系统设计的,所以它的特点就是轻量和高性能嘛,这也使得他在嵌入式系统中被广泛使用。包括嵌入式Linux设备、物联网(IoT)设备、路由器,以及汽车电子系统等等。

桌面应用

许多桌面应用程序使用SQLite作为其内部数据库,我第一次听说 SQLite 就是那位同事大佬为了拓展桌面客户端。

尤其是一些纯的本地应用,不需要联网的,所有的配置和数据都会存在本地,这种场景正好适合SQLite 这种轻量级数据库。

数据分析和处理

SQLite还可以用于处理和分析小规模的数据集。例如,数据科学家可以使用SQLite来存储和操作中小型数据集,以进行数据清理、转换和分析。

网站加速

最近看了一篇文章,介绍 Notion 技术团队如何使用WASM SQLite在浏览器中加速Notion 的性能。

WebAssembly (WASM) 是一种低级字节码格式,能够在现代浏览器中高效运行。它被设计为一个可移植的目标,可以被多种编程语言编译成它。它有接近原生的性能,同时可以安全地运行在浏览器的沙箱环境中。

所以为了追求更好的性能,有些像 Notion 这样的网站直接将 SQLite 编译到 WebAssembly,相当于在网站中加入了 SQLite。

这样一来,更多的数据存到本地 SQLite ,减少不必要的网络交互,对于网站的速度和性能会有很大提升。

相关推荐
是隼人4 小时前
buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
xian_wwq5 小时前
【学习笔记】深度认知系列-第16讲-提示词工程
人工智能·笔记·学习
洛阳纸贵5 小时前
MATLAB-matlab基础知识
学习·算法·matlab
不是株5 小时前
AI Agent 记忆系统全解:从 Markdown、SQLite、向量检索到 GraphRAG
sqlite·知识图谱·agent·memory·graphrag·harness
Vcaker5 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦6 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
留白_6 小时前
【tableau入门学习】5、筛选器、参考线和集
学习·tableau
丁丁点灯o6 小时前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
天天进步20156 小时前
Pixelle-Video 源码解析 #18:声音克隆功能:参考音频如何影响解说效果?
数据库·音视频
youm20036 小时前
认识Redis
redis·笔记·学习