Koleksiyonlar

Azure Cosmos DB , belge, grafik ve anahtar-değer veri modellerini destekleyen genel olarak dağıtılmış çok modelli veritabanlarıdır. Bu bölümdeki içerik, REST aracılığıyla SQL API'sini kullanarak koleksiyon kaynaklarını oluşturmaya, sorgulamaya ve yönetmeye yöneliktir.

REST API, veritabanı hesabı altındaki kaynaklarda temel CRUD işlemlerini destekler. Koleksiyon, JSON belgelerinin ve ilişkili JavaScript uygulama mantığının (saklı yordamlar, tetikleyiciler ve kullanıcı tanımlı işlevler) bir kapsayıcısıdır. Bu konu, belge koleksiyonlarını yönetmek için kullanılan REST işlemlerini özetler.

Not

Bu API başvuru makalelerinde Azure Cosmos DB veri düzlemi API'sini kullanarak kaynak oluşturma adımları gösterilmektedir. Veri düzlemi API'siyle dizin oluşturma ilkesi, bölüm anahtarları gibi cosmos DB SDK'ları gibi temel seçenekleri yapılandırabilirsiniz. Tüm Azure Cosmos DB kaynakları için tam özellik desteğine ihtiyacınız varsa Cosmos DB Kaynak Sağlayıcısı'nı kullanmanızı öneririz.

Koleksiyon, Azure Cosmos DB'deki bir kapsayıcıyla eşler. Bu nedenle, maliyetin saniye başına istek birimleri cinsinden belirtilen sağlanan aktarım hızı tarafından belirlendiği faturalanabilir bir varlıktır. Koleksiyonlar bir veya daha fazla bölüme/sunucuya yayılabilir ve aktarım hızı açısından ölçeği artırılıp azaltılabilir. Koleksiyonlar, Azure Cosmos DB tarafından otomatik olarak bir veya daha fazla fiziksel sunucuya bölümlenir.

Koleksiyon bir sistem kaynağı olduğundan, sabit bir şeması vardır. Bir koleksiyonun URI yolu , kaynak modelindeki harmanlamalar tarafından temsil edilir.

Aşağıdaki örnekte bir koleksiyonun JSON tanımı gösterilmektedir:

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash"  
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  
Özellik Açıklama
id Yeni koleksiyonu tanımlayan benzersiz addır.
indexingPolicy Koleksiyon için dizin oluşturma ilkesi ayarlarıdır.
partitionKey Koleksiyon için bölümleme yapılandırma ayarlarıdır.
_Kurtulmak Sistem tarafından oluşturulan bir özelliktir. Kaynak kimliği (_rid), kaynak modelinde kaynak yığını başına da hiyerarşik olan benzersiz bir tanımlayıcıdır. İzin kaynağının yerleşimi ve gezintisi için dahili olarak kullanılır.
_Ts Sistem tarafından oluşturulan bir özelliktir. Kaynağın son güncelleştirilmiş zaman damgasını belirtir. Değer bir zaman damgasıdır.
_Kendini Sistem tarafından oluşturulan bir özelliktir. Kaynak için benzersiz adreslenebilir URI'dir.
_Etag İyimser eşzamanlılık denetimi için gereken kaynak etag'ini temsil eden sistem tarafından oluşturulan bir özelliktir.
_Doktor Belge kaynağının adreslenebilir yolunu belirten sistem tarafından oluşturulan bir özelliktir.
_sprocs Saklı yordamlar (sprocs) kaynağının adreslenebilir yolunu belirten sistem tarafından oluşturulan bir özelliktir.
_Tetikleyiciler Tetikleyiciler kaynağının adreslenebilir yolunu belirten sistem tarafından oluşturulan bir özelliktir.
_udfs Kullanıcı tanımlı işlevler (udfs) kaynağının adreslenebilir yolunu belirten sistem tarafından oluşturulan bir özelliktir.
_Çakışma Çakışma kaynağının adreslenebilir yolunu belirten sistem tarafından oluşturulan bir özelliktir. Bir koleksiyondaki bir kaynak üzerinde yapılan işlem sırasında, çakışma oluşursa, kullanıcılar çakışmalar URI yolunda bir GET gerçekleştirerek çakışan kaynakları inceleyebilir.

Dizin Oluşturma İlkesi altındaki özellikler

