3

私は、オブジェクトとオブジェクト間の関係の大規模なデータベースを保存することを含む個人的なプロジェクトを開始しています。Hadoop と HBase を選択したのは、マルチノードである必要があり、データの多くがまばらであるためです。

RDBMS の世界から来た私は、HBase の列指向の構造を読むのに多くの時間を費やしました。現在のドキュメントを考えると、オブジェクトとオブジェクト間の関係を格納する方法を理解するのに苦労しています。

オブジェクト自体は、他のオブジェクトとの関係を無制限に持つことができ、任意の属性を無制限に持つことができます。リレーションシップは、属性を持つこともできます。私の目標は、「既婚」関係によってリンクされた 2 つの「人物」オブジェクトを作成することです。既婚関係には「日付」という属性があります。(将来的には) MapReduce を記述して、すべてをすばやく検索できるようにしたいと考えています。 x と y の間で結婚した人。

4

1 に答える 1

1

従うべき2つのステップがあります(私によると)。

  1. 関係の保存
  2. データを検索しています。

関係の保存

  • オプション A: リレーションをデータ自体と一緒に保存します。その場合、 Person テーブルは独自の結婚関係を保持します。このため、人のすべての結婚には、その人の空間でのみ一意の一意の ID が必要になります。たとえば、人物 A、B、C です。A は 2000 年 1 月 1 日から 2002 年 1 月 1 日まで B と結婚しており、A は 2003 年 1 月 1 日から今日まで C と結婚しています。A の視点から見ると、セルのエントリは次のようになります - 結婚:1:to - B、結婚:1:開始 - 2000 年 1 月 1 日、結婚:1:終了 - 2002 年 1 月 1 日、結婚:2: 結婚 - C、結婚:2:開始 - 2003 年 1 月 1 日。これは、更新があまり頻繁でない場合に適した設計です。
  • オプション B: リレーションを独自のスペース (テーブル) に格納します。関係が急速に変化する場合に適しています。

データの検索

検索結果が MapReduce の終了を待つことができる場合は問題ありませんが、より迅速な結果が必要な場合は、Elastic Search、Apache Solr、Apache Lucene など、あらゆる種類の検索に別のツールを実際に使用します。範囲クエリは Solr などの検索ツールで非常に簡単に実行でき、結果は MapReduce よりも高速になります。検索ツールを選択するもう 1 つの理由は、必要に応じて並べ替え順序を取得することです。

于 2011-01-04T06:34:28.740 に答える