FAL Labs拥有多种东京产品和京都产品:
有人可以解释东京和京都产品之间的区别吗?
我对使用kyotocabinet
键值存储很感兴趣,我想要使用批量接口(返回字节数组)预先形成范围查询.我检查了kyotocabinet
Java API,我找不到任何特定的方法来执行此操作.由于范围查询对于键值存储很常见,我想知道是否有人有过进行范围查询的经验kyotocabinet
.
函数begin_transaction接受一个布尔参数,指示应该进行什么类型的同步; 物理时为真或逻辑时为假.
当它指的是"物理"或硬同步时,它意味着什么?
我有一组1亿多个字符串,每个字符串长达63个字符.我有很多磁盘空间和很少的内存(512 MB).我需要单独查询存在,并且不存储其他元数据.
我事实上的解决方案是BDB btree.有没有更好的选择?我知道leveldb和Kyoto Cabinet,但不熟悉以确定优势.
我正在寻找一个简单的DBM库,如BerkeleyDB或Kyoto Cabinet,但本身就是为.NET工作.我需要管理超过一百万条记录(可能是一千万条),并且可能采用分层方式(最后一点不是强制性的,我们可以使用线性结构).
这样的事情甚至存在吗?
我正在尝试在Visual Studio(VC++)中设置Kyoto Cabinet.我添加了源文件和静态库kyotocabinet.lib
但是,它给了我一个链接错误LINK2005默认情况下,库是通过链接到LIBCMT.LIB' by the
/ MT'选项构建的.我也尝试使用`/ MD'选项重建库.我仍然无法做到.
有人试图在Visual Studio中使用它吗?
我已经阅读了文档,发现很少有关于访问单个kyotocabinet数据库的多个进程(读者和编写者).看来您可以创建多个读取器,但除非您指定ONOLOCK,否则多个编写器将阻止尝试打开数据库.任何人都可以阐明它是如何工作的或是否有可能?我知道KyotoTycoon是一个选择,但我特别关注KyotoCabinet.
因为下面有点长:这是tl; dr; version:快速键和值查找是否存在现有键/值最佳实践,类似于具有持久索引的基于哈希的集合?
我对键值数据库的世界感兴趣,到目前为止还没有弄清楚如何有效地实现以下用例:
假设我们想要序列化一些数据,并通过持久的唯一整数索引在其他地方引用它们.例如:Key = unsigned int,Value = MyData.
数据库应具有快速键查找并确保MyData是唯一的.
现在,当我向数据库插入一个新值时,我可以为它分配一个新的索引键,例如数据库的当前大小,或者为了防止在删除项目后发生冲突,我可以在外部保留一些计数器.
但是,我如何确保不将相同的MyData值插入数据库?到目前为止,它看起来好像这对于键值数据库来说无法有效实现 - 这是正确的吗?即我不希望遍历整个数据库只是为了确保MyData的价值并不在那里已经...
那么实施这个的最佳实践是什么?
对于背景:我在KDevelop上工作,我们使用上面的代码分析缓存.我们实际上有一个上述用例1的自定义实现.如果您对内部感兴趣,请搜索Bucket和ItemRepository,并参阅2以了解ItemRepository的示例用法.
但你可能会同意,这段代码很难理解,因而难以维护.我想将其性能与可能导致更简单代码的替代解决方案进行比较 - 但前提是它不会导致严重的性能损失.考虑到围绕OpenLDAP MDB,Kyoto Cabinet和LevelDB等键值存储性能的炒作,这是我想要开始的地方.
我们在KDevelop中所拥有的 - 据我所知 - 基本上是一种混合磁盘/内存中的哈希映射,它会定期保存到磁盘上(当然,在崩溃的情况下会导致严重的数据损坏等). ).项目基于它们的散列值存储在一个位置,当然,只要散列函数很快,它们也允许相对快速的值查找.增加的扭曲是您还获得某种持久性数据库索引,可用于非常有效地查找项目.
所以 - 长话短说 - 如何用一个关键/价值数据库如LevelDB,Kyoto Cabinet,OpenLDAP MDB来做到这一点 - 你说出来了吗?
我试图在OSX 10.9上从这个源代码编译kyoto cabinet:
http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz
但它失败了:
In file included from kcutil.cc:16:
In file included from ./kcutil.h:19:
./kccommon.h:92:10: fatal error: 'tr1/unordered_map' file not found
#include <tr1/unordered_map>
^
2 warnings and 1 error generated.
make: *** [kcutil.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我的理解是,OSX 10.9中的C++库发生了变化,但我不确定如何导航到解决方案.任何帮助,将不胜感激.
我需要一个键值数据库,如redis或memcached,但不是在内存中而是在磁盘上.在填充数据库之后(我们定期并从头开始),我实际上只需要get
操作,但是从许多不同的过程(因此Kyoto Cabinet和LevelDB对我不起作用).
我需要500万个密钥和~10-30gb
数据,因此其他一些简单的数据库也不能正常工作.
我找不到有关RocksDB是否可以处理多个只读客户端的任何信息; 在我的操作系统上构建并不是直截了当所以我想在做之前先问一下.如果它不能,是否有任何数据库可以工作?最好用Ubuntu包和Python绑定;-).
我们现在只使用许多小文件,但它真的很糟糕,因为我们想要简单的备份,复制等.我也怀疑这可能会导致速度减慢,但这并不重要.
kyotocabinet ×10
leveldb ×3
berkeley-db ×2
key-value ×2
python ×2
.net ×1
dbm ×1
indexing ×1
installation ×1
java ×1
nosql ×1
openldap ×1
rocksdb ×1
tokyo-tyrant ×1