17

在 Riak 中存储二进制数据有哪些问题(如果有的话)?

它会影响集群的可维护性和性能吗?

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

4

5 回答 5

12

添加到@Oscar-Godson 的出色答案中,您可能会遇到值远大于 50MB 的问题。Bitcask 最适合高达几 KB 的值。如果您要存储较大的值,您可能需要考虑替代存储后端,例如innostore

我没有存储二进制值的经验,但我们在生产中有一个中型集群(5 个节点,大约 100M 的值,10 的 TB),我们经常看到与插入和检索值相关的错误大小为 100 KB。在这种情况下,性能是不一致的——有时它有效,而另一些则无效——因此,如果您要进行测试,请进行大规模测试。

在运行 map-reduce 查询时,我们还看到大值的问题——它们只是超时。然而,这可能与二进制值不太相关......(正如@Matt-Ranney 提到的)。

也可以在这里查看@Stephen-C 的回答

于 2011-05-23T21:21:25.713 回答
7

我能想到的唯一问题是存储大于 50MB 的二进制数据,他们建议不要这样做。Riak 的重点在于:

人们可能会选择 Riak 的另一个原因是可以灵活地对数据进行建模。Riak 将以与内容无关的方式存储您告诉它的任何数据——它不强制执行表、列或引用完整性。这意味着您可以将二进制文件与更多对程序员透明的格式(如 JSON 或 XML)一起存储。

资料来源:Riak 中的模式设计 - 简介

于 2011-05-23T21:06:47.953 回答
4

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

于 2013-11-16T02:05:14.170 回答
3

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

需要注意的是,使用 Riak,您可以使用Luwak,它提供了一个用于存储大文件的 api。这非常有用。

于 2011-05-23T21:17:24.727 回答
1

一个问题可能是,即使不是不可能,也很难在二进制数据中使用 JavaScript map/reduce。为此,您可能需要 Erlang。

于 2011-05-23T21:18:42.880 回答