質問
CouchDBやCassandraのようなKey-Valueストアに頭を包もうとしています。なぜ有用なのかは理解していますが、MySqlのようなRDBMSを置き換える方法に関しては、わかりません。
これが私が保存する必要があるものだとしましょう:
{123456: {'model' : 'Ford'
'color': 'blue'
'MPG': 23}}
次に、青い車をすべて見つける必要があります。
Key-Valueストアは、値を使用してキーをどのように照会しますか? map-reduceが使用される可能性のある箇所を読みましたが、いくつかのプロジェクトのソースを見ると、例が見つかりません。
正しい質問をしているかどうかを教えてください。
解決
本質的に、キー値ストアを使用している場合、リレーショナルデータベースが内部に持っているのと同じコンポーネントからデータベースを構築しています。これを行う理由は、スケーリングとパフォーマンスをより柔軟に制御できるようにするため、または単純化するためです。
この場合、テーブル行とインデックスに相当するものを2つの別個のものとして保存する必要があります。したがって、色でインデックスを作成する場合は、保存する必要があります
{'blue': {123456}}
インデックステーブルに相当します。
もちろん、一部のキーバリューストアはインデックスと検索のメカニズムを提供するため、すべてに適合する一般的なルールはありません。
他のヒント
本質的にインデックスである別個のキー/値ストアを維持する必要があります。 「青」となるでしょう。キーとして、次に「メイン」からのすべてのIDのリスト青い車の店。
はい、それは通常のrdbmsのインデックス機能を複製しています。
これは、FriendFeedチームがこの問題にどのようにアプローチし、その解決策に着手したか、そしてその理論的根拠についての良い記事です(RDBMSをキー/値ストアとして使用していたため、少し奇妙ですが、議論のポイントは音響理論):
http://bret.appspot.com/entry/how-friendfeed-uses- mysql