SQL sorgularını kullanmaya başlama

UYGULANDıĞı YER: SQL API

Azure Cosmos DB SQL apı hesabında, verileri bulmanın iki yolu vardır:

Nokta okuma -tek BIR öğe kimliğinde ve bölüm anahtarında anahtar/değer araması yapabilirsiniz. Öğe kimliği ve bölüm anahtarı birleşimi anahtardır ve öğenin kendisi değerdir. 1 KB 'lik bir belge için, nokta, genellikle 10 MS 'nin altında bir gecikme süresine sahip maliyet 1 istek birimini okur. Nokta okuma tek bir öğe döndürür.

Her SDK ile nasıl yapılır noktası okumalarının bazı örnekleri aşağıda verilmiştir:

SQL sorguları -bir JSON sorgu dili olarak Yapılandırılmış Sorgu Dili (SQL) kullanarak sorgular yazarak verileri sorgulayabilirsiniz. Sorgular her zaman en az 2,3 istek birimi maliyetlidir ve genel olarak nokta okumasından daha yüksek ve daha fazla değişken gecikme süresine sahip olur. Sorgular birçok öğe döndürebilir.

Azure Cosmos DB çoğu okuma ağır iş yükü, her iki nokta okuma ve SQL sorgularının birleşimini kullanır. Yalnızca tek bir öğeyi okumanız gerekiyorsa, nokta okumaları sorgular ve sorgulardan daha hızlıdır. İşaret okumalarının veriye erişmek için sorgu altyapısını kullanması gerekmez ve verileri doğrudan okuyabilirler. kuşkusuz, tüm iş yüklerinin, nokta okumaları kullanarak verileri özel olarak okuması mümkün değildir, bu nedenle sorgu dili olarak SQL desteği ve şema belirsiz dizin oluşturma verilerinize daha esnek bir yol sağlar.

her SDK ile SQL sorgularının nasıl yapılacağı hakkında bazı örnekler aşağıda verilmiştir:

bu belge geri kalanında, Azure Cosmos DB SQL sorguları yazmaya nasıl başlacağınız gösterilmektedir. SQL sorguları SDK ya da Azure portal aracılığıyla çalıştırılabilir.

örnek verileri Upload

SQL apı Cosmos DB hesabınızda, adlı bir kapsayıcı oluşturmak için Veri Gezgini açın Families . Kapsayıcı oluşturulduktan sonra, bulmak ve açmak için veri yapıları tarayıcısını kullanın. FamiliesKapsayıcıda Items kapsayıcının adının hemen altında seçeneğini görürsünüz. Bu seçeneği açtığınızda, ' yeni öğe ' oluşturmak için ekranın ortasında menü çubuğunda bir düğme görürsünüz. Bu özelliği, aşağıdaki JSON öğelerini oluşturmak için kullanacaksınız.

JSON öğeleri oluşturma

Aşağıdaki 2 JSON öğeleri, Andersen ve Wakefield aileleriyle ilgili belgelerdir. Bunlar, ebeveynler, alt öğeler, adresler ve kayıt bilgilerini içerir.

İlk öğede dizeler, sayılar, Boole değerleri, diziler ve iç içe geçmiş özellikler vardır:

{
  "id": "AndersenFamily",
  "lastName": "Andersen",
  "parents": [
     { "firstName": "Thomas" },
     { "firstName": "Mary Kay"}
  ],
  "children": [
     {
         "firstName": "Henriette Thaulow",
         "gender": "female",
         "grade": 5,
         "pets": [{ "givenName": "Fluffy" }]
     }
  ],
  "address": { "state": "WA", "county": "King", "city": "Seattle" },
  "creationDate": 1431620472,
  "isRegistered": true
}

İkinci öğe, ve givenName familyName yerine kullanır firstName lastName :

{
  "id": "WakefieldFamily",
  "parents": [
      { "familyName": "Wakefield", "givenName": "Robin" },
      { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
            { "givenName": "Goofy" },
            { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
         "givenName": "Lisa",
         "gender": "female",
         "grade": 8 }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

JSON öğelerini sorgulama

Azure Cosmos DB SQL sorgu dilinin bazı önemli yönlerini anlamak için JSON verilerinde birkaç sorgu deneyin.

Aşağıdaki sorgu, id alanın eşleştiği öğeleri döndürür AndersenFamily . SELECT *Sorgu olduğundan, sorgunun çıktısı tamamlanmış JSON öğesidir. Sözdizimi Seç hakkında daha fazla bilgi için bkz. select deyimleri.

    SELECT *
    FROM Families f
    WHERE f.id = "AndersenFamily"

Sorgu sonuçları şunlardır:

    [{
        "id": "AndersenFamily",
        "lastName": "Andersen",
        "parents": [
           { "firstName": "Thomas" },
           { "firstName": "Mary Kay"}
        ],
        "children": [
           {
               "firstName": "Henriette Thaulow", "gender": "female", "grade": 5,
               "pets": [{ "givenName": "Fluffy" }]
           }
        ],
        "address": { "state": "WA", "county": "King", "city": "Seattle" },
        "creationDate": 1431620472,
        "isRegistered": true
    }]

Aşağıdaki sorgu JSON çıkışını farklı bir şekle yeniden biçimlendirir. Sorgu, Family Seçili iki alana sahip yeni BIR JSON nesnesi Name ve City Adres şehri durum ile aynı olduğunda. "NY, NY" Bu durumda eşleşir.

    SELECT {"Name":f.id, "City":f.address.city} AS Family
    FROM Families f
    WHERE f.address.city = f.address.state

Sorgu sonuçları şunlardır:

    [{
        "Family": {
            "Name": "WakefieldFamily",
            "City": "NY"
        }
    }]

Aşağıdaki sorgu, aile içindeki alt öğelerin verilen tüm adlarını ( id WakefieldFamily şehre göre sıralanmış olan) döndürür.

    SELECT c.givenName
    FROM Families f
    JOIN c IN f.children
    WHERE f.id = 'WakefieldFamily'
    ORDER BY f.address.city ASC

Sonuçlar:

    [
      { "givenName": "Jesse" },
      { "givenName": "Lisa"}
    ]

Açıklamalar

yukarıdaki örneklerde Cosmos DB sorgu dilinin çeşitli yönleri gösterilmektedir:

  • SQL apı 'si JSON değerleri üzerinde çalıştığından, satır ve sütun yerine ağaç şeklindeki varlıklarla ilgilenir. Ağaç düğümlerine, Node1.Node2.Node3…..Nodem ansı SQL içindeki iki parçalı başvuruya benzer şekilde herhangi bir rastgele derinlikte başvurabilirsiniz <table>.<column> .

  • Sorgu dili şeless verilerle çalıştığından, tür sistemi dinamik olarak bağlanmalıdır. Aynı ifade farklı öğelerde farklı türler sağlayabilir. Bir sorgunun sonucu geçerli bir JSON değeridir, ancak sabit bir şema olması garanti edilmez.

  • Azure Cosmos DB yalnızca katı JSON öğelerini destekler. Tür sistemi ve ifadeleri yalnızca JSON türleriyle çalışacak şekilde kısıtlanmıştır. Daha fazla bilgi için bkz. JSON belirtimi.

  • Cosmos kapsayıcı, JSON öğelerinin şema içermeyen koleksiyonudur. Kapsayıcı öğeleri içindeki ve içindeki ilişkiler, birincil anahtar ve yabancı anahtar ilişkilerine göre değil, kapsama göre örtük olarak yakalanır. bu özellik, Azure Cosmos DB birleştirmelerdeaçıklanan öğe içi birleştirmeler için önemlidir.

Sonraki adımlar