如何解决如何在 Cosmos DB 中对订单进行分区?
我正在开发一个应用程序,客户可以在其中订购产品,而制造商必须处理这些订单。我想使用 Cosmos DB,我目前正在尝试决定如何对数据建模。我阅读了文档中的 Modeling data、Modeling and partitioning - a real-world example 和 Choosing a partition key 文章,我想我理解了那里描述的概念,但是我在将它们应用于我的数据模型时遇到了麻烦,尤其是用作 Orders
的分区键。
Orders
是由 Customers
创建的,所以我首先认为 CustomerId
会成为一个很好的分区键。这将使显示属于客户的所有订单变得容易。
但是,我还需要其他查询:制造商需要显示给定时间范围内的所有订单(例如,了解哪些订单应该在下周交付并需要包装),并且为了回答我需要查询所有分区。
我想出的可能解决方案是:
- 接受将有一些跨分区查询。
- 完全跳过分区,将所有订单存储在一个分区中。如果(可能高估)每个文档 10kb,我仍然可以存储 200 万个订单。
- 使用更改提要将所有订单复制到按(例如)月份分区的另一个容器。这样一来,大部分时间只需要搜索一两个分区,但通常不鼓励使用基于日期的分区键。不过,我认为在我的案例中没有足够的订单来创建任何热分区。
- 不要使用 Cosmos DB 存储订单。使用关系数据库可以轻松回答上述查询。但是,我确实喜欢将所有相关订单数据(如产品、金额、价格等)存储在一个文档中的可能性。这在关系数据库中会复杂得多。
我知道这个应用程序可能足够小,任何一种方法都可以工作,但我仍然试图从概念上“正确”地做到这一点,我想使用这个项目来学习并为更大的项目做好准备,所以任何想法表示赞赏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。