Menyerap data dari Azure Cosmos DB ke Azure Data Explorer

Azure Data Explorer mendukung penyerapan data dari Azure Cosmos DB untuk NoSql menggunakan umpan perubahan. Koneksi data umpan perubahan Cosmos DB adalah alur penyerapan yang mendengarkan umpan perubahan Cosmos DB Anda dan menyerap data ke dalam tabel Data Explorer Anda. Umpan perubahan mendengarkan dokumen baru dan yang diperbarui tetapi tidak menghapus log. Untuk informasi umum tentang penyerapan data di Azure Data Explorer, lihat Gambaran umum penyerapan data Azure Data Explorer.

Setiap koneksi data mendengarkan kontainer Cosmos DB tertentu dan menyerap data ke dalam tabel tertentu (lebih dari satu koneksi dapat menyerap dalam satu tabel). Metode penyerapan mendukung penyerapan streaming (saat diaktifkan) dan penyerapan antrean.

Dalam artikel ini, Anda akan mempelajari cara menyiapkan koneksi data umpan perubahan Cosmos DB untuk menyerap data ke Azure Data Explorer dengan Identitas Terkelola Sistem. Tinjau pertimbangan sebelum Memulai.

Gunakan langkah-langkah berikut untuk menyiapkan konektor:

Langkah 1: Pilih tabel Azure Data Explorer dan konfigurasikan pemetaan tabelnya

Langkah 2: Membuat koneksi data Cosmos DB

Langkah 3: Uji koneksi data

Prasyarat

Langkah 1: Pilih tabel Azure Data Explorer dan konfigurasikan pemetaan tabelnya

Sebelum Membuat koneksi data, buat tabel tempat Anda akan menyimpan data yang diserap dan menerapkan pemetaan yang cocok dengan skema dalam kontainer Cosmos DB sumber. Jika skenario Anda memerlukan lebih dari pemetaan bidang sederhana, Anda dapat menggunakan kebijakan pembaruan untuk mengubah dan memetakan data yang diserap dari umpan perubahan Anda.

Berikut ini memperlihatkan contoh skema item dalam kontainer Cosmos DB:

{
    "id": "17313a67-362b-494f-b948-e2a8e95e237e",
    "name": "Cousteau",
    "_rid": "pL0MAJ0Plo0CAAAAAAAAAA==",
    "_self": "dbs/pL0MAA==/colls/pL0MAJ0Plo0=/docs/pL0MAJ0Plo0CAAAAAAAAAA==/",
    "_etag": "\"000037fc-0000-0700-0000-626a44110000\"",
    "_attachments": "attachments/",
    "_ts": 1651131409
}

Gunakan langkah-langkah berikut untuk membuat tabel dan menerapkan pemetaan tabel:

  1. Di antarmuka pengguna web Azure Data Explorer, dari menu navigasi kiri pilih Kueri, lalu pilih database tempat Anda ingin membuat tabel.

  2. Jalankan perintah berikut untuk membuat tabel yang disebut TestTable.

    .create table TestTable(Id:string, Name:string, _ts:long, _timestamp:datetime)
    
  3. Jalankan perintah berikut untuk membuat pemetaan tabel.

    Perintah memetakan properti kustom dari dokumen Cosmos DB JSON ke kolom dalam tabel TestTable , sebagai berikut:

    Properti Cosmos DB Kolom tabel Transformasi
    id Id Tidak ada
    nama Nama Tidak ada
    _Ts _ts Tidak ada
    _Ts _Timestamp DateTimeFromUnixSeconds Menggunakan untuk mengubah_ts (detik UNIX) ke _timestamp (datetime))

    Catatan

    Sebaiknya gunakan kolom tanda waktu berikut:

    • _ts: Gunakan kolom ini untuk menyesuaikan data dengan Cosmos DB.
    • _timestamp: Gunakan kolom ini untuk menjalankan filter waktu yang efisien dalam kueri Kusto Anda. Untuk informasi selengkapnya, lihat Praktik terbaik kueri.
    .create table TestTable ingestion json mapping "DocumentMapping"
    ```
    [
        {"column":"Id","path":"$.id"},
        {"column":"Name","path":"$.name"},
        {"column":"_ts","path":"$._ts"},
        {"column":"_timestamp","path":"$._ts", "transform":"DateTimeFromUnixSeconds"}
    ]
    ```
    

Mengubah dan memetakan data dengan kebijakan pembaruan

Jika skenario Anda memerlukan lebih dari pemetaan bidang sederhana, Anda dapat menggunakan kebijakan pembaruan untuk mengubah dan memetakan data yang diserap dari umpan perubahan Anda.

