每个 COSMOS 实例一个数据库还是单个 COSMOS 实例中的多个数据库?

Bre*_*ead 3 azure azure-cosmosdb

我们是 COSMOS 的新手,并将我们的多个应用程序迁移到云。如果我们每个 COSMOS 实例有一个数据库或单个 COSMOS 实例中的所有应用程序数据库,会有什么优点和缺点,这是否具有成本效益?因为如果 Microsoft 对使用 RU/s 和存储进行计费,而不是对运行的 COSMOS 实例的数量进行计费,那么在每个 COSMOS 实例中使用单个数据库会有什么区别?

示例 - 方法 A:COSMOS Resource1 > Database1 > Container1 COSMOS Resource1 > Database2 > Container2 方法 B:COSMOS Resource1 > Database1 > Container1 COSMOS Resource2 > Database2 > Container2

哪种方法更好?

Chr*_*ker 5

优点

  • 数据库可以有多个容器。每个容器都可以拥有自己的 RU 配额,或者您可以通过将配额置于数据库级别来让它们共享 RU。这可以通过在整个容器需求套件中共享 RU 来为您节省资金,而无需管理每个容器的成本。
  • 您可以轻松获得连接信息,因为您的所有容器的端点和密钥都相同,就像它们在一个数据库中一样。
  • 添加更多 RU 的好处是所有容器不仅仅是一个。

缺点

  • 如果您有一个真正需要大量 RU 的读/写密集型应用程序,则在一个供应配额下组合容器可能会使您的其他应用程序收到错误,因为没有剩余的 RU 可供它们执行操作。
  • 有人获得了您的密钥和端点,您的所有容器都已公开,因为它们位于同一数据库下。这可能会将您公司的完整数据清单暴露给黑客。
  • 您无法将成本控制到一个很好的程度。这意味着,如果您有一个不需要太多 RU 的容器,则该容器可能有 400 RU 供应,并且只需花费您 20 美元或美元,而您将大部分预算用于 RU 饥饿应用程序。分离允许您精确控制 RU 分配/成本。

https://docs.microsoft.com/en-us/azure/cosmos-db/set-throughput

额外的花絮。 更改提要允许您将函数等连接到 Cosmos 内的事件,并允许您将数据同步到外部数据库,如 SQL Server、ElasticSearch 和/或 Redis。我见过很多人/公司使用这种无服务器功能来用很少的代码同步 ElasticSearch。

确保仔细选择分区键,并且不要在没有它的情况下进行操作。有时,查询的差异可能超过 100 RU。

  • 感谢@Chris 的回答。我的问题不是围绕一个数据库单个容器/一个数据库多个容器。我想了解的是,创建多个 COSMOS 资源然后在其中添加所需的数据库和容器是一个好习惯吗?我已经用方法更新了我的问题 (2认同)