【问题标题】:Best Practice of Archive Data in Cosmos DBCosmos DB 中归档数据的最佳实践
【发布时间】:2020-01-15 07:28:46
【问题描述】:

我们需要每天将 Cosmos DB 中的数据存档到 ADLS Gen2,我不确定我们是否有这样做的最佳实践。 我们需要归档的集合每天有超过 100M 的文档(大约每分钟 120K)。每个文档大小约为 0.5k,因此总数据大小约为 50-60G。我们只有插入,没有更新文档。

我能想到的有以下两种方式: 1.使用数据工厂每天提取数据并复制到ADLS Gen2。 2. 使用 Cosmos DB 的 change feed 监控任何插入并调用 Azure Function 将相同的文档插入 ADLS Gen2。

我不确定我们建议的方式是什么。 从我的检查来看,这两种解决方案都有一些缺点。 ADF 与 Cosmos DB 的连接似乎不稳定,如果数据量不大,则适合。当我尝试加载 100M 文档数据时,它总是因数据连接错误而失败。对于change feed,由于插入量很大,我们可能需要每天调用Azure Function 100M次,这会给客户带来很多成本问题,我不能100%确定它是否是一个好的使用方式为如此庞大的插入场景更改提要。

对于 Cosmos DB 中的 Data Archive,我们还有其他方法吗?

感谢和问候,

【问题讨论】:

  • 嗨,我的回答对您有帮助吗?如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充)。这对其他社区成员可能是有益的。谢谢。

标签: azure-cosmosdb


【解决方案1】:

你的描述优先考虑成本,所以我们先比较一下成本。

Azure Function 价格:https://azure.microsoft.com/en-us/pricing/details/functions/

您说每分钟 120K 数据,每个文档大约 0.5K。因此,这意味着您每分钟可以获得 240 个文档。一个月,应该在240*60*24*30 = 10,368,000左右

所以计算如下,仅供参考。这是粗略的,因为执行时间和内存取决于实际使用情况。

例如,如果azure函数的执行时间是0.1秒,而不是1秒。那么:

ADF 价格:https://azure.microsoft.com/en-us/pricing/details/data-factory/data-pipeline/

您说 ADF 似乎不稳定,我认为这是 ADF 的缺点。ADF 是数据归档的好工具。恐怕并发超过默认DIU。建议你尝试提高DIU再试一次。

我的想法:

根据我的经验,可能你需要更加注意一致性。如果由于强一致性而必须实时归档数据,你可以选择azure函数。相反,我强烈建议你在处理它批处理。例如,每天执行一次 ADF 复制活动,以处理前一天的数据。

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2012-05-19
    • 2010-12-24
    相关资源
    最近更新 更多