Kebijakan pembaruan adalah cara untuk mengubah data saat diserap ke dalam tabel Anda. Mereka ditulis dalam Bahasa Kueri Kusto dan dijalankan pada alur penyerapan. Mereka dapat digunakan untuk mengubah data dari penyerapan umpan perubahan Cosmos DB, seperti dalam skenario berikut:

  • Dokumen Anda berisi array yang akan lebih mudah dikueri jika diubah dalam beberapa baris menggunakan mv-expand operator .
  • Anda ingin memfilter dokumen. Misalnya, Anda dapat memfilter dokumen berdasarkan jenis menggunakan where operator.
  • Anda memiliki logika kompleks yang tidak dapat diwakili dalam pemetaan tabel.

Untuk informasi tentang cara membuat dan mengelola kebijakan pembaruan, lihat Perbarui gambaran umum kebijakan.

Langkah 2: Membuat koneksi data Cosmos DB

Anda dapat menggunakan metode berikut untuk membuat konektor data:

  1. Di portal Azure, buka halaman gambaran umum kluster Anda, lalu pilih tab Memulai.

  2. Pada petak peta Penyerapan data, pilih Buat koneksi> dataCosmos DB.

    Cuplikan layar tab Memulai, memperlihatkan opsi Buat koneksi data Cosmos DB.

  3. Di panel Cosmos DB Membuat koneksi data , isi formulir dengan informasi dalam tabel:

    Cuplikan layar panel koneksi data, memperlihatkan bidang formulir dengan nilai.

    Bidang Deskripsi
    Nama database Pilih database Azure Data Explorer tempat Anda ingin menyerap data.
    Nama koneksi data Tentukan nama untuk koneksi data.
    Langganan Pilih langganan yang berisi akun Cosmos DB NoSQL Anda.
    Akun Cosmos DB Pilih akun Cosmos DB tempat Anda ingin menyerap data.
    Database SQL Pilih database Cosmos DB tempat Anda ingin menyerap data.
    Kontainer SQL Pilih kontainer Cosmos DB tempat Anda ingin menyerap data.
    Nama tabel Tentukan nama tabel Azure Data Explorer yang ingin Anda serap datanya.
    Nama pemetaan Secara opsional, tentukan nama pemetaan yang akan digunakan untuk koneksi data.
  4. Secara opsional, di bawah bagian Pengaturan tingkat lanjut , lakukan hal berikut:

    1. Tentukan tanggal mulai pengambilan Peristiwa. Ini adalah waktu dari mana konektor akan mulai menyerap data. Jika Anda tidak menentukan waktu, konektor akan mulai menyerap data sejak Anda membuat koneksi data. Format tanggal yang direkomendasikan adalah standar ISO 8601 UTC, yang ditentukan sebagai berikut: yyyy-MM-ddTHH:mm:ss.fffffffZ.

    2. Pilih Ditetapkan pengguna lalu pilih identitas. Secara Default, identitas terkelola yang ditetapkan sistem digunakan oleh koneksi. Jika perlu, Anda dapat menggunakan identitas yang ditetapkan pengguna .

      Cuplikan layar panel koneksi data, memperlihatkan pengaturan Lanjutan.

  5. Pilih Buat untuk mengkrate koneksi data.

Langkah 3: Uji koneksi data

  1. Dalam kontainer Cosmos DB, sisipkan dokumen berikut:

    {
        "name":"Cousteau"
    }
    
  2. Di antarmuka pengguna web Azure Data Explorer, jalankan kueri berikut ini:

    TestTable
    

    Kumpulan hasil seharusnya terlihat seperti gambar berikut:

    Cuplikan layar panel hasil, memperlihatkan dokumen yang diserap.

Catatan

Azure Data Explorer memiliki kebijakan agregasi (batching) untuk penyerapan data antrean yang dirancang untuk mengoptimalkan proses penyerapan. Kebijakan batching default dikonfigurasi untuk menyegel batch setelah salah satu kondisi berikut berlaku untuk batch: waktu penundaan maksimum 5 menit, ukuran total satu GB, atau 1000 blob. Oleh karena itu, Anda mungkin mengalami latensi. Untuk informasi selengkapnya, lihat Kebijakan pembuatan batch. Untuk mengurangi latensi, konfigurasikan tabel Anda untuk mendukung streaming. Lihat kebijakan streaming.

Pertimbangan

