私はしばらく CouchDB を使用してきましたが、HBase/Hadoop で少し学術的なプロジェクトを行うことを検討しています。それらに関する資料をいくつか読みましたが、1つの質問に対する適切な答えが見つかりませんでした:
Hadoop/HBase と CouchDB の両方で、MapReduce をクエリの主な方法として使用します。ただし、大きな違いがあります。CouchDB は、ビューを使用して増分的に行い、データベースに追加されるすべての新しいデータにインデックスを付けますが、Hadoop (私が見たすべての例から) は通常、データセット全体に対して完全なクエリを実行するために使用されます。 . 私が欠けているのは、Hadoop MapReduce を使用して CouchDB のビューなどのインデックスを構築し、主に維持する機能です。MapReduce を使用して初期インデックスを作成する方法の例をいくつか見ましたが、増分更新については何も知りませんでした。
ここでの主な課題は、特定のタイムスタンプ (最後のインデックス作成ジョブの時間) 以降に変更された行に対してのみインデックス作成ジョブを実行することだと思います。これにより、これらのジョブの実行時間が短くなり、頻繁に実行できるようになり、インデックスが比較的最新の状態に保たれます。
この使用パターンは非常に一般的であると予想していましたが、オンラインで何も見られないことに驚きました。私はすでにIndexedHbaseとHbaseIndexedを見てきました。どちらも非キー行に基づいて HBase でセカンダリ インデックスを提供します。これは私が必要とするものではありません。1 つ以上の行の内容に基づいて、インデックスを任意に定義するプログラム機能が必要です。