JavaおよびCassandraデータベースを使用してディスカッションフォーラムに関連するWebアプリケーションを作成しています。非常に非正規化されたNoSQLデータベースの固有キー(主キー)の設計
ユーザーの詳細が格納されている行には「キー」を、ユーザーによってポストされたコンテンツは&にそれぞれ設定する必要があります。
1つのオプションは、Java言語によって提供されるランダムに生成されたUUIDを取得することですが、これらの長さは16バイトです。 NoSQLデータベースには大量の非正規化が含まれているため、小さなサイズでキーを生成できる場合は、ディスクスペース、RAM、その他のリソースを無駄にするかどうかについて懸念しています。
私は2種類の鍵を生成する必要があります.1つはユーザ用の鍵です。&その他のコンテンツは投稿者用です。
ユーザーが投稿したコンテンツについては、timestamp+userId
となるとよいでしょう。ここで、timestamp
はコンテンツが投稿されたサーバーの時刻であり、userId
はユーザーの行のキーを参照します。
任意の提案、感謝のコメント...
おかげ マルコス
ありがとうOliver !!はい、分散データベースCassandraを持つ分散アプリケーションです。このデータベースは最終的に一貫しているため、同期が非常に高速ではない場合があり、そのIDのデータがオーバーライドされる可能性があるため、問題が発生する可能性があります。しかし、カッサンドラの一貫性レベルを調整することも可能です。それが実現可能な解決策につながる場合は、その点を検討します。これ以外に何か別の選択肢がありますか? –
投稿のIDについては、このuserId:PostCountOfUser –
のように、 'userId'と 'そのユーザーの投稿件数'の組み合わせを使用して生成する必要があります。データ表現によっては、ユーザーのすべての投稿をより迅速に検索することもできます。 (ユーザーは一度だけログオンし、一度に1つのセッションに投稿すると仮定できます) – Oliver