0

多数の rss/atom フィードを監視するプロジェクトに取り組んでいます。データ ストレージに hbase を使用したいのですが、スキーマの設計に問題があります。最初の反復では、集計フィード (すべてのフィードからの最新の 100 件の投稿を時系列順に並べたもの) を生成できるようにしたいと考えています。

現在、私は2つのテーブルを使用しています:

Feeds: column families Content and Meta : raw feed stored in Content:raw
Urls: column families Content and Meta : raw post version store in Content:raw and the rest of the data found in RSS stored in Meta

集約されたフィード用のある種のインデックス テーブルが必要です。それをどのように構築すればよいですか?この種のアプリケーションに hbase は適していますか?

質問の更新: 以下にリストされているようなクエリに効率的に応答できるスキーマを (hbase で) 設計することは可能ですか?

SELECT data FROM Urls ORDER BY date DESC LIMIT 100
4

1 に答える 1

2

PeterRietzlerがhbase-userメールリストで回答:

やあ

私たちのプロジェクトでは、同様の要件があるイベントリストを処理しています。行キーを賢く選択して注文します。イベントには次のキーを使用します(時間の昇順で並べ替える必要があります)。

eventListName / yyyyMMddHHmmssSSS-000 [-111]

ここで、eventListNameはイベントリストの名前であり、000はアプリケーションの異なる実行中のインスタンス間で曖昧さを解消するための3桁のインスタンスIDであり、-111は1つのインスタンスで同じミリ秒に発生したイベントを明確にするためのオプションです。

さらに、IDを使用して毎日の人工行を挿入します

eventListName / yyyyMMddHHmmssSSS

これにより、イベントリストを検索せずに、毎日の初めにスキャンを開始できます。

挿入の負荷が非常に高い場合、常に1つのhbaseリージョンサーバーが挿入でビジー状態になり、他のサーバーはアイドル状態になるという事実に注意する必要があります...それが問題になる場合は、次の別のキーを見つける必要があります。あなたの目的。

HBaseインデックステーブルを使用することもできますが、私はそれを使用した経験がなく、APIが最初にインデックステーブルを検索し、次に元のテーブルを検索するため、これによりすべてのリクエストが2倍になるというメールリストのメールを覚えています。(これが正しくない場合は訂正してください...)

よろしく、ピーター

ピーターに感謝します。

于 2009-08-17T08:25:56.493 に答える