加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基本的NoSQL文档设计问题

发布时间:2020-12-13 13:31:37 所属栏目:百科 来源:网络整理
导读:我试图找出如何最好地实现这个为我的系统…让我的头脱离现在的RDBMS空间… 我当前的一部分DB有三个表:Show,ShowEntry和Entry. ShowEntry是Show和Entry之间的多对多连接表.在我的RDBMS中,认为这是相当合乎逻辑的,因为显示详细信息的任何更改都可以在一个地方
我试图找出如何最好地实现这个为我的系统…让我的头脱离现在的RDBMS空间…

我当前的一部分DB有三个表:Show,ShowEntry和Entry. ShowEntry是Show和Entry之间的多对多连接表.在我的RDBMS中,认为这是相当合乎逻辑的,因为显示详细信息的任何更改都可以在一个地方完成,并且与Entry相同.

在基于文档的存储中反映出最好的方法是什么?我相信没有一种方法可以做到这一点,但我不禁想到,如果基于文档的存储完全适用于这种情况.

我正在考虑实施RavenDB.而关于一般NoSQL设计的讨论将会更好,一个更重要的RavenDB将会是太棒了!

谢谢,
D.

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

拿起购物篮的例子.更确切地知道特定篮子中哪些项目比哪个篮子包含特定项目.由于我们通常是按照篮子到项目的方向进行关系,因此将项目ID存储在一个篮子中比在项目中存储篮子ID更有意义.

您仍然可以通过使用索引在相反方向上遍历关系(例如,查找包含特定项目的篮子),但索引将在后台更新,因此不会总是100%准确. (您可以等待索引使用WaitForNonStaleResults进行准确,但这种延迟将显示在您的UI中.)

如果双向要求立即100%的准确性,您可以在两个文档中存储外键,但是每当创建或销毁关系时,应用程序将不得不更新两个文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读