【问题标题】:Azure cosmos db vs. blob storage for intermediate/temporary storageAzure cosmos db 与用于中间/临时存储的 blob 存储
【发布时间】:2018-10-24 03:36:27
【问题描述】:

我们在 WebAPI 中有要求,以 JSON 的形式从外部 API 中提取有效负载,清理并将其发布到 Azure Sql。对于这个要求,我们目前依赖于 blob 存储,我们将 json 有效负载存储到一个 azure blob 中,并将其检索到 UI 中以进行数据清理活动。用户可以花费大量时间来验证数据并根据需要进行修改。用户可能会起草几天,并在所有清理完成后单击导入按钮。现在,我观察到,在这些草稿期间,blob 只是被检索并反序列化为对象列表以查找要更新的相应属性。一旦用户单击草稿完成更新,相同的列表将被序列化为 json 并存储回 blob。序列化/反序列化的过程似乎很昂贵。相反,我正在考虑用 Cosmos DB 替换 blob。这真的会即兴表演吗?建议 Azure Sql Json 支持是否比所有这些选项更可行?我什至在考虑 Redis 缓存?决定的主要因素也是成本效益。

【问题讨论】:

  • 你的文件有多大?
  • @Thomas 每个文件大小约为 5mb
  • 您每次都需要序列化/反序列化吗?您可能会尝试找到优化的 json 序列化程序,可能是 jil json ? redis 缓存在有成本之后可能会很好
  • 但是 5mb 的有效载荷对 redis 来说不是坏事。根据最佳实践,100kb 被认为是大的。 docs.microsoft.com/en-us/azure/azure-cache-for-redis/…

标签: json azure azure-cosmosdb azure-blob-storage azure-redis-cache


【解决方案1】:

如果您喜欢搜索 JSON 对象并且搜索结果的大小明显小于整个对象列表,则使用 Cosmos DB 将获得巨大的性能优势。无论如何,您将为查询返回的对象支付序列化/反序列化价格,因为它们应该通过网络发送到您的应用程序。

Cosmos DB 的价格远高于标准 Blob 存储,但它是处理 JSON 工作负载的非常简单的工具。您拥有 SQL 和 MongoDB 查询 API,您将能够以某种方式设计与数据库无关的应用程序(至少在查询级别)。

如果您的 JSON 对象列表比其他对象更频繁地被查询,我认为使用 Redis 缓存是有意义的,因此您可以将它们预加载到缓存中,以利用更高性能的搜索操作并稍后上传到持久 Blob 存储。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 2021-11-19
  • 2019-11-17
  • 2018-07-09
相关资源
最近更新 更多