gpt4 book ai didi

nosql - NoSQL 中的多对多关系

转载 作者:行者123 更新时间:2023-12-04 00:12:08 29 4
gpt4 key购买 nike

我正在努力弄清楚如何最好地为我的系统实现这一点……现在让我的头离开 RDBMS 空间……

我当前数据库的一部分有三个表:Show、ShowEntry 和 Entry。 ShowEntry 基本上是 Show 和 Entry 之间的多对多连接表。在我的 RDBMS 中,我认为这是非常合乎逻辑的,因为对 Show details 的任何更改都可以在一个地方完成,对于 Entry 也是如此。

在基于文档的存储中反射(reflect)这一点的最佳方式是什么?我确信没有一种方法可以做到这一点,但我不禁思考基于文档的存储是否适合这种情况。

仅供引用,我目前正在考虑实现 RavenDB。虽然对一般 NoSQL 设计的讨论会很好,但更专注于 RavenDB 的讨论会很棒!

谢谢,
D.

最佳答案

在文档数据库中建模多对多关系时,您通常只在其中一个文档中存储一组外键。您选择的文档在很大程度上取决于您打算遍历关系的方向。以一种方式遍历它是微不足道的,以另一种方式遍历它需要一个索引。

以购物篮为例。确切地知道哪些物品在特定篮子中比哪些篮子包含特定物品更重要。由于我们通常遵循购物篮到商品方向的关系,因此将商品 ID 存储在购物篮中比将购物篮 ID 存储在商品中更有意义。

您仍然可以使用索引以相反的方向遍历关系(例如,查找包含特定项目的篮子),但索引将在后台更新,因此它并不总是 100% 准确。 (您可以使用 WaitForNonStaleResults 等待索引变得准确,但该延迟将显示在您的 UI 中。)

如果您需要在两个方向上立即 100% 准确,您可以在两个文档中存储外键,但是您的应用程序必须在创建或销毁关系时更新两个文档。

关于nosql - NoSQL 中的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798525/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com