0

人々がメッセージを投稿できる Web サイトがあり、次の形式で保存します。

post_id : {user_display_name, title, body}

例えば:

234567 : {
    user_display_name : "John Doe",
    title : "Title here now",
    body : "Body of the post here"
}

John Doe私の問題は、彼が名前を に変更することに決めたらどうなるかということJohn Loremです。リレーショナル データベースでは、ユーザー情報を指すユーザー ID を使用するだけで、名前を変更した場合にその変更がすべての場所に反映されます。

NoSQL データベースでこれを実現するにはどうすればよいですか?

John Doeキースペース全体を検索して に変更するのは実用的ではないと思うからJohn Loremです。

ありがとうございました

4

2 に答える 2

1

個人的には、リレーショナル モデルの場合と同様に、ID を使用して変更される可能性のあるデータを保存することが理にかなっている場合があります。ID の名前を取得するための追加のルックアップが非常に安価であることを考えると、これは変更を行うために CF 全体を実行するよりも合理的な傾向があります。

于 2012-11-28T14:33:15.723 に答える
1

ユーザーごとの投稿の列ファミリーを維持する場合は、そのユーザーのすべての投稿をプルして、表示名を変更する必要があります。

同様に、インデックスのない RDBMS (別名リレーションシップ) では、表示名を変更するために完全なテーブルにアクセスすることになります。

ただし、Map-Reduce を記述して、ユーザーの投稿を識別し、表示名を変更することができます。将来的には、column_family を維持できます。

ROW -> USERID (or) USERID_YYYYMM (to avoid hot-spots)
COLUMN Name -> Reverse(TimeStamp):PostId

この列ファミリーは、ユーザー ID ごとに最新の Postid をすばやく取得するのにも役立ちます。

于 2012-11-28T12:41:01.577 に答える