2012-05-29 43 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以避免不一致。