如何在将Riak数据输入发送到客户端之前对其进行预处理

时间:2015-07-08 22:26:41

标签: riak

我有一个包含许多节点的Riak安装。它存储条目,在价值方面具有相对较大的blob。在某些情况下,客户端只需要此数据的一部分,因此无需通过网络传输它们。

在将数据实际发送到客户端之前,是否有任何优雅的解决方案可以在服务器端预处理这些数据。

我唯一的想法是在每个节点上安装一个小“代理”,它将与客户端在自己的协议中进行交互,并充当代理,这将根据查询减少数据。

但是,如果我可以知道(基于密钥)存储特定条目的节点,则此类解决方案将起作用。有办法吗?

1 个答案:

答案 0 :(得分:1)

如果指定单个存储桶/密钥作为输入,则可以使用MapReduce执行此操作。 map函数将在本地运行数据存储的位置,并在从客户端接收请求的任何节点上将其结果发送到reduce函数。由于您提供的是特定密钥,因此不应该进行任何覆盖折叠,这是导致文档警告的重负荷的原因。

这意味着您的请求实际上将使用r = 1,因此如果有中断,您将获得一些错误的未找到结果。