2016-08-03 44 views
1

在许多非sql引擎中发现LSM树已成功使用,它的数据按键排序,不像哈希表,因此可以在kv存储之外实现许多潜在用途。例如,时间序列数据库(TSDB)可能很适合使用level db作为其引擎。传统的RDBMS和许多表系统如何?像LSM-tree这样的数据引擎是否也适合?使用像LevelDB这样的LSM树作为RDBMS的存储引擎

回答

1

可能是。如果你打算设计索引以利用leveldb的优势(即快速顺序阅读),那么它可能运作良好。

事实上,我已经在leveldb(linqdb)之上构建了一个小关系数据库,其中索引只是存储为键值的列的排序值。我的发现是,查询这样的结构并不像sqlite的索引列那样快(大约慢40%),但写出的表现优于大幅度。

当然,查询速度有很多因素,LSM只是一个底层的数据结构,最能体现在写作上。

其他信息here

+0

事实上,我们正在试图建立一个表系统,但读取或批量写入可能是典型的用例。目前我们正在使用内存散列索引,但不支持范围查询和排序查询。我正在研究LSM,因为它不会花费太多的内存,并且它的密钥是按顺序存储的。 –

+0

@bugs king LSM最适合用于磁盘(在合并排序中写入的大块数据),所以不知道它在内存索引 – ren

+0

中的最佳状态是否存在实际上是在开发中的基于lsm-tree的mysql被称为myrocks,但是关于它们的性能和延迟的洞察力的资源太有限。 –