9

CouchDBやCassandraなどのKey-Valueストアに頭を悩ませようとしています。なぜそれらが有用なのかは理解していますが、MySqlのようなRDBMSをどのように置き換えるかについては、わかりません。

これが私が保存する必要があるものだとしましょう:

{123456: {'model' : 'Ford'
          'color': 'blue'
          'MPG': 23}}

次に、青い車をすべて見つける必要があります。

Key-Valueストアは値を使用してキーをどのようにクエリしますか?そのmap-reduceが使用される可能性のある場所をいくつか読みましたが、いくつかのプロジェクトのソースを見ると、例が見つかりません。

私が正しい質問をしているのかどうか教えてください。

4

2 に答える 2

9

基本的に、キー値ストアを使用している場合は、リレーショナル データベースが内部的に持つのと同じコンポーネントからデータベースを構築しています。これを行う理由は、スケーリングとパフォーマンスの制御と柔軟性を高めるため、または単純にするためです。

この場合、テーブルの行とインデックスに相当するものを 2 つの別個のものとして格納する必要があります。したがって、色にインデックスを付けたい場合は、保存する必要があります

{'blue': {123456}}

インデックス テーブルに相当します。

もちろん、キーと値のストアの中には、インデックス作成と検索のメカニズムを提供するものもあるため、すべてに適合する一般的なルールはありません。

于 2009-10-23T13:41:01.957 に答える
2

基本的にインデックスである別個のキー/値ストアを維持する必要があります。キーとして「青」があり、次に「メイン」の自動車ストアからの青であるすべてのIDのリストがあります。

はい、それは通常のrdbmsのインデックス機能を複製しています。

これは、FriendFeedチームがこの問題にどのように取り組み、この解決策に落ち着いたか、およびその理論的根拠についての良い記事です(RDBMSをキー/値ストアとして使用したので少し奇妙ですが、論点は健全な理論です) : http:
//bret.appspot.com/entry/how-friendfeed-uses-mysql

于 2009-10-23T13:14:56.287 に答える