我正在搜索一个可以处理大小为几千兆字节的值的键值存储。我查看了Riak,Redis,CouchDb,MongoDB。
我想在此DB中存储用户的工作空间(等于文件系统中的目录,递归地包含子目录和文件)。当然我可以使用文件系统,但是我没有像Redis支持的RAM,故障转移解决方案,备份和复制/群集等缓存功能。
这意味着保存的大多数值都是二进制数据,最终会有一些千兆字节,因为工作空间中的一个文件被映射到一个键值值的数据。
有没有人对这些产品有过一些经验?
答案 0 :(得分:2)
首先,从GB的数据大小获取MD5或CRC32在计算上将是非常昂贵的。可能更好地避免这种情况。如何将数据存储在文件中,并索引文件名?
但是,如果您坚持,我的建议仍然是将散列而不是整个数据值与查找数组/表存储到最终数据位置。这种方法的安全性(非独特可能性)将直接随大样本的数量而变化。您创建的哈希值越长 - 32位对比64位对比1024位等 - 它也越安全。编程语言或数据库引擎中的大多数字典系统都将具有二进制数据存储机制。如果不这样做,您可以在char列中存储与散列数相对应的Hex值字符串。
答案 1 :(得分:1)
我们现在使用MongoDB,因为它支持大型二进制值,非常受欢迎且拥有庞大的用户群。也许我们要转到另一家商店,但目前它看起来非常好!