2012-05-29 17 views
1

考虑到了Riak我能做的范围查询,如数字辅助指标:找到适合数字二级指标最大值了Riak

“查找我的所有值*索引‘SN’1至10”。

有没有办法找到最大值为数字索引?即

“我找指数的最大值‘SN’。

*它实际上找到的所有主键(不是值本身),但在这里并不重要。

回答

1

无,你不能要求Riak给你2i的最大值,你必须执行map/reduce作业并解析每个包含reduce作业的2i值,以便找到最大值

如果这是一个你的应用程序的重要部分还有其他方法可以让你获得aro和问题。一旦找到最大值,您可以将二级索引添加到表示最大值的值。如果随着时间的推移你能最大值变化:

  • 地图/在桶,为maxval_int第2i是1减少。
  • 如果只有一个结果,请将其返回。
  • 如果有多个结果,请减小以找到最大值。
  • 从每个不再最大的对象中删除maxval_int索引。
  • 当添加新值时,请检查当前最大值,然后相应地更新索引。

读修复样的功能是有应对在群集节点划分情况。

HTH。

+0

在Riak的生产环境中使用mapreduce是明智的做法。它不会大大降低性能吗? – joaonrb

0

或者,如果你的MAXVAL单调增加,你可以,如果你设置的水桶,让兄弟姐妹,你可以用简单的突变和冲突解决解决潜在的兄弟姐妹将其存储= 25 下像max_2i_index特殊键即可。您也可以考虑适当地设置R,W,PR,PW,N以避免不一致。