SQLite 的文艺复兴

查看 363|回复 19
作者:bmpidev2019   
写了篇文章介绍史上最流行的数据库 SQLite 从进程内到分布式的的文艺复兴故事。
原文地址: https://www.bmpi.dev/dev/renaissance-sqlite/


sqlite, 文艺复兴, 分布式, 数据库

lichao   
挑骨头:SQLite 也没有 N+1 查询性能的问题,原因就是没有其他数据库网络通信的开销
这句话不太对,没有网络开销,但是有 IO 开销啊,N + 1 查询一定是非常影响性能的
bmpidev2019
OP
  
@lichao n+1 最大的开销还是网络,进程内的函数调用开销很小,可以看这个介绍: https://www.sqlite.org/np1queryprob.html
lichao   
@bmpidev2019 不太同意这个说法
kele999   
9 千多万行,手写的?可能吗,肯定哪里搞错了。邪乎到家必有妖
bmpidev2019
OP
  
@lichao 还有一些索引和表的 b-tree 有些设计都是在内存里存着,然后 fsync 到文件系统,所以有内存的帮助,I/O 开销并没有那么高,一个证据就是 sqlite 的官网在一个页面就有两百多条 sql 查询而渲染的,但速度能在 0.01 秒内完成,显然是有优化效果的。
bmpidev2019
OP
  
@kele999 这种怀疑毫无意义,代码是开源的,可以自己去查
hamsterbase   
可以看这篇文章 https://www.sqlite.org/testing.html
As of version 3.39.0 (2022-06-25), the SQLite library consists of approximately 151.3 KSLOC of C code. (KSLOC means thousands of "Source Lines Of Code" or, in other words, lines of code excluding blank lines and comments.) By comparison, the project has 608 times as much test code and test scripts - 92038.3 KSLOC.
sqlite 的部分测试是不开源、专有的。
hamsterbase   
我基于 CRDT 和 sqlite 设计了一个分布式的稍后读工具,所有节点可以达到分布式一致性。
1. 以 CRDT 文件作为 single source of truth , 保证向前向后兼容。
2. 以 sqlite 数据库作为缓存。 可以按照需求任意修改 sqlite 的数据库格式 。
3. 不同客户端直接通过点对点同步 CRDT 文件, 修改后把 CRDT 的数据同步到 sqlite 。
hahastudio   
说起来,SQLite 正在准备用 HC-tree
https://sqlite.org/hctree/doc/hctree/doc/hctree/index.html
您需要登录后才可以回帖 登录 | 立即注册

返回顶部