json - DocumentDB,对 JSON 文档使用小字段名称以最小化长度

标签 json azure azure-cosmosdb

在 DocumentDB 中,我们限制为 512KB JSON 文档。

寻找答案here ,要估计发送的文档的大小,建议使用以下方法 JsonConvert.SerializeObjectEncoding.UTF8.GetBytes(s)。即使使用 .NET SDK,也没有压缩的概念。

如果您使用自定义对象数组,字段名称可能会重复很多次。

我的问题是:我应该尝试使用 JSON 字段的短名称来减少大小而不是可读性吗?您是否建议使用 JSON.NET 提供的 [JsonProperty] 属性覆盖序列化属性名称?

最佳答案

以下是所有评论的答案:

@DavidMakogon“这真的取决于你 - 有很多压缩/缩小 JSON 的方法(有几个库可以做到这一点),包括你使用较短属性名称的建议。”

我同意大卫的观点。我想补充一点,缩小字段名称将对系统的可读性/可调试性产生负面影响。

另一方面,我发现任何接近 512K 的数据建模都可能过于非规范化。至关重要的是,您永远不要决定数组元素或子对象可以无限增长的数据模型。如果您正在考虑强制限制数组字段或子对象中的元素数量,并且没有自然限制(汽车只有 4 个轮胎),那么这是一个警告信号。

在注释中,您指出数组将无限增长。因此,我的建议是更改数据模型,使数组的每个元素都是一个单独的文档。您必须进行两次往返才能获取父级和子级,但这就是 SQL 数据库中的联接自动执行的操作,因此这不是执行效率问题,而且这只是对您的程序的微小增加,我怀疑小于您说您在评论中实现了分块算法。

关于json - DocumentDB,对 JSON 文档使用小字段名称以最小化长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37156991/

相关文章:

python - Pandas 将 Dataframe 转换为嵌套的 Json

sql - 我可以提高 SQL Server 2016 中此 JSON 转换的性能吗?

javascript - Angular 和 JSON 交互?

PHP在上传到Azure存储后获取Blob url

c# - CosmosDb 的并发问题

azure - Azure NIC 是否可以指向在 Azure DNS 区域中创建的记录?

azure - 如何使用 Azure CLI 命令清除 Cosmos (MongoAPI) 集合?

azure - 如何查询 cosmos db 数组以找到所有项目的完全匹配

azure-cosmosdb - 匹配数组中多个值的 CosmosDB SQL 查询

json - 如何解码 Elm 中的静态值