Mulai menggunakan kueri SQL

BERLAKU UNTUK: SQL API

Di akun API SQL Microsoft Azure Cosmos DB, ada dua cara untuk membaca data:

Titik baca - Anda dapat mencari kunci/nilai pada ID item tunggal dan kunci partisi. Kombinasi ID item dan tombol partisi adalah kuncinya dan item itu sendiri adalah nilainya. Untuk dokumen 1 KB, titik baca biasanya menggunakan 1 unit permintaan dengan latensi di bawah 10 ms. Bacaan titik mengembalikan satu item utuh, bukan item parsial atau bidang tertentu.

Berikut adalah beberapa contoh cara melakukan Titik baca dengan setiap SDK:

Kueri SQL - Anda dapat mengkuerikan data dengan menulis kueri menggunakan Bahasa Kueri Terstruktur (SQL) sebagai bahasa kueri JavaScript Object Notation. Kueri selalu menelan biaya setidaknya 2.3 unit permintaan dan, secara umum, akan memiliki latensi yang lebih tinggi dan lebih variabel daripada titik baca. Kueri dapat mengembalikan banyak item.

Beban kerja baca paling berat di Microsoft Azure Cosmos DB menggunakan kombinasi titik baca dan kueri SQL. Jika Anda hanya perlu membaca satu item, titik baca lebih murah dan lebih cepat daripada kueri. Titik baca tidak perlu menggunakan mesin kueri untuk mengakses data dan dapat membaca data secara langsung. Tentunya, tidak mungkin bagi semua beban kerja untuk membaca data secara eksklusif menggunakan titik baca, sehingga dukungan SQL sebagai bahasa kueri dan pengindeksan skema-agnostik memberikan cara yang lebih fleksibel untuk mengakses data Anda.

Berikut adalah beberapa contoh cara melakukan Kueri SQL dengan setiap SDK:

Sisa dokumen ini menunjukkan cara mulai menuliskan kueri SQL di Microsoft Azure Cosmos DB. Kueri SQL dapat dijalankan melalui portal Microsoft Azure atau SDK.

Mengunggah data sampel

Di akun SQL API Microsoft Azure Cosmos DB Anda, buka Data Explorer untuk membuat kontainer yang disebut Families. Setelah kontainer dibuat, gunakan browser struktur data, untuk menemukan dan membukanya. Dalam kontainer Families, Anda akan melihat opsi Items tepat di bawah nama kontainer. Buka opsi ini dan Anda akan melihat sebuah tombol, pada bilah menu di tengah layar, untuk membuat 'Item Baru'. Anda akan menggunakan fitur ini untuk membuat item JavaScript Object Notation di bawah ini.

Membuat item JavaScript Object Notation

Sebanyak 2 item JavaScript Object Notation berikut adalah dokumen tentang keluarga Andersen dan Wakefield. Mereka termasuk orang tua, anak-anak dan hewan peliharaannya, alamat, dan informasi pendaftaran.

Item pertama memiliki string, angka, Boolean, array, dan properti bertumpuk:

{
  "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
}

Item kedua menggunakan givenName dan familyName, bukan firstName dan 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
}

Mengkueri item JavaScript Object Notation

Cobalah beberapa kueri terhadap data JSON untuk memahami beberapa aspek utama dari bahasa kueri SQL Microsoft Azure Cosmos DB.

Kueri berikut mengembalikan item yang cocok di mana bidang id cocok dengan AndersenFamily. Karena ini adalah SELECT *kueri, output kuerinya adalah item JSON lengkap. Untuk informasi selengkapnya tentang sintaks SELECT, lihat Pernyataan SELECT.

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

Hasil kuerinya adalah:

    [{
        "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
    }]

Kueri berikut ini menformat ulang output JavaScript Object Notation menjadi bentuk yang berbeda. Kueri memproyeksikan objek Family JSON baru dengan dua bidang yang dipilih, Name dan City, jika kota alamat sama dengan negara bagian. "NY, NY" cocok dengan kasus ini.

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

Hasil kuerinya adalah:

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

Kueri berikut mengembalikan semua nama anak yang diberikan dalam keluarga yang id cocok WakefieldFamily, dipesan berdasarkan kota.

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

Hasilnya adalah:

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

Keterangan

Contoh sebelumnya menunjukkan beberapa aspek bahasa kueri Microsoft Azure Cosmos DB:

  • Karena API SQL berfungsi dengan nilai JSON, API ini berhubungan dengan entitas berbentuk pohon, bukan baris dan kolom. Anda dapat merujuk ke node pohon pada kedalaman sewenang-wenang, seperti Node1.Node2.Node3…..Nodem, yang mirip dengan referensi dua bagian dari <table>.<column> dalam SQL ANSI.

  • Karena bahasa kueri berfungsi dengan data tanpa skema, sistem jenis harus terikat secara dinamis. Ekspresi yang sama dapat menghasilkan jenis yang berbeda pada item yang berbeda. Hasil kuerinya adalah nilai JSON yang valid, tetapi tidak dijamin sebagai skema tetap.

  • Microsoft Azure Cosmos DB hanya mendukung item JSON yang ketat. Sistem jenis dan ekspresi dibatasi hanya untuk menangani jenis JSON. Untuk informasi selengkapnya, lihat spesifikasi JSON.

  • Kontainer Cosmos adalah koleksi item JavaScript Object Notation bebas skema. Hubungannya dalam dan di seluruh item kontainer secara implisit ditangkap oleh penahanan, bukan oleh kunci utama dan hubungan kunci asing. Fitur ini penting untuk gabungan intra-item yang dijelaskan dalam Gabungan di Microsoft Azure Cosmos DB.

Langkah berikutnya