在Riak中存储二进制数据有什么问题?
是否会影响群集的可维护性和性能?
使用Riak而不是分布式文件系统之间的性能差异是什么?
答案 0 :(得分:12)
添加@ Oscar-Godson的优秀答案,您可能会遇到大于50MB的值的问题。 Bitcask最适合高达几KB的值。如果您要存储较大的值,则可能需要考虑其他存储后端,例如innostore。
我没有存储二进制值的经验,但是我们在生产中有一个中型集群(5个节点,大约100M值,10个TB),我们看到与插入有关的频繁错误并检索大小为100的KB的值。在这种情况下,性能是不一致的 - 有时它起作用,有些则不起作用 - 所以如果你要测试,那么大规模测试。
在运行map-reduce查询时,我们也看到了大值的问题 - 它们只是超时。然而,这可能与二进制值不太相关......(正如@Matt-Ranney所提到的那样)。
另见@ Stephen-C的回答here
答案 1 :(得分:6)
我能想到的唯一问题是存储大于50MB的二进制数据,他们建议不要这样做。 Riak的重点就是:
人们可能选择Riak的另一个原因是 灵活地建模数据。 Riak将存储您告诉它的任何数据 以内容无关的方式 - 它确实如此 不强制执行表,列或 参照完整性。这意味着你 可以存储二进制文件 更多程序员透明的格式 像JSON或XML。
答案 2 :(得分:4)
使用Riak时,建议的最大值为每个对象2MB。在此之上,建议使用Riak CS,它已经使用高达5TB的对象进行了测试(在Riak中存储为1MB对象),或者自然地将大对象分解为2MB块并通过键和后缀进行链接。
答案 3 :(得分:3)
我个人没有注意到将数据(如图像和文档(DOC和PDF))存储到Riak中的任何问题。我没有性能数字,但是如果我记得的话可能会收集一些。
值得注意的是,使用Riak,您可以使用Luwak来提供存储大文件的api。这非常有用。
答案 4 :(得分:1)
一个问题可能是在二进制数据中使用JavaScript map / reduce是很困难的,如果不是不可能的话。你可能需要Erlang。