在Riak中存储二进制数据的缺点?

时间:2011-05-23 20:57:06

标签: database nosql scalability riak

在Riak中存储二进制数据有什么问题?

是否会影响群集的可维护性和性能?

使用Riak而不是分布式文件系统之间的性能差异是什么?

5 个答案:

答案 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。

来源:Schema Design in Riak - Introduction

答案 2 :(得分:4)

使用Riak时,建议的最大值为每个对象2MB。在此之上,建议使用Riak CS,它已经使用高达5TB的对象进行了测试(在Riak中存储为1MB对象),或者自然地将大对象分解为2MB块并通过键和后缀进行链接。

答案 3 :(得分:3)

我个人没有注意到将数据(如图像和文档(DOC和PDF))存储到Riak中的任何问题。我没有性能数字,但是如果我记得的话可能会收集一些。

值得注意的是,使用Riak,您可以使用Luwak来提供存储大文件的api。这非常有用。

答案 4 :(得分:1)

一个问题可能是在二进制数据中使用JavaScript map / reduce是很困难的,如果不是不可能的话。你可能需要Erlang。