代码之家  ›  专栏  ›  技术社区  ›  José Maia

如何在CosmosDB实例中使用mongodb的切分

  •  4
  • José Maia  · 技术社区  · 7 年前

    我目前正在研究将MongoDB用于在Azure CosmosDB基础设施上运行的多租户多文档类型应用程序。

    https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data )如果您使用DocumentDB与Cosmos通信,请详细解释如何实现分区策略,但它们没有详细说明我在使用MongoDB API时应该如何处理。

    我的想法基本上是:

    • 单个数据库
    • 两者都会自然地映射到Cosmos的模型,以获得最廉价的体验。我的目标是400 RUs作为标准尺寸,因为这是最便宜的选择。

    • 多种类型的文档,每个文档都有一个TenantID属性,该属性将映射到应用程序中具有自己(安全、用户、性能等)问题的独立租户,以及一个DocumentType属性,以便于过滤。

    有了DocumentDB API,自然可以将TenantID用作分区键。有了MongoDB API,我可以把它留给Azure吗?我应该“手动”做些什么吗?

    如果有必要的话,我正在使用C#API——我假设其他任何地方的配置都是类似的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   dov.amir    7 年前

    Mongo和Cosmos切分机制的构建不同,因此,如果要充分利用平台,系统之间的切分密钥应该不同。

    http://learnmongodbthehardway.com/schema/sharding/

    基数

    始终考虑切分键可以表达的值的数量。A. 只有50个可能值的切分键被认为很低 基数,而一个可能能够表达数百万 键优于低基数键,以避免不可拆分 块。

    在Cosmos DB中,您将以低基数分区键为目标,因为逻辑分区高达10G