Bagikan melalui


Pemartisian kustom di Azure Synapse Link untuk Azure Cosmos DB

BERLAKU UNTUK: NoSQL MongoDB Gremlin

Pemartisian kustom memungkinkan Anda untuk mempartisi data penyimpanan analitik, pada bidang yang biasanya digunakan sebagai filter dalam kueri analitis, yang menghasilkan peningkatan performa kueri.

Dalam artikel ini, Anda mempelajari cara mempartisi data Anda di penyimpanan analitik Azure Cosmos DB menggunakan kunci yang penting untuk beban kerja analitik Anda. Ini juga menjelaskan cara memanfaatkan performa kueri yang ditingkatkan dengan pemangkasan partisi. Anda juga mempelajari bagaimana pemartisian kustom meningkatkan performa kueri saat beban kerja Anda memiliki sejumlah besar pembaruan atau penghapusan.

Catatan

Akun dan kontainer Azure Cosmos DB harus mengaktifkan Azure Synapse Link untuk memanfaatkan partisi kustom.

Bagaimana cara kerjanya?

Pemartisian penyimpanan analitik tidak tergantung pada partisi di penyimpanan transaksional. Secara default, penyimpanan analitik tidak dipartisi. Jika Anda ingin sering mengkueri penyimpanan analitik berdasarkan bidang seperti Tanggal, Waktu, Kategori, dll. Anda dapat menggunakan pemartisian kustom untuk membuat penyimpanan yang dipartisi terpisah berdasarkan kunci ini. Anda dapat memilih satu bidang atau kombinasi bidang dari kumpulan data Anda sebagai kunci partisi penyimpanan analitik.

Anda dapat memicu partisi dari buku catatan Azure Synapse Spark menggunakan Azure Synapse Link. Anda dapat menjadwalkannya untuk berjalan sebagai pekerjaan latar belakang, sekali atau dua kali sehari tetapi dapat dieksekusi lebih sering, jika diperlukan.

Catatan

Penyimpanan yang dipartisi merujuk ke akun penyimpanan utama ADLS Gen2 yang tertaut dengan ruang kerja Azure Synapse.

Arsitektur penyimpanan yang dipartisi di Azure Synapse Link untuk Azure Cosmos DB

Penyimpanan yang dipartisi berisi data analitis Azure Cosmos DB sampai terakhir kali Anda menjalankan pekerjaan pemartisian. Saat Anda mengkueri data analitik menggunakan filter kunci partisi, Synapse Link secara otomatis menggabungkan data penyimpanan yang dipartisi dengan perubahan terbaru di penyimpanan analitis. Cara ini akan memberi Anda hasil terbaru. Meskipun menggabungkan data sebelum melakukan kueri, delta tidak ditulis kembali ke penyimpanan yang dipartisi. Saat delta antara data di penyimpanan analitis dan penyimpanan yang dipartisi melebar, waktu kueri pada data yang dipartisi dapat bervariasi. Memicu pekerjaan pemartisian lebih sering mengurangi delta ini. Setiap kali Anda menjalankan pekerjaan partisi, hanya perubahan inkremental di penyimpanan analitik yang diproses, alih-alih himpunan data lengkap.

Kapan harus digunakan?

Menggunakan penyimpanan yang dipartisi bersifat opsional saat mengkueri data analitis di Azure Cosmos DB. Anda dapat langsung mengkueri data yang sama menggunakan Synapse Link dengan penyimpanan analitis yang ada. Anda mungkin ingin mengaktifkan penyimpanan yang dipartisi jika Anda memiliki persyaratan berikut:

  • Filter kueri analitik umum yang dapat digunakan sebagai kolom partisi
  • Kolom partisi kardinalitas rendah
  • Kolom partisi mendistribusikan data secara merata di seluruh partisi
  • Volume operasi pembaruan atau penghapusan yang tinggi
  • Penyerapan data lambat

Jika Anda mengkueri data langsung menggunakan filter kueri yang berbeda dari kunci partisi, kami sarankan Anda mengkueri penyimpanan analitik secara langsung.

Keuntungan

Mengurangi pemindaian data dari pemangkasan partisi

Karena data yang sesuai dengan setiap kunci partisi unik dikolokasikan di penyimpanan yang dipartisi, saat Anda menggunakan tombol partisi sebagai filter kueri, eksekusi kueri dapat memangkas data yang mendasarinya dan hanya memindai data yang diperlukan. Dengan memindai data terbatas, pemangkasan partisi meningkatkan performa kueri analitis.

Fleksibilitas untuk mempartisi data analitis

Anda dapat memiliki beberapa strategi partisi untuk wadah penyimpanan analitis tertentu. Anda dapat menggunakan tombol partisi komposit atau terpisah berdasarkan persyaratan kueri Anda.

Peningkatan performa kueri

Selain perbaikan kueri dari pemangkasan partisi, pemartisian kustom juga menghasilkan peningkatan performa kueri untuk beban kerja berikut:

  • Memperbarui/menghapus beban kerja yang berat - Alih-alih melacak beberapa versi catatan di penyimpanan analitis dan memuatnya selama setiap eksekusi kueri, penyimpanan yang dipartisi hanya berisi versi data terbaru. Kemampuan ini secara signifikan meningkatkan performa kueri saat Anda telah memperbarui/menghapus beban kerja berat.

  • Beban kerja konsumsi data yang lambat - Partisi memadatkan data analitis dan karenanya, jika beban kerja Anda memiliki konsumsi data yang lambat, pemadatan ini dapat menghasilkan performa kueri yang lebih baik

Jaminan transaksional

Penting untuk dicatat bahwa partisi kustom memastikan jaminan transaksional lengkap. Jalur kueri tidak diblokir saat eksekusi partisi sedang berlangsung. Setiap eksekusi kueri membaca data yang dipartisi dari pemartisian terakhir yang berhasil dilakukan. Eksekusi kueri membaca data terbaru dari penyimpanan analitis, yang memastikan bahwa kueri selalu mengembalikan data terbaru yang tersedia saat menggunakan penyimpanan yang dipartisi.

Keamanan

Jika Anda mengonfigurasi titik akhir privat terkelola untuk penyimpanan analitik Anda, sebaiknya tambahkan titik akhir privat terkelola untuk penyimpanan yang dipartisi juga. Penyimpanan yang dipartisi adalah akun penyimpanan utama yang terkait dengan ruang kerja Synapse Anda.

Demikian pula, jika Anda mengonfigurasi kunci yang dikelola pelanggan di penyimpanan analitis, Anda harus langsung mengaktifkannya di akun penyimpanan utama ruang kerja Synapse, yang merupakan penyimpanan yang dipartisi juga.

Strategi partisi