Özellik Açıklama
otomatik Otomatik dizin oluşturmanın açık mı yoksa kapalı mı olduğunu gösterir. Varsayılan değer True olduğundan tüm belgeler dizine eklenir. Değerin False olarak ayarlanması dizin oluşturma yollarının el ile yapılandırılmasına olanak tanır.
indexingMode Dizin oluşturma modu varsayılan olarak Tutarlı'dır. Bu, dizin oluşturmanın belgelerin eklenmesi, değiştirilmesi veya silinmesi sırasında zaman uyumlu olarak gerçekleştiği anlamına gelir. Dizin oluşturmanın zaman uyumsuz olarak gerçekleşmesi için dizin oluşturma modunu gecikmeli olarak ayarlayın.
includedPaths Dizine eklenecek belge yollarını içeren dizi. Varsayılan olarak, iki yol eklenir: tüm belge yollarının dizine alındığını belirten / yolu ve zaman damgası aralığı karşılaştırması için dizin oluşturan _ts yolu.
excludedPaths Dizin oluşturmanın dışında tutulacak belge yollarını içeren dizi.

Eklenen Yollar altındaki özellikler

Özellik Açıklama
Yolu Dizin oluşturma davranışının uygulandığı yol. Dizin yolları kök (/) ile başlar ve genellikle ile biter? joker karakter işleci, ön ek için birden çok olası değer olduğunu gösterir. Örneğin, SELECT * FROM Families F WHERE F.familyName = "Andersen" hizmeti vermek için /familyName/? için bir dizin yolu eklemeniz gerekir. öğesini seçin.

