2

現在、統計の記録と広告配信に Mongodb を使用しています。私は生のインプレッションをログ コレクションに記録し、プロセスは find と modify を実行してログを取得し、upsert を使用して事前計算されたコレクションに集約します (rainbird が Twitter で動作する方法と同様です)。 http://techcrunch.com/2011/02/04/twitter-rainbird/

親、子、子の子などを集計することで、統計のクエリを高速かつ簡単に実行できます。

私は(mongoで){Item_id、Hour}で構成されるキーを使用し、それに(たくさん)アップサートします

Riak が同じ問題を解決するための強力な方法を持っているかどうか、またそれをどのように実装するかを考えていました。

4

2 に答える 2

1

upsert短い答え: Riak は -のような操作をサポートしていないと思います。

長い答え: Riak は格納された値を不透明なデータとして扱う Key-Value ストアです。しかし将来、Riak は HTTP PATCH のサポートを追加することを検討する可能性があります。これにより、アップサートに似た操作をサポートできるようになるかもしれません。操作の別のカテゴリ (compare-and-set) も興味深いですが、これらをサポートすることは間違いなくはるかに複雑です。

于 2011-05-22T10:34:00.710 に答える
0

これが Riak でどのように機能するかは、Riak で使用しているストレージ バックエンドによって異なります。

現在のデフォルトのストレージ バックエンドであるBitcaskは、内部ストレージ メカニズムにログ構造のハッシュ ツリーを使用します。Riak に新しいレコードを書き込むと、データのまったく新しいコピーがディスクに保存されます。最終的に、bitcask の圧縮が行われ、データの古いコピーが bitcask ファイルから削除されます。

Riak へのAnyputは事実上アップサートです。データが存在しない場合、新しいレコードが挿入されます。それ以外の場合、古い値を期限切れにし、最新の値を現在の値にすることによって、既存の値が更新されます。

于 2011-07-29T23:39:47.610 に答える