为什么不用key-value型数据库实现关系型数据库?

发布时间:
2023-08-24 12:46
阅读量:
12

以下内容都是正在下片子时候迷迷糊糊的口胡

TiDB/CockroachDB/MyRocks 都把 Table 映射到了 ordered key-value 的结构上,比较有趣的一点是怎么把某个索引变成有序存放的,有个好玩的例子可以看下面:

github.com/facebook/mys

关键的好处是 Key-value 提供了很干净的抽象和不错的性能。以及 RocksDB 这东西强无敌( CockRoachDB:cockroachlabs.com/blog/ ,这里很坦诚的说,我们用 LSM-Tree 就是因为 RocksDB 太牛逼啦),工程师得以站的足够高来解决这些问题。

不过回过头来说,BTree 索引之类的要说也是 key-value 啊,有什么不同呢?

回过头来看,存储引擎如果能知道你上层丢过来的是啥玩意,可以做比较多的优化,比如 logical logging 等对事务的优化。上世纪 70-90 年代不少研究和工程实现都是与之相关的,看看这个:

Database · 理论基础 · 高性能B-tree索引

工程师能为优化存储引擎和事务做这么多我看不懂的事儿,给事务提供了足够多的优化空间。

END