Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 有人知道我如何用Riak存储大的二进制值吗?_Binary_Riak - Fatal编程技术网

Binary 有人知道我如何用Riak存储大的二进制值吗?

Binary 有人知道我如何用Riak存储大的二进制值吗?,binary,riak,Binary,Riak,有人知道如何用Riak存储大型二进制值吗?就像其他值一样。为什么会有所不同?使用Erlang接口()或“原始”HTTP接口()。它应该“起作用” 此外,您通常会在riak用户邮件列表中找到比此处更好的回复。(对z8000没有冒犯之意,他似乎也有答案。)目前,他们不建议存储大于50MB的文件而不进行拆分。见: 如果您的文件小于50MB,请继续使用Riak存储非二进制数据 人们选择Riak的另一个原因是为了数据建模的灵活性。Riak将以与内容无关的方式存储您告诉它的任何数据—它不强制表、列或引用完整

有人知道如何用Riak存储大型二进制值吗?

就像其他值一样。为什么会有所不同?

使用Erlang接口()或“原始”HTTP接口()。它应该“起作用”


此外,您通常会在riak用户邮件列表中找到比此处更好的回复。(对z8000没有冒犯之意,他似乎也有答案。)

目前,他们不建议存储大于50MB的文件而不进行拆分。见:

如果您的文件小于50MB,请继续使用Riak存储非二进制数据

人们选择Riak的另一个原因是为了数据建模的灵活性。Riak将以与内容无关的方式存储您告诉它的任何数据—它不强制表、列或引用完整性。这意味着您可以将二进制文件与更为程序员透明的格式(如JSON或XML)一起存储。使用Riak作为一种“文档数据库”(半结构化,大部分是非规范化数据)和“附件存储”将有不同于键/值样式方案的需求,即需要高效的在线查询、冲突解决、增加的内部语义和健壮的关系表达


@Brian Mansell的答案是正确的——你不想把大的二进制值(超过50 MB)作为单个对象存储在Riak中(集群在一段时间后变得异常缓慢)

您有两个选项:

1) 如果二进制对象足够小,直接存储它。如果超过某个阈值(50MB是一个不错的任意值,但实际上,运行一些性能测试,看看集群的平均对象大小是多少,然后开始爬网)——将文件分成几个块,并分别存储这些块。(事实上,我见过的大多数人都走这条路,使用1MB大小的块)。 当然,这意味着您必须跟踪“清单”——哪些块存储在哪里,以什么顺序存储。然后,要检索文件,首先必须获取跟踪块的对象,然后获取各个文件块并将它们重新组合回原始文件。看看一个项目,看看他们是怎么做的

2) 或者,您可以使用(Riak Cloud Storage)来完成上述所有操作,但代码是为您编写的。这正是RiakCS的工作原理——它将传入的文件分解成块,在普通Riak中单独存储和跟踪它们,并在取回文件时重新组装它们。并为文件存储提供了AmazonS3API,以方便您使用。我强烈推荐这条路线(以免重蹈覆辙——分块和跟踪文件已经够难了)。是的,CS是一种付费产品,但是如果你好奇的话,可以看看免费的