0

我有一个网站,人们可以在其中发布消息,并以这种形式存储它们:

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

该列族还将帮助您通过 userid 快速获取最新的 Postid。

于 2012-11-28T12:41:01.577 回答