Bagikan melalui


Tampilan materialisasi di Azure Cosmos DB untuk Apache Cassandra (pratinjau)

BERLAKU UNTUK: Cassandra

Penting

Tampilan materialisasi di Azure Cosmos DB untuk Cassandra saat ini dalam pratinjau. Anda dapat mengaktifkan fitur ini menggunakan portal Azure. Pratinjau tampilan materialisasi ini disediakan tanpa perjanjian tingkat layanan. Saat ini, tampilan materialisasi tidak disarankan untuk beban kerja produksi. Fitur tertentu dari pratinjau ini mungkin tidak didukung atau mungkin memiliki kemampuan yang dibatasi. Untuk informasi selengkapnya, lihat ketentuan penggunaan tambahan untuk pratinjau Microsoft Azure.

Tampilan materialisasi, saat ditentukan, membantu menyediakan sarana untuk mengkueri tabel dasar secara efisien (atau kontainer di Azure Cosmos DB) dengan filter yang bukan kunci utama. Saat pengguna menulis ke tabel dasar, tampilan materialisasi dibangun secara otomatis di latar belakang. Tampilan ini dapat memiliki kunci primer yang berbeda untuk pencarian yang efisien. Tampilan juga hanya akan berisi kolom yang diproyeksikan secara eksplisit dari tabel dasar. Tampilan ini akan menjadi tabel baca-saja.

Anda dapat mengkueri penyimpanan kolom tanpa menentukan kunci partisi dengan menggunakan indeks sekunder. Namun, kueri tidak akan efektif untuk kolom dengan kardinalitas tinggi atau rendah. Kueri dapat memindai semua data untuk kumpulan hasil kecil. Kueri semacam itu akhirnya mahal karena akhirnya secara tidak sengaja dijalankan sebagai kueri lintas partisi.

Dengan tampilan materialisasi, Anda dapat:

  • Gunakan sebagai tabel pencarian atau pemetaan untuk mempertahankan pemindaian lintas partisi yang jika tidak akan menjadi kueri mahal.
  • Berikan predikat kondisional berbasis SQL untuk mengisi hanya kolom dan data tertentu yang memenuhi pra-kondisi.
  • Buat tampilan real time yang menyederhanakan skenario berbasis peristiwa yang umumnya disimpan sebagai koleksi terpisah menggunakan pemicu umpan perubahan.

Keuntungan tampilan materialisasi

Tampilan materialisasi memiliki banyak manfaat yang mencakup, tetapi tidak terbatas pada:

  • Anda dapat menerapkan denormalisasi sisi server menggunakan tampilan materialisasi. Dengan denormalisasi sisi server, Anda dapat menghindari beberapa tabel independen dan denormalisasi komputasi kompleks dalam aplikasi klien.
  • Tampilan materialisasi secara otomatis memperbarui tampilan agar konsisten dengan tabel dasar. Pembaruan otomatis ini mengabstraksi tanggung jawab aplikasi klien Anda biasanya akan menerapkan logika kustom untuk melakukan penulisan ganda ke tabel dasar dan tampilan.
  • Tampilan materialisasi mengoptimalkan performa baca dengan membaca dari satu tampilan.
  • Anda dapat menentukan throughput untuk tampilan materialisasi secara independen.
  • Anda dapat mengonfigurasi lapisan penyusun tampilan materialisasi untuk memetakan kebutuhan Anda untuk menghidrasi tampilan.
  • Tampilan materialisasi meningkatkan performa tulis karena operasi tulis hanya perlu ditulis ke tabel dasar.
  • Selain itu, implementasi Azure Cosmos DB dari tampilan materialisasi didasarkan pada model penarikan. Implementasi ini tidak memengaruhi performa tulis.

Mulai menggunakan tampilan materialisasi

Buat API baru untuk akun Cassandra dengan menggunakan Azure CLI untuk mengaktifkan fitur tampilan materialisasi baik dengan perintah asli atau operasi REST API.

  1. Masuk ke portal Azure.

  2. Navigasikan ke API Anda untuk akun Cassandra.

  3. Di menu sumber daya, pilih Pengaturan.

  4. Di bagian Pengaturan , pilih Tampilan Terwujud untuk Cassandra API (Pratinjau).

  5. Dalam dialog baru, pilih Aktifkan untuk mengaktifkan fitur ini untuk akun ini.

    Cuplikan layar fitur Tampilan Materialisasi diaktifkan di portal Azure.

Di balik layanan

API untuk Cassandra menggunakan lapisan komputasi pembangun tampilan materialisasi untuk mempertahankan tampilan.

Anda mendapatkan fleksibilitas untuk mengonfigurasi instans komputasi pembuat tampilan berdasarkan latensi dan persyaratan jeda Anda untuk menghidrasi tampilan. Dari titik tribun teknis, lapisan komputasi ini membantu mengelola koneksi antar partisi dengan cara yang lebih efisien bahkan ketika ukuran data besar dan jumlah partisi tinggi.

Kontainer komputasi dibagikan di antara semua tampilan materialisasi dalam akun Azure Cosmos DB. Setiap kontainer komputasi yang disediakan menghasilkan beberapa tugas yang membaca umpan perubahan dari partisi tabel dasar dan menulis data ke tampilan materialisasi target. Kontainer komputasi mengubah data per definisi tampilan materialisasi untuk setiap tampilan materialisasi di akun.

Membuat penyusun tampilan materialisasi

