首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MarkLogic中存储父子关系

在MarkLogic中存储父子关系
EN

Stack Overflow用户
提问于 2016-06-14 14:07:06
回答 2查看 121关注 0票数 0

对于MarkLogic (也许对于一般的noSQL?)来说,将父子存储为一个文档是最好的吗?因此,如果来自关系世界,那么标准化的父子表将需要反规范化并存储为单个文档?

这种设计是否会影响搜索的方式(因为现在总是在父记录的上下文中搜索子记录)?

EN

回答 2

Stack Overflow用户

发布于 2016-06-14 19:21:59

这可能取决于孩子是否可以有多个父级(例如,图形类型的数据,而不是分层的),但我的推理是,对于分层的数据,以其自然的分层形式存储它(使用XML或JSON等)是最有意义的。这并不意味着将整个父子表存储为一个文档,而是将记录扩展到其原始树,并将这些记录存储为文档。

这并不适合所有的NoSQL解决方案,但对于那些属于文档存储类别的解决方案来说工作得很好,特别是在它们提供了良好的内容和层次结构搜索的情况下。就像MarkLogic..

注意:图表类型的数据可以在MarkLogic中以三元组的形式存储。这将允许使用SPARQL查询它,并在它上进行推理。

哈!

票数 1
EN

Stack Overflow用户

发布于 2016-06-16 03:51:22

这并不是说父子关系被“反规范化”了,而是子代被“合并”到了父代中。

需要考虑的一件事是你所拥有的关系的类型。统一建模语言为不同种类的关系提供了描述--参见Difference between association, aggregation and composition

一般来说(有例外),我认为关联和聚合关系将在单独的文档之间,而组合关系将被“合并”到单个文档中。

具体的例子-一个人认识许多人(关联),一个人可以拥有许多车辆(聚合,一辆车只有一个车主,但它自己的生命周期),一个人可以有许多名字(组成)。我会创建person和vehicle文档,但不会创建姓名文档-我会将所有姓名存储在person文档中。

对我来说,这是文档数据库相对于关系数据库的一大优势。在后者中,无论我有什么样的关系,我都必须创建单独的表。在文档数据库中,我可以选择最有意义且适合我的应用程序需要的内容。通常,我的物理文档模型更接近于我的应用程序的概念模型。

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

https://stackoverflow.com/questions/37804125

复制
相关文章

相似问题

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