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

问题描述

| Riak中存储二进制数据有什么问题(如果有)? 它会影响群集的可维护性和性能吗? 使用Riak而不是分布式文件系统在性能上会有什么区别?     

解决方法

加上@ Oscar-Godson的出色回答,您可能会遇到值大于50MB的问题。 Bitcask最适合最大为几个KB的值。如果要存储较大的值,则可能需要考虑其他存储后端,例如innostore。 我没有存储二进制值的经验,但是我们在生产中有一个中等大小的群集(5个节点,大约100M值,TB的数量为10),并且经常看到错误与插入和检索大小为100 KB的值有关。在这种情况下,性能是不一致的-有时可以正常工作,而有时则不可以-因此,如果您要进行测试,请进行大规模测试。 在运行map-reduce查询时,我们还会看到大值问题-它们只是超时。但是,这可能与二进制值无关(如@ Matt-Ranney所述)。 另请参阅@ Stephen-C的答案     ,我能想到的唯一问题是存储大于50MB的二进制数据,他们建议不要这样做。 Riak的全部要点是:   选择Riak的另一个原因是   灵活地建模数据。   Riak将存储您告诉它的所有数据   以与内容无关的方式-它确实   不强制执行表,列或   参照完整性。这意味着你   可以在旁边存储二进制文件   更多程序员透明格式   例如JSON或XML。 来源:Riak中的模式设计-简介     ,使用Riak,建议的最大每个对象2MB。在此之上,建议使用Riak CS(已对高达5TB的对象进行了测试(作为1MB对象存储在Riak中),或者通过将大型对象自然地分成2MB块并通过键和后缀进行链接来使用。     ,我个人还没有注意到将数据(例如图像和文档(DOC和PDF))存储到Riak中的任何问题。我没有性能指标,但我可能还记得一些。 值得注意的是,使用Riak可以使用Luwak,它提供了一个用于存储大文件的api。这非常有用。     ,一个问题可能是,即使不是不可能,也很难对二进制数据使用JavaScript映射/缩减。您可能需要使用Erlang。