Php Cassandra—推荐在帖子上存储用户显示名称的方法(以及显示名称更改时会发生什么情况)

Php Cassandra—推荐在帖子上存储用户显示名称的方法(以及显示名称更改时会发生什么情况),php,nosql,cassandra,Php,Nosql,Cassandra,我有一个网站,人们可以在其中发布消息,我将其存储在以下表格中: post_id : {user_display_name, title, body} 例如: 234567 : { user_display_name : "John Doe", title : "Title here now", body : "Body of the post here" } 我现在的问题是,如果johndoe决定将自己的名字改为johnlorem,会发生什么?在关系数据库中,我只需要

我有一个网站,人们可以在其中发布消息,我将其存储在以下表格中:

post_id : {user_display_name, title, body}
例如:

234567 : {
    user_display_name : "John Doe",
    title : "Title here now",
    body : "Body of the post here"
}
我现在的问题是,如果
johndoe
决定将自己的名字改为
johnlorem
,会发生什么?在关系数据库中,我只需要一个指向用户信息的用户id,这样,如果他更改了自己的名字,更改将反映到所有地方

如何在NoSQL数据库中实现这一点

因为我认为在整个键空间中查找
John Doe
并将其更改为
John Lorem
是不切实际的


谢谢

如果按用户维护帖子的列族,则应为该用户提取所有帖子并更改其显示名称

类似地,在没有索引的RDBMS(也称为关系)中,您将访问完整的表以更改显示名称

不过,您可以编写Map Reduce来为用户标识帖子,并更改其显示名称,将来您可以使用维护列族

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

此列系列还将帮助您通过用户ID快速获取最新的Postid。

我个人认为,有时使用ID存储可能会更改的数据还是有意义的,就像在关系模型中一样。考虑到额外的查找来获取ID的名称非常便宜,这比运行整个CF来进行更改更合理。

谢谢您的回答,但这不是太占用资源了吗?因为firstname-lastname组合可能在很多表中,因为这是一个非关系数据库。如果您提供更多详细信息,如列族和预期查询,则有人可以在这里更好地帮助您。