我正在试图找出为基于文档的数据存储系统思考这个问题的正确方法。我有一个简单的双层类别系统案例,其中有行业和行业组织(想想管道和家庭服务)。
我的第一个想法是该文件将是工业集团,它内部将有行业,但问题是大多数相关数据将归于行业。我不确定是否有“犹太人”来获取与文档中的子项相关的数据。例如,一篇文章可能被分配给一个行业,而不是一个组 - 那么该引用如何看待(假设该链接来自非嵌套文档)?
无论如何,对正确的思考方式的一些一般性见解会很棒。
答案 0 :(得分:2)
设计任何非关系型数据库的最佳方法是基于您需要针对数据运行的查询,而不是数据本身。
您可以以任何方式设计非关系数据库,因为关系数据库没有rules of normalization。
重新评论:
您需要枚举 all 查询数据的方式。然后决定在每种情况下哪种文档结构使查询最方便。
由此可能出现一些模式。然后使用您的判断来决定选择哪个文档结构,以满足最大的查询横截面。
还要记住,在MongoDB中,冗余存储数据就好了。事实上,推荐这是因为单个文档结构不太适合您的所有查询。您可能会发现一个文档结构对于大多数查询都非常有用,但却无法进行最后一次查询。那时您应该创建一个辅助冗余文档集合来提供最后一个查询,因为所有其他查询都会被处理。
没有构建非关系数据库的规则。这使得他们比关系数据库更难。抱歉,NoSQL是TANSTAAFL的一个案例!