Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Azure Cosmos DB asking for partition key for stored procedure

I am using GUID Id as my partition key and I am facing problem when I am trying to run a stored procedure. To run a store procedure I need to provide partition key ans I am not sure what value should I provide in this case? Please assist.

like image 613
Dadwals Avatar asked Feb 15 '18 00:02

Dadwals


1 Answers

If the collection the stored procedure is registered against is a single-partition collection, then the transaction is scoped to all the documents within the collection. If the collection is partitioned, then stored procedures are executed in the transaction scope of a single partition key. Each stored procedure execution must then include a partition key value corresponding to the scope the transaction must run under.

You could refer to the description above which mentioned here.

As @Rafat Sarosh said, GUID Id is not an appropriate partitioning key. Based on your situation , city may be more appropriate.You may need to adjust your database partitioning scheme because the partitioning key can not be deleted or modified after you have defined it.

I suggest you exporting your data to json file then import to a new collection which is partitioned by city via Azure Cosmos DB Data migration tool.

Hope it helps you.


Just for summary:

Issue:

Unable to provide specific partition key value when executing sql to query documents.

Solution:

1.Set EnableCrossPartitionQuery to true when executing query sql.(has performance bottleneck)

2.Consider setting a frequently queried field as a partitioning key.

like image 154
Jay Gong Avatar answered Nov 07 '22 12:11

Jay Gong