Anda dapat menggunakan satu atau beberapa kunci partisi untuk data analitis Anda. Jika Anda menggunakan beberapa kunci partisi, berikut adalah beberapa rekomendasi tentang cara mempartisi data:

  • Menggunakan kunci komposit:

    Katakanlah, Anda ingin sering mengkueri berdasarkan Key1 dan Key2.

    Misalnya, "Kueri untuk semua catatan di mana ReadDate = '2021-10-08' dan Lokasi = 'Sydney'".

    Dalam hal ini, menggunakan kunci komposit lebih efisien, untuk mencari semua rekaman yang cocok dengan ReadDate dan rekaman yang cocok dengan Lokasi dalam ReadDate tersebut.

    Sampel opsi konfigurasi:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Sekarang dapat mengkueri berdasarkan filter "Lokasi":

    • Anda mungkin ingin meminta penyimpanan analitis secara langsung. Penyimpanan yang dipartisi memindai semua rekaman dengan ReadDate terlebih dahulu lalu berdasarkan Lokasi. Jadi, tergantung pada beban kerja dan kardinalitas data analitis Anda, Anda mungkin mendapatkan hasil yang lebih baik dengan menanyakan penyimpanan analitis secara langsung.
    • Anda juga dapat menjalankan pekerjaan partisi lain untuk juga partisi berdasarkan 'Lokasi' di penyimpanan partisi yang sama.
  • Menggunakan beberapa tombol secara terpisah:

    Katakanlah, Anda ingin sering mengkueri kadang-kadang berdasarkan 'ReadDate' dan lain waktu, berdasarkan 'Lokasi'.

    Contohnya,

    • Kueri untuk semua catatan di mana ReadDate = ‘2021-10-08’
    • Kueri untuk semua catatan di mana Lokasi = ‘Sydney’

    Jalankan dua pekerjaan partisi dengan tombol partisi seperti yang didefinisikan di bawah ini untuk skenario ini:

    Pekerjaan 1:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Pekerjaan 2:

    .option("spark.cosmos.asns.partition.keys", "Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Perhatikan bahwa sekarang tidak efisien untuk sering mengkueri berdasarkan filter "ReadDate" dan "Lokasi" bersama-sama, pada partisi di atas. Kunci komposit memungkinkan performa kueri yang lebih baik dalam hal ini.

Batasan

  • Pemartisian kustom hanya tersedia untuk Azure Synapse Spark. Pemartisian kustom saat ini tidak didukung untuk kumpulan SQL tanpa server.

  • Saat ini, penyimpanan yang dipartisi hanya dapat merujuk ke akun penyimpanan utama yang terkait dengan ruang kerja Synapse. Memilih akun penyimpanan kustom tidak didukung pada saat ini.

  • Pemartisian kustom hanya tersedia untuk API untuk NoSQL di Azure Cosmos DB. API untuk MongoDB, Gremlin, dan Cassandra sedang dalam pratinjau saat ini.

Harga

Selain harga Azure Synapse Link, Anda dikenakan biaya berikut saat menggunakan partisi kustom:

  • Anda ditagih untuk menggunakan kumpulan Synapse Apache Spark saat menjalankan pekerjaan pemartisian di penyimpanan analitis.

  • Data yang dipartisi disimpan di akun Azure Data Lake Storage Gen2 utama yang terkait dengan ruang kerja Azure Synapse Analytics. Anda dikenakan biaya yang terkait dengan penggunaan penyimpanan dan transaksi ADLS Gen2. Biaya ini ditentukan oleh penyimpanan yang dibutuhkan oleh data analitis partisi dan data yang diproses untuk kueri analitis di Synapse. Untuk informasi selengkapnya tentang harga, lihat halaman harga Azure Data Lake Storage.

Tanya jawab umum

Seberapa sering saya harus menjalankan pekerjaan pemartisian kustom?

Ada beberapa faktor seperti volume data bertahap, persyaratan latensi kueri dll. yang menentukan seberapa sering Anda dapat menjalankan pekerjaan partisi kustom. Pemartisiap dapat dijalankan sekali sehari atau sekali dalam setiap beberapa jam. Anda mungkin ingin menjadwalkan pekerjaan pemartisian lebih sering jika volume data yang masuk tinggi dan latensi kueri yang diharapkan rendah. Anda juga harus terlebih dahulu mengumpulkan data inkremental di penyimpanan analitis agar pemangkasan partisi menjadi efektif.

Apakah hasil kueri menyertakan data terbaru saat eksekusi pekerjaan pemartisian sedang berlangsung?

Ya, pemartisian kustom memberikan jaminan transaksional lengkap. Jadi, hasil kueri kapan saja menggabungkan data partisi yang ada dengan data ekor yang mengembalikan himpunan data penyimpanan analitis terbaru.

Apakah pemartisian kustom menggunakan autentikasi layanan tertaut di Azure Synapse Analytics?

Ya, autentikasi layanan tertaut dapat digunakan untuk pemartisian penyimpanan analitis.

Apakah saya dapat mengubah tombol partisi untuk kontainer tertentu di lain waktu?

Ya, kunci pemartisian untuk kontainer yang diberikan dapat diubah dan definisi kunci partisi baru akan membuat penyimpanan partisi baru.

Catatan

Definisi kunci partisi adalah bagian dari jalur penyimpanan yang dipartisi.

Apakah tombol partisi yang berbeda dapat mengarah ke BasePath yang sama?

Ya, Anda dapat menentukan beberapa tombol partisi pada penyimpanan partisi yang sama seperti di bawah ini:

.option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \

Langkah berikutnya

Untuk mempelajari lebih lanjut, lihat dokumen berikut ini: