私は HBase について読んだり勉強したりして、スキーマを作成しようとしていました。私は RDBMS 出身で、nosql db を試すのはこれが初めてです。スキーマ設計について簡単な質問があります。
3 つのテーブルがあるとします => アルバム、写真、コメント
アルバム <= ユーザーが作成
写真 <= アルバムにアップロードされたすべての写真が含まれます
コメント <= アルバムまたは写真のコメントを含む
すべてのコメントを含む写真を取得する必要があります。コメントではなく、すべての写真を含むアルバムを取得する必要があります。
ユーザーはメールで識別されます。私が思いついたスキーマ:
tbl_user
email || info: {password : ..., name : ...}
アルバム
<email>:album:<timestamp> || info {title:..., cover: photo-row-key}
写真
<album-row-key>:<timestamp> || info {caption:..., exif: ...}
コメント
<album-row-key or photo-row-key> || comments {
comment:<timestamp>: {user: <email>, text:...}
comment:<timestamp>: {user: <email>, text:...}
comment:<timestamp>: {user: <email>, text:...}
...
}
- このデザインは大丈夫ですか?行うべき/行う必要がある変更とその理由を知りたいだけです。
- photo-row-key の先頭に album-row-key を付けるべきではありませんか (スペースを節約するためかもしれません)。
- コメントのテーブルに関して、コメントの行キーは次のように作成する必要があり
<album-row-key or photo-row-key>:comment:<timestamp>
ますか? 上記のスキーマに従って、ユーザーがコメントを作成するたびに、コメント列を読み取り、新しいコメントで更新し、行を tha で更新する必要があります。いい音しますか?
RDBMSにより適したスキーマの例がある/あるリンクを共有できれば、非常に役立ちます:)