Buat penyusun tampilan materialisasi untuk mengubah data secara otomatis dan menulis ke tampilan materialisasi.

  1. Masuk ke portal Azure.

  2. Navigasikan ke API Anda untuk akun Cassandra.

  3. Di menu sumber daya, pilih Penyusun Tampilan Terwujud.

  4. Pada halaman Penyusun Tampilan Terwujud, konfigurasikan SKU dan jumlah instans untuk penyusun.

    Catatan

    Opsi dan halaman menu sumber daya ini hanya akan muncul ketika fitur Tampilan Terwujud diaktifkan untuk akun tersebut.

  5. Pilih Simpan.

Membuat tampilan materialisasi

Setelah akun dan Materialized View Builder disiapkan, Anda harus dapat membuat tampilan Materialisasi menggunakan CQLSH.

Catatan

Jika Anda belum menginstal alat CQLSH mandiri, lihat menginstal Alat CQLSH. Anda juga harus memperbarui string koneksi Anda di alat ini.

Berikut adalah beberapa contoh perintah untuk membuat tampilan materialisasi:

  1. Pertama, buat nama uprofilekeyspace .

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Selanjutnya, buat tabel bernama user dalam keyspace.

    CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
    
  3. Sekarang, buat tampilan materialisasi bernama user_by_bcity dalam keyspace yang sama. Tentukan, menggunakan kueri, bagaimana data diproyeksikan ke dalam tampilan dari tabel dasar.

    CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS 
    SELECT
        user_id,
        user_name,
        user_bcity 
    FROM
        uprofile.USER 
    WHERE
        user_id IS NOT NULL 
        AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
    
  4. Sisipkan baris ke dalam tabel dasar.

    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            101, 'johnjoe', 'New York' 
        );
    
    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            102, 'james', 'New York' 
        );
    
  5. Mengkueri tampilan materialisasi.

    SELECT * FROM user_by_bcity; 
    
  6. Amati output dari tampilan materialisasi.

     user_bcity | user_id | user_name 
    ------------+---------+----------- 
       New York |     101 |   johnjoe 
       New York |     102 |     james 
    
    (2 rows) 
    

Secara opsional, Anda juga dapat menggunakan penyedia sumber daya untuk membuat atau memperbarui tampilan materialisasi.

Batasan saat ini

Ada beberapa batasan dengan API untuk implementasi pratinjau Cassandra dari tampilan materialisasi:

  • Tampilan materialisasi tidak dapat dibuat pada tabel yang ada sebelum dukungan untuk tampilan materialisasi diaktifkan pada akun. Untuk menggunakan tampilan materialisasi, buat tabel baru setelah fitur diaktifkan.
  • Untuk klausa definisi WHERE tampilan materialisasi, hanya IS NOT NULL filter yang saat ini diizinkan.
  • Setelah tampilan materialisasi dibuat terhadap tabel dasar, ALTER TABLE ADD operasi tidak diizinkan pada skema tabel dasar. ALTER TABLE APP hanya diperbolehkan jika tidak ada tampilan materialisasi yang dipilih * dalam definisinya.
  • Ada batasan ukuran kunci partisi (2 Kb) dan panjang total ukuran kunci pengklusteran (1 Kb). Jika batas ukuran ini terlampaui, pesan yang bertanggung jawab akan berakhir dalam antrean pesan racun.
  • Jika tabel dasar memiliki jenis yang ditentukan pengguna (UDT) dan definisi tampilan materialisasi memiliki SELECT * FROM atau memiliki UDT di salah satu kolom yang diproyeksikan, pembaruan UDT tidak diizinkan di akun.
  • Tampilan materialisasi mungkin menjadi tidak konsisten dengan tabel dasar untuk beberapa baris setelah failover regional otomatis. Untuk menghindari ketidakkonsistensian ini, bangun kembali tampilan materialisasi setelah failover.
  • Membuat instans penyusun tampilan materialisasi dengan 32 core tidak didukung. Jika diperlukan, Anda dapat membuat beberapa instans penyusun dengan jumlah core yang lebih kecil.

Selain batasan di atas, pertimbangkan batasan tambahan berikut:

  • Zona ketersediaan
    • Tampilan materialisasi tidak dapat diaktifkan pada akun yang memiliki wilayah yang diaktifkan zona ketersediaan.
    • Menambahkan wilayah baru dengan zona ketersediaan tidak didukung setelah enableMaterializedViews diatur ke true pada akun.
  • Pencadangan dan pemulihan berkala
    • Tampilan materialisasi tidak dipulihkan secara otomatis dengan proses pemulihan. Anda harus membuat ulang tampilan materialisasi setelah proses pemulihan selesai. Kemudian, Anda harus mengonfigurasi enableMaterializedViews pada akun yang dipulihkan sebelum membuat tampilan dan penyusun terwujud lagi.
  • Apache Cassandra
    • Menentukan kebijakan resolusi konflik pada tampilan materialisasi tidak diizinkan.
    • Operasi tulis tidak diizinkan pada tampilan materialisasi.
    • Kueri lintas dokumen dan penggunaan fungsi agregat tidak didukung pada tampilan materialisasi.
    • Skema tampilan materialisasi tidak dapat dimodifikasi setelah pembuatan.
    • Menghapus tabel dasar tidak diperbolehkan jika setidaknya satu tampilan materialisasi ditentukan di atasnya. Semua tampilan harus terlebih dahulu dihapus dan kemudian tabel dasar dapat dihapus.
    • Menentukan tampilan materialisasi pada kontainer dengan kolom statis tidak diizinkan.

Langkah berikutnya