问题标签 [leveldb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
28587 浏览

nosql - Leveldb 与 Redis 或 Riak 或 Tokyo Tyrant 相比如何?

Leveldb似乎是来自 Google 的一个新的有趣的持久键值存储。Leveldb 与 Redis 或 Riak 或 Tokyo Tyrant 有何不同?在哪些特定用例中,一种比另一种更好?

0 投票
4 回答
18681 浏览

java - LevelDB 支持 java 吗?

我想知道 LevelDB 是否支持 java ?我在哪里可以获得 LevelDB。http://code.google.com/p/leveldb/下没有文件

0 投票
2 回答
700 浏览

c++ - LevelDB 在删除 LevelDB 实例时断言

当我尝试删除 leveldb 实例时,我得到了一些非常烦人的断言,但我不确定它为什么会发生!

断言发生在version_set.cc文件中:

此外,它在同一文件的另一个位置断言:

这是有关我系统中使用情况的更多背景详细信息,我有一个:

  • ExtStorage具有LevelDB::DB实例的类(扩展存储)。
  • class EextStorageDotNet,它是ExtStorage.
  • class AltStorage,它包含一个指向 ExtStorage 类的指针(通过构造函数传递):
  • class AltStorageDotNet,它是AltStorage.

备用存储类如下所示:

该类ExtStorage如下所示:

该类AltStorageDotNet如下所示:

DotNet 包装器如下所示:

每当我ExtStorageDotNet在我的 C# 应用程序中使用包装器时,一切正常,并且没有断言。但是,当我使用AltStorageDotNet包装器并访问ExtStorageDotNet包装器时,我会在关闭数据库时获得断言。这是测试套件的所有部分,我在其中为每个测试用例初始化一个实例并在每个测试用例之后关闭它;在新的测试用例开始之前,相关的数据库文件会被删除。我看不出它应该发生的任何原因,并且断言对追踪问题没有帮助。

0 投票
2 回答
4049 浏览

c++ - LevelDB 与 std::map

在我们的应用程序中,我们使用std::map存储(键、值)数据并使用序列化将数据存储在磁盘上。通过这种方法,我们发现磁盘 I/O 是性能瓶颈,使用 key 查找值并不是很快。

我遇到了 LevelDB 并考虑使用它。但我有一些问题。

  1. LevelDB 的文档说它是为 (string, string) 键值对制作的。这是否意味着我不能用于自定义键值对?
  2. 似乎std::map和 LevelDB 之间的区别在于 LevelDB 是持久的并且std::map在内存中工作。那么这是否意味着磁盘 I/O 瓶颈对于 levelDB 来说会更成问题。

更具体地说,有人可以解释一下 LevelDB 是否是更好的选择std::map吗?

PS:我尝试使用hash_maps 但它似乎比std::map

0 投票
1 回答
2076 浏览

c++ - 如何按值对 LevelDB 进行排序

我正在使用leveldb来存储记录(键值),其中键是 64 位散列,值是双精度。打个比方:认为 64 位散列是客户的唯一 ID,双倍是帐户余额(即他们的帐户中有多少钱)。我想按账户余额对数据库进行排序,并首先列出账户余额最高的客户。但是,数据库无法装入内存,因此我必须使用其他方法对其进行排序,以便按帐户余额进行排序。

我正在考虑使用STXXL,但它要求我将数据库的副本复制到一个平面文件中,然后我可以使用 STXXL 进行外部排序(这会生成一堆较小的文件,对它们进行排序然后合并它们回到另一个平面文件)。有更好的数据排序方法还是我应该使用 STXXL 排序?

0 投票
3 回答
1052 浏览

c++ - 双精度浮点比较

我在这里有点困惑 - 当双打存储为不透明(二进制)字段时,双打的比较仍然可以正常工作吗?我面临的问题是双精度包括符号的前导位(即正或负),当它们存储为二进制数据时,我不确定它是否会被正确比较:

在此处输入图像描述

我想确保比较能够正常工作,因为我在 LevelDB 中使用双精度作为键元组(例如)的一部分,并且我想保留正数和负数的数据局部性。LevelDB 仅使用不透明字段作为键,但它允许用户指定他/她自己的比较器。但是,我只想确保我不指定比较器,除非我绝对需要:

0 投票
3 回答
1940 浏览

c++ - leveldb 中的整数值

我想使用 leveldb 在 c++ 和 python 中有效地存储整数和整数数组。

对于 C++ 中的整数,我可以将 int 转换为 char 数组。在 c++ 中存储 int 数组以及在 python 中存储 int 和 int 数组有什么建议吗?

0 投票
4 回答
5889 浏览

database - 整数键/值可以存储在 LevelDB 中吗?

我搜索了支持整数键和整数值的键值存储。LevelDB 似乎是一个不错的选择,但我找不到任何关于是否支持整数值/键的信息

0 投票
2 回答
2123 浏览

key-value - LevelDB 快照能否在数据库关闭后继续存在?

我想知道 LevelDB 库的“快照”工具是否可以创建一个快照引用,即使在打开的数据库对象关闭后也可以保存该引用(因此可以在后续打开时重用)。

我怀疑不是,这导致了后续行动:是否有一种好的/推荐的方法来对数据库进行一致的备份作为快照即时,理想情况下即使其他活动仍在继续?(也就是说,没有通过 API 迭代整个快照键范围?)

(本质上,我正在寻找类似于通过某个检查点将 BerkeleyDB-JE 的仅附加 JDB 日志文件放在一边的东西。)

0 投票
1 回答
2239 浏览

c++ - 在 leveldb 的包装类中链接静态方法

我尝试为 leveldb 编写一个包装类。基本上产生我的问题的头文件部分是(CLevelDBStore.h:)

文件中对应的代码CLevelDBStore.cpp为:

我现在尝试编译我的测试文件(test.cpp),基本上是

请注意,我什至还没有使用包装类。只是为了产生编译错误。

汇编

产量

我查看了定义 leveldb::DB::Open 的 leveldb 代码,结果发现它是一个静态方法。

这会在链接时以某种方式产生问题吗?