世界上最流行的数据库,只想活50年!

SQLite为何能活到2050年?

世界上最流行的数据库是什么?

Oracle? MySQL? PostgreSQL?

都不是,答案是SQLite。

你可能没听说过它,但是它就在你身边的:

每一台智能手机中(Android 和iOS)

每一台Mac电脑中

每一台Windows 10 电脑中

每一个主要的浏览器中(Chrome, Firefox,Safari)

大部分的机顶盒当中

每个PHP和Python安装目录中

很多流行的桌面应用(微信、QQ、 DropBox、 Skype、iMessage、WhatsApp、 Adobe Acrobat Reader....)

......

不信的话可以在电脑中搜索一下 “*.db”,看看能发现多少个。

SQLite的发明人是Richard Hipp。

最近,Richard做了一个重要的决定:支持SQLite到2050年!

也就是说,从2000年问世算起,SQLite将“只有”50岁的寿命。

到2050年,技术会发生什么变化?还会有人使用SQLite吗?

我觉得答案是肯定的。

关系数据库不像别的软件,它保存的是企业的关键数据,是非常稳定的,全球的信息系统在底层都依赖它们,一般情况下是不敢轻易动的。

像Oracle,1979年就出现了,现在已经46岁了,还是世界上最大的数据库。

PostgreSQL 29岁了, MySQL 30了,SQL Server 36了...... 它们都会继续活下去。

即使出现了全新的、大幅领先关系数据库的数据模型,很多遗留系统也会继续使用关系数据库。

在嵌入式关系数据库领域,SQLite几乎是一统江湖,没有对手,它的应用范围如此广泛,活到2050年不成问题。

为了完成这个宏伟的目标,Richard和团队做出了一些重要的决策:

01

向后兼容

SQLite团队承诺保持它的C API 与磁盘格式的向后兼容性,这意味着现有应用在未来几十年升级 SQLite 时不需重写或迁移,极大降低长期使用成本与数据迁移风险(对长期存储尤为重要)。

这就意味着,你今天存入的SQLite数据库的内容,你的孙子辈依然可以轻松访问。

SQLite的数据文件就是那个.db,它的格式不管在32位机器上,还是在64机器上,不管在大端还是小端平台上都完全相同。

你可以把数据文件轻松从一个系统复制到另外一个系统(比如从Windows到Linux),无需做任何转换。

02

详尽的文档

SQLite的策略非常独特,它虽然开放源代码,任何人都可以下载,但是却不接受外界的代码贡献。

这二十多年,只有Richard为首的三四个人维护。

这个小团队编写了大量的文档,包括SQLite的架构,数据库格式,查询计划,字节码引擎、编译期选项等等,非常详尽,让人叹为观止。

它的文档就像一本“SQLite 教科书”,几乎涵盖了从初学者到系统开发者所有层次的需求。

文档里不仅告诉你“能怎么用”,还告诉你“为什么这样设计”,甚至记录某些历史包袱和兼容性考虑。

比如SQLite 特有的“Railroad Diagram”(铁道图)来展示 SQL 语法,非常直观,比光靠文字描述更容易理解。

可以说,SQLite的文档在开源软件中是数一数二的。

03

优秀的注释

SQLite的注释尤其惊人,注释竟然超过了35%的内容。

我们经常会看到一些模版式的代码注释,说了相当于没说,但是SQLite不同,它的注释非常实用,能解释变量和对象的真正含义。

比如 btree.c、pager.c 这些核心文件,都会在开头详细描述 B-Tree、Pager 层的设计原理,让读代码的人不用完全依赖外部文档。

Richard Hipp 很注重可移植性与稳定性,很多注释会解释为什么这样设计、有哪些边界情况需要处理。

注释里经常会提到“这是为了应对某个 bug/某个平台的限制”。

注释和代码风格统一、简洁。没有花哨的行话,基本是“写给未来的自己/其他人看的”,不像很多项目那样只写函数名的重复解释。

目标就是方便新程序员理解,使其在未来几十年内易于维护。

04

灾难备份

永远不用担心SQLite源码被篡改和丢失,因为Richard把源码每个历史版本都做了加密保护,并且自动复制到不同数据中心的服务器中。

此外,全球还有数千个额外的Clone版本在各个私人服务器上。

更有意思的是,Richard说SQLite的这三四个人小团队也分布在世界各地,即使某个大陆沉没了,SQLite依然可以存活。

05

保守/实用主义

计算机领域发展太快了,新技术层出不穷,每个人都会受到新潮流的影响。

但是SQLite开发者尽量避免被最新时髦做法所吸引,他们倾向于编写经得住时间考验的代码,这样的代码应当是“永恒的”,让那些“未出生的程序员”在将来也能轻松阅读、理解和维护。

说实话,我看到“未出生的程序员”是又震撼又疑惑,震撼的是今年Richard已经64岁,如果干到2050年,都89了,他这么做,确实是在考虑未来代码的传承。

疑惑的是如果将来技术出现重大变化,还让让未来的程序员来看古老的代码,是不是并不太好?

幸运的是,SQLite用的是C语言这样“永不过时的编程语言”,数据库理论又非常稳定,所以他做出这样的选择应该也没啥问题。

06

“变态”的测试

SQLite 的测试非常变态,它不仅测试了源码中的每个分支,每个判断,甚至考虑了机器指令层面。

它会在不同的平台(例如 x86_64、ARM64、32-bit 平台),不同操作系统(Linux/Windows/macOS/嵌入式 RTOS)等,不同编译器(GCC、Clang、MSVC、各种交叉编译器)反复执行,对不同优化级别、不同代码生成选项、多次构建的重复检查,找出偶发性/非确定性错误(比如未初始化内存导致的随机行为、竞态、内存重用引发的间歇性崩溃)。

它真正织起来一张庞大的安全网,只要你改动的代码引入了Bug,立刻就会被这张网给捕捉到。

它的深度和重复性可以说是“接近航空级别”,极端严格和全面。

这种长期的严格的承诺,不但让SQLite坐稳了嵌入式关系数据库一哥的宝座,也赢得了那些需要长久保存数据机构的信任。

比如世界上最大的图书馆,美国国会图书馆就把SQLite确定为保持数字化内容的推荐存储格式,和SQLite并列的是XML、JSON 、CSV这样标准的格式。

SQLite开放源码,但不接受外界贡献,就这么几个人,精雕细琢,不断打磨,不但搞出了极其精良的代码,极其详尽的文档,更是让SQLite成了世界上最流行的数据库。

在AIGC大行其道的今天,SQLite依然坚持这种“工匠式”的软件开发,实在是罕见。

正因为有这样执着的开发者,不追逐潮流,不为炫技而妥协,它的稳定性、可靠性和可维护性才得以跨越几十年,成为每一台设备、每一个应用不可或缺的基石。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值