假设您有“Foo”的层次存储概念。"Foo“持有一个id,各种值,以及零到多个”Foo“。显然,反过来,子元素可以保持零到多个Foos。数据纯粹是分层的:给定的Foo将属于零到一个Foo,因此多个父级的关系从来不存在。
数据以某种数据格式(JSON、BSON、XML等)存储在存储技术(如MongoDB、平面文件等)中。我们将假设这两者都是未知的,因此需要一个与系统无关的体系结构。
什么样的体系结构原则/选择将指示对象是分层存储(直接存储到存储介质中,其子层作为实际的子级存在),还是直接存储在同一级别上的所有父级和子级(以及通过ids引用子级)。
我的倾向是,将对象存储在自然分层模式中是理想的,但是我不确定这是否可能是性能问题(如果需要找到特定的子对象,这需要对树结构进行某种搜索?)。
我看到Web以两种方式公开,代码存储库处理这两种形式。但是,我无法找到正式处理的决策点/体系结构问题。
发布于 2016-05-23 17:08:24
我认为要考虑的两个问题是:
Foos,这样它们就可以立即搜索。这可能影响树的构建/检索时间。我认为客户机的API反映了客户机想要做的事情,而不是底层的存储机制。了解客户想要什么(如上所述,他们想要搜索、重建等等)。会进一步通知你的决定。
我还注意到,您对底层存储机制完全不确定。面向文档的数据库将具有与平面文件解决方案非常不同的特性。因此,您应该将面向客户的API与底层技术分开考虑,并让客户端需求通知您的非功能需求。
https://softwareengineering.stackexchange.com/questions/319274
复制相似问题