在Riak中存储二进制数据存在哪些问题(如果有的话)?
这是否影响了集群的可维护性和性能表现?
与使用分布式文件系统相比,使用Riak进行此操作的性能差异将是多少?
在Riak中存储二进制数据存在哪些问题(如果有的话)?
这是否影响了集群的可维护性和性能表现?
与使用分布式文件系统相比,使用Riak进行此操作的性能差异将是多少?
除了 @Oscar-Godson 的出色回答之外,如果值超过50MBs,您可能会遇到问题。 Bitcask 最适合少量 KBs 的值。如果要存储大型值,您可能需要考虑替代的存储后端,例如 innostore。
我没有存储二进制值的经验,但我们有一个中等规模的生产集群(5个节点,约100M个值,10多TB),我们经常看到插入和检索大小为数百KB的值相关的错误。在这种情况下,性能不稳定-有时它运行正常,有时它不运行正常-因此,如果您要测试,请在大规模环境下测试。
当运行 map-reduce 查询时,我们也会遇到大值问题-它们只是超时。但这可能与二进制值无关...(如@Matt-Ranney提到的)。
还请参见@Stephen-C的答案 here
Riak建议每个对象的最大大小为2MB。如果超过这个大小,建议使用Riak CS,它已经测试过可以存储长达5TB的对象(以1MB对象的形式存储在Riak中),或者将大型对象自然地分成2MB块,并通过键和后缀进行链接。
一个问题可能是,如果不是不可能的话,使用JavaScript map/reduce跨越二进制数据会很困难。你可能需要Erlang来解决这个问题。