2012-02-14 3 views
2

RDBMSのバックグラウンドから来ているので、私は以下の目的のためにHbaseスキーマを設計する助け/提案はほとんど必要ありません。Hbaseスキーマ設計の提案

hadoopを使用したレポート生成アプリケーションです。今、特定のユーザーの電子メールIDに基づいて、以前のすべてのレポート生成履歴を追跡する必要があります。したがって、永続化する必要があるデータは、電子メールID、レポート名、開始日、終了日、ステータスです。 emailId(行キー) - (列)appName:reportName、appName:startDate、appName:endDate、appName:status

問題は次のとおりです。同じユーザーが異なる日付範囲で同じレポートを実行できます。したがって、appName:reportNameおよびappName:statusカラムは上書きされます。私はNoSQLの世界を初めて知ったので、この問題にどのように取り組むべきかはわかりません。 誰かがこの要件のスキーマを設計する理想的な方法を提案できますか?

ご協力いただければ幸いです。あなたの予想クエリのパターンに基づいて

おかげ

+0

HBaseの場合、データを照会するために使用するパターンは、格納される特定のデータより重要であることがよくあります。あなたはユーザーIDで質問しますか?レポートID別?どちらも?また、ユーザーがレポートを実行した瞬間のタイムスタンプを保存する必要があるようです。 –

+0

ユーザーIDで照会する予定です。それは正しいでしょうか?それともどちらが最善の方法でしょうか?私はどんな提案にも開放的です。はい、タイムスタンプも保存する必要があります。ありがとう。 – Raj

答えて

1

が、ここで私がお勧めしたいです:

RowKey         | Column Family (appName)     | 
[email protected] HH:MM:SSS | reportName | status | startDate | endDate | 

このデザインはあなたにいくつかの利点を提供します。まず、特定の日付範囲で特定のユーザーのすべての行をすばやく(スキャンを使用して)照会することができます。第2に、ユーザーのIDを行キーのタイムスタンプに先行させることで、ホットスポットの書き込みを回避します。

ユーザがレポートの生成をトリガするたびに、このスキーマに1行を書き込むことができます。また、カラムの上書きを心配する必要はありません(ユーザが1/10秒)。

関連する問題