【问题标题】:Should I use a single master table in a NoSQL DB (Cosmos)?我应该在 NoSQL DB (Cosmos) 中使用单个主表吗?
【发布时间】:2022-01-26 14:58:49
【问题描述】:

我正在尝试在 Cosmos DB 中建模数据。 我们试图保持键一致,即 Country_Id、Category_Id 等,即它应该来自查找/主控 由于我们并没有真正在 NoSQL 中强制执行外键约束,因此将所有查找集中到一个集合中是否有好处,即 id、type、value、[“other attribs”] 例如对于州,type = "state", name="Texas"? 我见过人们不鼓励在 SQL 数据库(MUCK 等)上使用相同的模式。我们是否也应该在这里使用多个主表?

【问题讨论】:

  • 欢迎您!由于您没有展示任何示例数据、典型查询示例等,因此无法客观地回答这个问题。好吧,即使您确实分享了您的数据,我也不确定您能否在这里得到客观的答案。数据建模是一个相当广泛和涉及的主题,它将非常具体地满足您的应用和相关查询的需求。

标签: azure-cosmosdb data-modeling


【解决方案1】:

在许多情况下,您可以使用单个容器来存储应用程序的主数据或查找数据,并使用诸如“/type”之类的鉴别器属性作为数据的分区键。

好处是您可以将所有这些数据保存在单个容器中,从而降低将其存储在单个容器中的吞吐量成本。此外,在处理页面上的用户界面元素之类的操作时,您可以在单个查询中获取所有数据,并在 where 子句中使用 IN 语句仅获取您需要的数据。 (我建议在初始调用后缓存在内存中,这样每个用户就不需要再次获取相同的数据)。

要记住的另一件事是,您应该考虑使用更改提要来维护此数据与使用它的其他容器之间的任何引用完整性。对于像 Cosmos DB 这样的 NoSQL 数据库,您经常需要对数据进行非规范化处理。 Change Feed 可用于保持数据同步。

如果您是 Cosmos DB 和 NoSQL 建模的新手,我建议您观看此视频,这将为您打下良好的入门基础。 https://youtu.be/3gEytt-Jops?t=1559

【讨论】:

  • 谢谢,马克。您的输入很有用。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2012-09-23
  • 2011-12-22
  • 2016-06-30
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多