Pertimbangan berikut berlaku untuk umpan perubahan Cosmos DB:

  • Umpan perubahan tidak mengekspos peristiwa penghapusan .

    Umpan perubahan Cosmos DB hanya menyertakan dokumen baru dan yang diperbarui. Jika Anda perlu mengetahui tentang dokumen yang dihapus, Anda dapat mengonfigurasi umpan Anda menggunakan penanda lunak untuk menandai dokumen Cosmos DB sebagai dihapus. Properti ditambahkan untuk memperbarui peristiwa yang menunjukkan apakah dokumen telah dihapus. Anda kemudian dapat menggunakan where operator dalam kueri Anda untuk memfilternya.

    Misalnya, jika Anda memetakan properti yang dihapus ke kolom tabel yang disebut IsDeleted, Anda bisa memfilter dokumen yang dihapus dengan kueri berikut:

    TestTable
    | where not(IsDeleted)
    
  • Umpan perubahan hanya mengekspos pembaruan terbaru dokumen.

    Untuk memahami pertimbangan kedua, periksa skenario berikut:

    Kontainer Cosmos DB berisi dokumen A dan B. Perubahan pada properti yang disebut foo diperlihatkan dalam tabel berikut:

    ID Dokumen Foo properti Kejadian Tanda waktu dokumen (_ts)
    A Merah Pembuatan 10
    B Biru Pembuatan 20
    A Oranye Pembaruan 30
    A Merah muda Pembaruan 40
    B Violet Pembaruan 50
    A Carmine Pembaruan 50
    B NeonBlue Pembaruan 70

    API umpan perubahan dijajaki oleh konektor data secara berkala, biasanya setiap beberapa detik. Setiap polling berisi perubahan yang terjadi dalam kontainer antar panggilan, tetapi hanya versi terbaru perubahan per dokumen.

    Untuk mengilustrasikan masalah ini, pertimbangkan urutan panggilan API dengan tanda waktu 15, 35, 55, dan 75 seperti yang ditunjukkan dalam tabel berikut:

    Tanda Waktu Panggilan API ID Dokumen Foo properti Tanda waktu dokumen (_ts)
    15 A Merah 10
    35 B Biru 20
    35 A Oranye 30
    55 B Violet 50
    55 A Carmine 60
    75 B NeonBlue 70

    Membandingkan hasil API dengan daftar perubahan yang dibuat dalam dokumen Cosmos DB, Anda akan melihat bahwa mereka tidak cocok. Peristiwa pembaruan untuk dokumen A, yang disorot dalam tabel perubahan pada tanda waktu 40, tidak muncul dalam hasil panggilan API.

    Untuk memahami mengapa peristiwa tidak muncul, kami akan memeriksa perubahan pada dokumen A antara panggilan API pada tanda waktu 35 dan 55. Di antara kedua panggilan ini, dokumen A berubah dua kali, sebagai berikut:

    ID Dokumen Foo properti Kejadian Tanda waktu dokumen (_ts)
    A Merah muda Pembaruan 40
    A Carmine Pembaruan 50

    Saat panggilan API pada tanda waktu 55 dilakukan, API umpan perubahan mengembalikan versi terbaru dokumen. Dalam hal ini, versi terbaru dokumen A adalah pembaruan pada tanda waktu 50, yang merupakan pembaruan untuk foo properti dari Pink ke Carmine.

    Karena skenario ini, konektor data mungkin melewatkan beberapa perubahan dokumen perantara. Misalnya, beberapa peristiwa mungkin terlewatkan jika layanan koneksi data tidak berfungsi selama beberapa menit, atau jika frekuensi perubahan dokumen lebih tinggi dari frekuensi polling API. Namun, status terbaru dari setiap dokumen diambil.

  • Menghapus dan membuat ulang kontainer Cosmos DB tidak didukung

    Azure Data Explorer melacak umpan perubahan dengan membuat titik pemeriksaan "posisi" yang ditempatinya di umpan. Ini dilakukan menggunakan token kelanjutan pada setiap partisi fisik kontainer. Saat kontainer dihapus/dibuat ulang, token kelanjutan tersebut tidak valid dan tidak direset: Anda harus menghapus dan membuat ulang koneksi data.

Perkiraan biaya

Berapa banyak penggunaan koneksi data Cosmos DB memengaruhi penggunaan Unit Permintaan (RU) kontainer Cosmos DB Anda?

Konektor memanggil API Umpan Perubahan Cosmos DB pada setiap partisi fisik kontainer Anda, hingga sekali sedetik. Biaya berikut dikaitkan dengan pemanggilan ini:

Biaya Deskripsi
Biaya tetap Biaya tetap sekitar 2 RU per partisi fisik setiap detik.
Biaya variabel Biaya variabel sekitar 2% dari RU yang digunakan untuk menulis dokumen, meskipun ini dapat bervariasi tergantung pada skenario Anda. Misalnya, jika Anda menulis 100 dokumen ke kontainer Cosmos DB, biaya penulisan dokumen tersebut adalah 1.000 RU. Biaya yang sesuai untuk menggunakan konektor untuk membaca dokumen tersebut adalah sekitar 2% biaya untuk menulisnya, sekitar 20 RU.