【问题标题】:Using LSM tree like LevelDB as a storage Engine for RDBMS使用像 LevelDB 这样的 LSM 树作为 RDBMS 的存储引擎
【发布时间】:2016-08-03 01:04:42
【问题描述】:

LSM 树已在许多 no-sql 引擎中成功使用,它的数据按键排序,不像散列表,因此可以在 kv 存储之外使用许多潜在用途。例如,时间序列数据库 (TSDB) 可能非常适合使用级别 db 作为其引擎。传统的 RDBMS 和许多表系统怎么样?类似 LSM-tree 的数据引擎也适合吗?

【问题讨论】:

    标签: rdbms leveldb opentsdb rocksdb lsm-tree


    【解决方案1】:

    可能是这样。如果您打算以利用 leveldb 优势(即快速顺序读取)的方式设计索引,那么它可能会很好。

    事实上,我已经在 leveldb (linqdb) 之上构建了小型关系数据库,其中索引只是存储为键值的列的排序值。我的发现是查询这样的结构不如 sqlite 的索引列快(大约慢 40%),但写入的性能要好得多。

    当然查询速度有很多因素,LSM只是一个最擅长写的底层数据结构。

    其他信息here

    【讨论】:

    • 其实我们是在尝试构建一个表系统,但是读取或者批量写入可能是典型的用例。目前我们使用的是内存哈希索引,但不支持范围查询和排序查询。我正在研究 LSM,因为它不会占用太多内存,而且它的密钥是有序存储的。
    • @bugs king LSM 最适合磁盘(以合并排序方式写入的大块数据),所以不确定它是否最适合内存索引
    • 我发现实际上有一个基于 lsm-tree 的 mysql 正在开发中,叫做 myrocks,但是关于它们的性能和延迟洞察力的资源太有限了。
    • 在小型数据库上将读取性能与 sqlite 进行比较是不公平的。 sqlite 总是比小型数据集更快。
    • @amirouche 我已经比较了大约 20GB 的设置,这并不小。但结果可能是由于许多因素造成的(LSM vs B-tree 就是其中之一)
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多