在Riak中查找数字二级索引的最大值

时间:2012-05-29 05:56:36

标签: indexing max riak

鉴于Riak中的数字二级索引,我可以进行范围查询,例如:

  

“找到所有值*,索引”sn“介于1和10之间。

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

  

“找到索引”sn“的最大值。

*它实际上找到了所有主键(不是值本身),但这里没关系。

2 个答案:

答案 0 :(得分:1)

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

如果这是您的应用程序的重要部分,还有其他方法可以解决问题。找到最大值后,可以为该值添加二级索引,表示它是最大值。如果最大值随时间变化,您可以:

  • maxval_int的2i为1的广告位上进行映射/缩小。
  • 如果只有一个结果,请将其退回。
  • 如果有多个结果,请减少以找到最大值
  • 从每个不再是最大值的对象中删除maxval_int索引。
  • 添加新值时,请检查当前最大值,相应地更新索引。

小型读取修复类函数用于处理群集中节点被分区的情况。

HTH。

答案 1 :(得分:0)

或者,如果您的maxval单调增加,您可以将其存储在特殊键下,例如max_2i_index = 25 然后,如果您将存储桶设置为允许兄弟姐妹,则可以通过提供简单的mutator和冲突解决程序来解决潜在的兄弟姐妹。您也可以考虑适当设置R,W,PR,PW,N以避免不一致。