保存完整文档或仅保存文档数据库中的修改
Saving Full Document or Just the modifications in document database
假设您有一个路由器的默认设置,并且您想要对某个路由器的某些设置进行自定义。
哪种方法更好?
将默认设置保存在数据库中的一个文件中,将修改保存在另一个文件中,还是将所有配置和修改后的设置保存在一个文件中?
假设这里有许多路由器具有不同的配置或默认设置的修改。
我不确定在这种情况下 "router" 是什么,但这里有一些做出此类数据建模决策的一般准则:
因为没有跨文档连接功能,与关系数据库相比,您更倾向于使用单文档方法。
您需要考虑可能会发生什么变化、以什么方式发生变化以及多久发生一次变化?因此,例如,如果默认值可能会发生变化,那么默认+差异方法可能不会提供任何优势。您必须遍历每个差异文档并确保它为您更改的任何内容指定了旧的默认值,除非您可以更改现有的用户设置。
使用单文档策略更改设置的逻辑应该更简单,以便支持单文档方法。我认为您甚至可以完全避免使用将默认值放入数据库中。只需将它们放入您的代码即可。
此外,我怀疑您阅读这些配置的次数将多于更改它们的次数。单文档方法只需要往返数据库一次,因此再次受到青睐。
希望对您有所帮助。
假设您有一个路由器的默认设置,并且您想要对某个路由器的某些设置进行自定义。
哪种方法更好?
将默认设置保存在数据库中的一个文件中,将修改保存在另一个文件中,还是将所有配置和修改后的设置保存在一个文件中?
假设这里有许多路由器具有不同的配置或默认设置的修改。
我不确定在这种情况下 "router" 是什么,但这里有一些做出此类数据建模决策的一般准则:
因为没有跨文档连接功能,与关系数据库相比,您更倾向于使用单文档方法。
您需要考虑可能会发生什么变化、以什么方式发生变化以及多久发生一次变化?因此,例如,如果默认值可能会发生变化,那么默认+差异方法可能不会提供任何优势。您必须遍历每个差异文档并确保它为您更改的任何内容指定了旧的默认值,除非您可以更改现有的用户设置。
使用单文档策略更改设置的逻辑应该更简单,以便支持单文档方法。我认为您甚至可以完全避免使用将默认值放入数据库中。只需将它们放入您的代码即可。
此外,我怀疑您阅读这些配置的次数将多于更改它们的次数。单文档方法只需要往返数据库一次,因此再次受到青睐。
希望对您有所帮助。