1

私は Riak の初心者で、riak のドキュメントからこの章を読んでいます。バケットとキーに構造情報を追加することで、キー/値操作の制限の一部を克服できることがわかります。

この記事には、そのようなキーがどのように構造化されるかについての例が記載されていますが:

センサー データ キーは、sensor_ または temp_sensor1_ で始まり、その後にタイムスタンプが続きます (例: sensor1_2013-11-05T08:15:30-05:00)。

キープレフィックス (例: sensor1_) でデータをクエリする方法については言及されていません。stackoverflow を見回すと、この質問が見つかりました。その中で、MapReduce とキー フィルタリングが可能な解決策として言及されています。しかし、重要なフィルターに関するドキュメントには、それらが間もなく非推奨になる機能であると記載されています。可能な方法としてRiak検索も調べましたが、キープレフィックスでデータをクエリする方法を見つけることができませんでした.

私の質問は: キープレフィックスでデータを検索する最良の方法は何ですか? 例をいただければ幸いです。

4

1 に答える 1

2

キープレフィックスを検索する最善の方法は、必要がない場合は検索しないことです。つまり、可能であればその検索パターンを中心に設計します。これを行う主な方法は、アプリケーションが簡単に計算できる決定論的キーを使用することです。とはいえ、キープレフィックスの検索を必要とするアプリケーションの構築を避けられない場合は、いくつかの方法があります (いずれも欠点があります)。

  1. キー フィルター - http://docs.basho.com/riak/latest/dev/references/keyfilters/ - 既に指摘したように、これらは非推奨としてマークされており、現時点では推奨されていません。
  2. MapReduce - http://docs.basho.com/riak/latest/dev/advanced/mapreduce/ - バッチでクエリを実行できるが、リアルタイムのクエリにはあまり適していない場合に適したオプションです。クエリの事前計算が役立つ場合は、クエリ結果をキャッシュできます。
  3. Riak Search 2.0 (Solr) - http://docs.basho.com/riak/latest/dev/using/search/ - これはおそらくアプリケーションの観点から実装する最も簡単な方法であり、クエリを使用してキーをクエリできます「curl "$RIAK_HOST/search/sensor?wt=json&q=_yz_rk:sensor1_*"」の行。検索を使用すると、ストレート キー ベースのクエリよりもパフォーマンスが低下しますが、クエリをキャッシュできます。
  4. データ モデリング - キーで直接クエリを実行すると、前述のように常に最高のパフォーマンスが得られます。1 つのオプションは、Riak のデータ型 (CRDT) を利用して、セットを使用するバケットを作成することです。最初のバケット内のセンサーに関連付けられたキーのリストを含むセンサーごとにセットを作成できます。次に、セット内のキーを反復処理し、マルチ取得を実行して、関連付けられているすべてのレコードを返すことができます。

これがあなたにいくつかのアイデアを与えることを願っています。

于 2014-12-17T14:41:02.070 に答える