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

jus*_*vin 15 denormalization nosql

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

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

问题解释示例:

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

有人已经结婚并搬家,改变他们的姓氏和地址.应用程序是否需要更新播放器集合和锦标赛集合?或者我的收藏模型错了吗?开发人员如何"跟踪"信息重复的位置?

Chr*_*ain 11

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

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


Arn*_*-Oz 10

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

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