azure - 如何正确使用 CosmosDb 处理大于 2 Mb 的文档
问题描述
我使用 Azure CosmosDb 作为我的应用程序的数据库。
假设我需要将所有国家、城市和街道保存在我的数据库中。所以,我会有一个看起来像这样的项目:
{
country: Brazil,
size: 1000,
population: 200000,
cities: [
{
city: Rio
population: 8000
streets: [
{
name: A,
postalCode: 12345
},
{
name: B,
postalCode: 34567
}
],
...
然而,当我谈论所有国家和城市和街道时,这变成了一个巨大的项目,比 cosmosDb 允许的 2Mb 还大。
那么,处理这个问题的正确方法是什么?我应该将不同集合中的城市和街道分开吗?但是,使用不同的集合有很多缺点,因为在更新两个不同的集合时无法使用存储过程或保证事务。
解决方案
你能解释一下为什么你需要一个巨大的文档中的所有内容吗?为什么你需要交易来更新这些数据?
更好的方法是使用多个单独的文档,所有文档都存储在一个集合中以便于管理。
在每个文档中使用一个字段来描述它的级别(国家、城市、邮编),然后在该文档中存储该级别的所有必要信息。您可能可以使用国家/地区作为分区键,因为它可能适合 10GB/分区限制。
推荐阅读
- javascript - 当我的购物车只包含一件商品时,Ajax 没有响应
- powershell - 无法为 Haskell 安装 QuickCheck:“runInteractiveProcess:权限被拒绝”
- c# - 将 Protobuff 生成的 C# 文件编译成 dll
- java - 无法使用 Java 中的 ITEXT 将第 10 个表添加到 PDF
- java - 使用来自通量的数据将通量减少为单声道
- php - 如何使用学说和 jms/serializer 序列化 laminas/mezzio 中的实体
- r - 如何按 ID 对特定输出进行子集列表
- sql - 为什么在 SQLite 中使用 NOT EXISTS 过滤时需要等于条件?
- audio - 音频文件中的样本如何对齐?
- encoding - 选择子句未显示 Hive CLI 输出中的字符串字段中存在的 '\u0001 char