代码之家  ›  专栏  ›  技术社区  ›  Dadwals

Azure Cosmos DB请求存储过程的分区密钥

  •  8
  • Dadwals  · 技术社区  · 7 年前

    我使用GUID Id作为分区键,在尝试运行存储过程时遇到了问题。要运行存储过程,我需要提供分区键ans,我不确定在这种情况下应该提供什么值?请协助。

    3 回复  |  直到 5 年前
        1
  •  4
  •   Jay Gong    7 年前

    如果存储过程注册所针对的集合是 单分区集合,则事务的作用域为 集合中的文档。如果集合已分区, 然后在 单分区密钥。然后,必须执行每个存储过程 包括与作用域相对应的分区键值 事务必须在下运行。

    您可以参考上面提到的描述 here .

    正如拉法特·萨罗什所说, GUID Id 不是合适的 partitioning key . 根据你的情况, city 可能更合适。您可能需要调整数据库 partitioning scheme 因为在定义分区键之后,无法删除或修改它。

    我建议你 exporting your data json 然后归档 import 到新集合,该集合由 城市 通过 Azure Cosmos DB Data migration tool .

    希望对你有帮助。


    仅供总结:

    问题:

    执行sql查询文档时无法提供特定的分区键值。

    解决方案:

    1、设置 EnableCrossPartitionQuery true 执行查询sql时。(存在性能瓶颈)

    2、考虑将经常查询的字段设置为分区键。

        2
  •  0
  •   Wolf    4 年前

    例如,您的分区键是/id

    你的宇宙文件是

    {
      "id" : abcde
    }
    

    存储过程运行时,需要粘贴:abcde值

    因此,如果希望存储过程跨分区运行,则它不能 cosmos团队的回答 https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/33550159-support-stored-procedure-execution-over-all-partit

        3
  •  -1
  •   Rafat Sarosh    7 年前

    请看一下这段视频 https://youtu.be/F0wEDdxQER0?t=9m40s

    请在此处阅读有关分区密钥的更多信息: https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data