Ripple で Riak を使用するプロジェクトに取り組んでいますが、問題に遭遇しました。リンクの構造をリンク ウォークすると、何らかの理由で重複が発生します。curl を使用してリンク ウォークを実行すると、見た限りでは重複が表示されません。
私のカールベースのリンクウォークの違い
curl -v http://127.0.0.1:8098/riak/users/2306403e5177b4716da9df93b67300824aa2fd0e/_,projects,0/_,tasks,1
そして私のルビーリップル/リアククライアントベースのリンクウォーク
result = Riak::MapReduce.new(self.robject.bucket.client).
add(self.robject.bucket,self.key).
link(Riak::WalkSpec.new({:key => 'projects'})).
link(Riak::WalkSpec.new({:key => 'tasks', :bucket=>'tasks'})).
map("function(v){ if(!JSON.parse(v.values[0].data).completed) {return [v];} else { return [];} }", {:keep => true}).run
最後に地図でわかる限りです。
ただし、map/reduce の結果には複数の重複が含まれます。なぜか頭が回らない。キーに基づいて重複を削除することにしましたが、最後に重複を削除するのは無駄に思えるので、riak の結果に重複が含まれないようにしたいと思います。
私は次のことを試しました:
- リップル オブジェクトのリンク セットに重複がないことを確認する
- マップを削減せずにデータをロードすると、リンク ウォークに重複したキーが含まれます。
どんな助けでも大歓迎です。