更新Cassandra中的大型非规范化数据

时间:2017-12-18 10:54:47

标签: cassandra denormalization

假设我有这样的数据模型:

CREATE TABLE users (
   id UUID primary key,
   username text,
   ..10 more columns..
)

CREATE TABLE posts(...)

CREATE TABLE comments (
   id UUID primary key,
   post_id,
   user_id UUID,
   username text,
   comment text,
   ..etc..
)

comments表包含用户发布的所有注释,它还包含用户ID和名称,因此我们可以使用一个查询检索我们需要显示的所有数据。

现在,假设数据库包含100.000条评论,用户决定更改其用户名。

我是否真的应该通过100.000更新来更改所有评论中的用户名?

2 个答案:

答案 0 :(得分:1)

是的,您必须更新所有评论。这是经典的规范化与非规范化(一致性与绩效)的困境。

所以你必须决定是否要在评论中存储用户名:大量额外的读取(可以缓存)或者一些繁琐的批量更新(可能 IMapController mapController = map.getController(); for(int i =0 ; i<overlay.getMyPositionList().size();i++) { Marker marker = new Marker(map); marker.setPosition(overlay.getMyPositionList().get(i)); map.getOverlays().add(marker); } mapController.setCenter(overlay.getMyPositionList().get(0)); map.invalidate(); 更改不常见?)。

或者您可以将其保留原样,并说它是数据保留政策:)

答案 1 :(得分:1)

查看KillrVideo参考应用here

在实际运行的应用程序中有许多数据模型示例,其中包括注释系统。