如何处理NoSQL中重复数据的更改

时间:2012-03-02 16:42:56

标签: nosql denormalization

我们正在为即将开展的项目评估NoSQL。我倾向于以RDBMS的方式思考问题,并且难以概念化缺乏规范化。

据我所知,在NoSQL中,重复数据不算错误。我无法理解的是修复数据更改以防止出现异常。

示例问题解释:

  

您正在组织一系列扑克锦标赛。你有球员,   地点和比赛活动。据我所知,比赛   事件可能包含一个位置和一组玩家。确实如此   不需要拥有所有玩家数据,但如果你想得到这些名字   每个人去参加下一场比赛的家庭住址,那个信息   应该在锦标赛中。

     

有人已经结婚并感动,改变他们的姓氏和   地址。应用程序是否需要更新播放器集合和   锦标赛系列?或者我的收藏模型错了吗?怎么做   开发人员“跟踪”信息重复的位置?

2 个答案:

答案 0 :(得分:11)

我看到最近使用的模型是拥有一个不可变的“主”数据集合(在你的情况下,玩家列表,每个锦标赛中玩家的锦标赛列表“关联”,其中锦标赛记录包含玩家ID列表),以及非规范化列表(在您的情况下,具有完全填充的玩家数据的锦标赛列表),只有通过对“主”数据运行定期处理才能更新。

这样,应用程序只需要更新主数据,定期更新过程最终会重建非规范化结果。

答案 1 :(得分:10)

要做的一件事就是为每种类型的数据设置一个“记录系统”或主记录系统。所有数据都不需要单一来源,但每个数据都应该有一个。

要采取的另一个措施是使数据版本化(保留历史更改),以便非规范化数据可以是不可变的 - 在您的示例中,过去发生的锦标赛的玩家数据适合该时间。如果玩家从那时起移动到新地址,您仍然可以通过转到玩家的“记录系统”来获取当前地址,但锦标赛记录反映了他/她当时的地址等。