Dizin yolları, ön ek altında özyinelemeli olarak yolların davranışını belirtmek için * joker karakter işlecini de kullanabilir. Örneğin, /payload/* dizin oluşturmadan payload özelliğinin altındaki her şeyi eklemek için kullanılabilir.
Datatype Dizin oluşturma davranışının uygulandığı veri türüdür. Dize, Sayı, Nokta, Çokgen veya LineString olabilir. Boole değerleri ve null değerleri otomatik olarak dizine eklenir
Tür Dizin türü. Karma dizinler eşitlik karşılaştırmaları için, Aralık dizinleri ise eşitlik, aralık karşılaştırmaları ve sıralama için yararlıdır. Uzamsal dizinler uzamsal sorgular için yararlıdır.
Hassas Dizinin duyarlığı. Maksimum duyarlık için -1 olarak veya Sayı için 1-8 arasında ve Dize için 1-100 olarak ayarlanabilir. Point, Polygon ve LineString veri türleri için geçerli değildir.

Dışlanan Yollar altındaki özellikler

Özellik Açıklama
Yolu Dizin oluşturmanın dışında tutulan yol. Dizin yolları kök (/) ile başlar ve genellikle * joker işleciyle biter... Örneğin, /payload/* payload özelliğinin altındaki her şeyi dizin oluşturmanın dışında tutmak için kullanılabilir.

Bölüm Anahtarı altındaki özellikler

Özellik Açıklama
Yolu Koleksiyondaki hangi verilerin bölümlenebileceğini kullanan bir yol dizisi. Yollar joker karakter veya sondaki eğik çizgi içermemelidir. Örneğin, "AccountNumber" JSON özelliği "/AccountNumber" olarak belirtilir. Dizi yalnızca tek bir değer içermelidir.
Tür Bölümleme için kullanılan algoritma. Yalnızca Karma desteklenir.

Dizin Oluşturma İlkesi

Belgeler bir koleksiyona eklendikçe Cosmos DB varsayılan olarak belgeleri otomatik olarak dizine alır ve böylece belgelerin sorgulanmasını sağlar. Dizin oluşturma ilkesini yapılandırdığınız koleksiyon düzeyindedir. Dizin oluşturma ilkesi koleksiyon düzeyinde ayarlandığından, veritabanındaki her koleksiyonun farklı dizin oluşturma ilkeleri olabilir.

Bir koleksiyonun dizin oluşturma ilkesi aşağıdaki seçenekleri belirtebilir:

  • Otomatik: Koleksiyonun tüm belgeleri otomatik olarak dizine almasını isteyip istemediğinizi seçebilirsiniz. Varsayılan olarak, tüm belgeler otomatik olarak dizine eklenir, ancak kapatmayı seçebilirsiniz. Dizin oluşturma kapatıldığında, belgelere yalnızca kendi kendine bağlantıları veya kimlik kullanan sorgular aracılığıyla erişilebilir.

  • Dizin Oluşturma Modu: Zaman uyumlu (Tutarlı), zaman uyumsuz (Gecikmeli) dizin güncelleştirmeleri ve dizin oluşturma yok (Yok) arasında seçim yapabilirsiniz. Varsayılan olarak dizin, koleksiyondaki bir belge üzerinde gerçekleştirilen her ekleme, değiştirme veya silme eyleminde zaman uyumlu olarak güncelleştirilir. Bu güncelleştirme, sorguların, dizinin yakalaması için herhangi bir gecikme olmadan belgenin okuduğuyla aynı tutarlılık düzeyini kabul etmelerini sağlar.

  • Dizin türleri ve duyarlık: Dizin girdileri için kullanılan tür veya düzen, dizin depolama ve performans üzerinde doğrudan bir etkiye sahiptir. Daha yüksek duyarlık kullanan bir düzen için sorgular genellikle daha hızlıdır. Ancak, dizin için daha yüksek bir depolama yükü de vardır. Daha düşük bir duyarlık seçmek, sorgu yürütme sırasında daha fazla belgenin işlenmesi gerekebileceği, ancak depolama ek yükünün daha düşük olacağı anlamına gelir.

  • Dizin yolları: Belgelerde, hangi yolların dizine dahil edilmesi veya dizine alınmaması gerektiğini seçebilirsiniz; bu da sorgu desenleri önceden bilindiğinde senaryolar için geliştirilmiş yazma performansı ve daha düşük dizin depolaması sunabilir.

Aşağıdaki tablolarda bazı örnek dizin oluşturma yolları ve bunların sorgularda nasıl kullanıldığı gösterilmektedir.

Özellik Açıklama
/* Koleksiyon için varsayılan yol. Özyinelemeli ve belge ağacının tamamına uygulanır.
/Pervane/? Aşağıdaki gibi sorgular sunmak için gereken dizin yolu (sırasıyla Karma veya Aralık türleriyle):

SELECT * FROM koleksiyonu c WHERE c.prop = "value"

SELECT * FROM koleksiyonu c WHERE c.prop > 5

SELECT * FROM koleksiyonu c ORDER BY c.prop
/Pervane/* Belirtilen etiket altındaki tüm yollar için dizin yolu. Aşağıdaki sorgularla çalışır:

SELECT * FROM koleksiyonu c WHERE c.prop = "value"

SELECT * FROM collection c WHERE c.prop.subprop > 5

SELECT * FROM koleksiyonu c WHERE c.prop.subprop.nextprop = "value"

SELECT * FROM koleksiyonu c ORDER BY c.prop
/props/[]/? Gibi skaler dizilere karşı yineleme ve JOIN sorguları sunmak için gereken dizin yolu

["a", "b", "c"]:

SELECT etiketi FROM etiketi IN collection.props WHERE etiketi = "value"

SELECT etiketi FROM collection c JOIN tag IN c.props WHERE etiketi > 5
/props/[]/subprop/? Gibi nesne dizilerinde yineleme ve JOIN sorguları sunmak için gereken dizin yolu

[{subprop: "a"}, {subprop: "b"}]:

SELECT etiketi FROM etiketi IN collection.props WHERE tag.subprop = "value"

SELECT etiketi FROM collection c JOIN tag IN c.props WHERE tag.subprop = "value"
/prop/subprop/? Sorguları sunmak için gereken dizin yolu (sırasıyla Karma veya Aralık türleriyle):

SELECT * FROM koleksiyonu c WHERE c.prop.subprop = "value"

SELECT * FROM collection c WHERE c.prop.subprop > 5

SELECT * FROM koleksiyonu c ORDER BY c.prop.subprop

Cosmos DB dizin oluşturma ilkeleri hakkında daha fazla bilgi için bkz. Cosmos DB dizin oluşturma ilkeleri. REST API belgelerinin amacı doğrultusunda tüm örneklerde otomatik dizin oluşturma kullanılır.

Teklifler ve Performans Düzeyleri

Koleksiyon oluşturulduğunda, oluşturulan koleksiyona başvuran bir Teklif kaynağı da oluşturulur. Teklif kaynağı, saniye başına istek birimleri ve dakikada istek birimleri cinsinden koleksiyon aktarım hızı hakkında yapılandırma bilgilerini içerir.

Koleksiyonun performans düzeyi Teklifi Değiştir kullanılarak değiştirilebilir.

Görevler

Belge koleksiyonlarıyla aşağıdakileri yapabilirsiniz: