2017-01-14 35 views
5

tarafından alınırken bölüm anahtarı gerekli mi? Bölüm anahtarını belirtmeden bir belgeyi kimliğine göre almak mümkün mü?Belge numarası

documentation okumaktan Benim anlayış bölüm anahtar belirtilmemişse tüm bölümleri boyunca sorgu irade fanı dışarı olmasıdır:

aşağıdaki sorgu bölümünde bir filtre yok anahtar (Deviceıd) ve bölümün endeksine göre çalıştırıldığı tüm bölümlere dağıtılmıştır. , SDK'nın bölümleri arasında bir sorgu yürütmesini sağlamak için EnableCrossPartitionQuery (REST API'sında x-ms-documentdb-query-enablecrosspartition ) belirtmeniz gerektiğini unutmayın.

olmayan bu anahtar özellikleri olan mantıklı ama kimliğini verilen özel, ben bunun için çapraz bölüm sorguları etkinleştirmeniz gerekir olmayacağını umuyorum tedavi edilir.

Çapraz bölüm sorgularını etkinleştirmem gerekirse, bu pahalı bir işlem olur mu?

cevap

7

Sadece ID ile sorgu, çapraz bölüm işlemi olacaktır. Bu sorgularda bölüm anahtarını FeedOptions.PartitionKey'a veya filtrenin bir parçası olarak eklemelisiniz. DocumentDB'de, bir koleksiyon içindeki tüm belgeler için benzersiz değil vardır. Bunun yerine, "bölüm anahtarı" ve "kimlik" birleşimi birincil anahtardır ve bir koleksiyon içindeki belgeleri benzersiz şekilde tanımlar. Bazı uygulamalar bölüm anahtarını kimliğin bir parçası olarak kodlar, ör. bölüm anahtarı müşteri kimliği ve ID = "customer_id.order_id" olacaktır, böylece bölüm anahtarını kimlik değerinden çıkarabilirsiniz.

+0

Teşekkürler Aravind. Kimlik stratejimi yeniden gözden geçirmem gerekebilir. Merak dışı, pahalı (RU'lar açısından) işlem olarak kabul edilen belge kimliğine dayanan bir çapraz bölüm sorgusudur. – Sam

+1

Daha fazla tartışmak isterseniz lütfen [email protected] adresine e-posta göndermekten çekinmeyin. Evet, Id ile çapraz bölüm sorgulama nispeten pahalıdır. –