为什么不用key-value型数据库实现关系型数据库?
发布时间:
2023-08-24 12:46
阅读量:
12
以下内容都是正在下片子时候迷迷糊糊的口胡
TiDB/CockroachDB/MyRocks 都把 Table 映射到了 ordered key-value 的结构上,比较有趣的一点是怎么把某个索引变成有序存放的,有个好玩的例子可以看下面:
https://github.com/facebook/mysql-5.6/wiki/MyRocks-record-format#memcomparable-format关键的好处是 Key-value 提供了很干净的抽象和不错的性能。以及 RocksDB 这东西强无敌( CockRoachDB:https://www.cockroachlabs.com/blog/cockroachdb-on-rocksd/ ,这里很坦诚的说,我们用 LSM-Tree 就是因为 RocksDB 太牛逼啦),工程师得以站的足够高来解决这些问题。
不过回过头来说,BTree 索引之类的要说也是 key-value 啊,有什么不同呢?
回过头来看,存储引擎如果能知道你上层丢过来的是啥玩意,可以做比较多的优化,比如 logical logging 等对事务的优化。上世纪 70-90 年代不少研究和工程实现都是与之相关的,看看这个:
Database · 理论基础 · 高性能B-tree索引工程师能为优化存储引擎和事务做这么多我看不懂的事儿,给事务提供了足够多的优化空间。
END