【发布时间】:2017-10-25 13:57:14
【问题描述】:
我正在考虑使用 RocksDB 或 LevelDB 为我的面部识别软件持久存储我的数据。现在,我正在使用一个 c++ 向量,它不是持久的,这意味着每次我重新启动我的软件时,我都必须将数据重新加载到我的向量中。我的数据有大约 100 万个元素,每个元素都是 512 个浮点数的向量。查询速度是最受关注的问题,理想情况下,当我使用索引进行查询时,我需要 o(1) 的查询速度。根据我的研究,我真的无法为 RocksDB 和 LevelDB 找到这样的保证。
我的问题是值得投入使用 RocksDB 或 LevelDB 还是它们比向量慢?
【问题讨论】:
-
唯一的答案是:基准测试。
-
@VittorioRomeo 我只是在问岩石和水平是否总是较慢,或者是否会有更快的情况?如果它们总是较慢,那么基准测试毫无意义。
-
慢一点 什么?内存直接访问?是的。比管理自己的文件和索引?也许。比一般的SQL数据库?可能不是。对于要“慢”一些的东西,你需要一些可以比较的东西。这就是您进行基准测试的原因。
-
@Someprogrammerdude 我写了向量(c++ stl向量)
-
所以你有一个向量的向量?你如何找到正确的子向量?你有索引到向量的索引吗?那么这就是你将要获得的速度。如果您有内存将所有数据存储在内存中,那么只需对向量和索引进行一些简单的序列化即可。启动时加载,关闭时保存(或更改)。
标签: c++ vector leveldb rocksdb