首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据存储体系结构:存储层次数据(JSON/BSON)

数据存储体系结构:存储层次数据(JSON/BSON)
EN

Software Engineering用户
提问于 2016-05-23 16:30:39
回答 1查看 1K关注 0票数 2

假设您有“Foo”的层次存储概念。"Foo“持有一个id,各种值,以及零到多个”Foo“。显然,反过来,子元素可以保持零到多个Foos。数据纯粹是分层的:给定的Foo将属于零到一个Foo,因此多个父级的关系从来不存在。

数据以某种数据格式(JSON、BSON、XML等)存储在存储技术(如MongoDB、平面文件等)中。我们将假设这两者都是未知的,因此需要一个与系统无关的体系结构。

什么样的体系结构原则/选择将指示对象是分层存储(直接存储到存储介质中,其子层作为实际的子级存在),还是直接存储在同一级别上的所有父级和子级(以及通过ids引用子级)。

我的倾向是,将对象存储在自然分层模式中是理想的,但是我不确定这是否可能是性能问题(如果需要找到特定的子对象,这需要对树结构进行某种搜索?)。

我看到Web以两种方式公开,代码存储库处理这两种形式。但是,我无法找到正式处理的决策点/体系结构问题。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-05-23 17:08:24

我认为要考虑的两个问题是:

  1. (上面提到了这一点)--您需要查找子节点吗?在这种情况下,您可能希望避免存储相当大的层次结构,而是存储单个的Foos,这样它们就可以立即搜索。这可能影响树的构建/检索时间。
  2. 你想把孩子们搬到树中间去吗?如果你这样做了,我会把它们分开,否则你将不得不搜索这些,然后分离并重新分配到一个新的树

我认为客户机的API反映了客户机想要做的事情,而不是底层的存储机制。了解客户想要什么(如上所述,他们想要搜索、重建等等)。会进一步通知你的决定。

我还注意到,您对底层存储机制完全不确定。面向文档的数据库将具有与平面文件解决方案非常不同的特性。因此,您应该将面向客户的API与底层技术分开考虑,并让客户端需求通知您的非功能需求。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/319274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档