任何人都不会知道我怎么可以储存大型的二进制数值在Riak?

StackOverflow https://stackoverflow.com/questions/2212770

  •  19-09-2019
  •  | 
  •  

任何人都不会知道我怎么可以储存大型的二进制数值在Riak?

有帮助吗?

解决方案

现在,他们不推荐储存的文件大于50MB在大小而分裂它们。参见: 常问问题-Riak Wiki

如果你的文件是小于50MB,于继续为你会有储存的非二进制数据在Riak.

另一个原因之一可能选择Riak是为灵活性的建模的数据。Riak会存储的任何数据告诉它在一个内容无关的方式—这不强制执行表,列,或参照完整性。这意味着 你可以储存的二进制文件的权利与多个程序透明的格式,如JSON或XML.使用它作为一种"文件数据库"(半结构化,主要是非标准化的数据)和"附件储存",将具有不同的需求比key/value式方案--即,需要对有效在线查询,解决冲突、增加内部的语义,并强大的表达的关系。模式设计的在Riak介绍

其他提示

@Brian Mansell 的答案是正确的 - 你真的不想在 Riak 中将大型二进制值(超过 50 MB)存储为单个对象(一段时间后,集群变得慢得无法使用)。

您有 2 个选择:

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

2)或者,您也可以使用 里亚克CS (Riak Cloud Storage),可以完成上述所有操作,但代码是为您编写的。这正是 RiakCS 的工作原理——它将传入的文件分成块,在普通 Riak 中单独存储和跟踪它们,并在需要取回文件时重新组装它们。并提供 Amazon S3 API 用于文件存储,方便您。我强烈推荐这条路线(以免重新发明轮子——分块和跟踪文件已经足够困难了)。是的,CS 是付费产品,但请查看免费产品 开发者试用, ,如果你好奇的话。

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

用朗接口( http://hg.basho.com/riak/src/461421125af9/doc/basic-client.txt )或"原始"HTTP接口( http://hg.basho.com/riak/src/tip/doc/raw-http-howto.txt ).它应该"仅仅是工作"。

还有,你就会一般地找到一个更好的响应上riak用户的邮件列表比你将在这里。 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com (没有冒犯z8000,似乎还有答案。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top