Arsitektur Azure Synapse SQL
Artikel ini menjelaskan komponen arsitektur Synapse SQL. Ini juga menjelaskan bagaimana Azure Synapse SQL menggabungkan kemampuan pemrosesan kueri terdistribusi dengan Azure Storage untuk mencapai performa dan skalabilitas tinggi.
Komponen arsitektur Synapse SQL
Synapse SQL menggunakan arsitektur peluasan skala untuk mendistribusikan pemrosesan data komputasi di beberapa simpul. Komputasi terpisah dari penyimpanan, yang memungkinkan Anda untuk menskalakan komputasi data secara independen di dalam sistem Anda.
Untuk kumpulan SQL khusus, unit skala adalah abstraksi daya komputasi yang dikenal sebagai unit gudang data.
Untuk kumpulan SQL tanpa server, dengan keadaan tanpa server, penskalaan dilakukan secara otomatis untuk mengakomodasi persyaratan sumber daya kueri. Seiring berubahnya topologi dari waktu ke waktu dengan menambahkan, menghapus simpul atau failover, ini beradaptasi dengan perubahan dan memastikan kueri Anda memiliki sumber daya yang cukup dan berhasil diselesaikan. Misalnya, gambar berikut menunjukkan kumpulan SQL tanpa server menggunakan empat simpul komputasi untuk menjalankan kueri.
Synapse SQL menggunakan arsitektur berbasis simpul. Aplikasi menyambungkan dan mengeluarkan perintah T-SQL ke simpul Kontrol, yang merupakan titik masuk tunggal untuk Synapse SQL.
Simpul Kontrol Azure Synapse SQL menggunakan mesin kueri terdistribusi untuk mengoptimalkan kueri untuk pemrosesan paralel, dan kemudian meneruskan operasi ke simpul Komputasi agar pekerjaan dapat dilakukan secara paralel.
Simpul Kontrol kumpulan SQL tanpa server menggunakan mesin Pemrosesan Kueri Terdistribusi (DQP) untuk mengoptimalkan dan mengatur eksekusi kueri pengguna yang didistribusikan dengan membaginya menjadi kueri yang lebih kecil yang akan dieksekusi pada simpul Komputasi. Setiap kueri kecil disebut tugas dan mewakili unit eksekusi terdistribusi. Kueri ini membaca file dari penyimpanan, menggabungkan hasil dari tugas, grup, atau data pesanan lain yang diambil dari tugas lain.
Simpul Komputasi menyimpan semua data pengguna pada Azure Storage dan menjalankan kueri paralel. Layanan Pergerakan Data (Data Movement Service/DMS) adalah layanan internal tingkat sistem yang memindahkan data ke seluruh simpul sesuai kebutuhan untuk menjalankan kueri secara paralel dan mengembalikan hasil yang akurat.
Dengan penyimpanan dan komputasi yang dipisahkan, saat menggunakan Synapse SQL seseorang dapat memperoleh keuntungan dari ukuran daya komputasi independen terlepas dari kebutuhan penyimpanan Anda. Untuk kumpulan SQL tanpa server, penskalaan dilakukan secara otomatis, sedangkan untuk kumpulan SQL khusus dapat:
- Kembangkan atau kecilkan daya komputasi, di dalam kumpulan SQL khusus, tanpa memindahkan data.
- Jeda kapasitas komputasi sambil membiarkan data tetap utuh sehingga Anda hanya membayar penyimpanan.
- Lanjutkan kapasitas komputasi selama jam operasional.
Azure Storage
Synapse SQL menggunakan Azure Storage untuk menjaga keamanan data pengguna Anda. Karena data Anda disimpan dan dikelola oleh Azure Storage, ada biaya terpisah untuk konsumsi penyimpanan Anda.
Kumpulan SQL tanpa server memungkinkan Anda untuk meminta file data lake, sementara kumpulan SQL khusus memungkinkan Anda untuk membuat kueri dan menelan data dari file data lake. Ketika data tercerna ke dalam kumpulan SQL khusus, data dipecah ke dalam distribusi untuk mengoptimalkan performa sistem. Anda dapat memilih pola pemecahan yang akan digunakan untuk mendistribusikan data saat Anda menentukan tabel. Pola pemecahan ini didukung oleh:
- Hash
- Round Robin
- REPLIKASI
Simpul Kontrol
Simpul Kontrol adalah otak dari arsitektur. Ini adalah ujung depan yang berinteraksi dengan semua aplikasi dan koneksi.
Di Synapse SQL, mesin kueri terdistribusi berjalan pada simpul Kontrol untuk mengoptimalkan dan mengoordinasikan kueri paralel. Saat Anda mengirimkan kueri T-SQL ke kumpulan SQL khusus, simpul Kontrol mengubahnya menjadi kueri yang berjalan terhadap setiap distribusi secara paralel.
Dalam kumpulan SQL tanpa server, mesin DQP berjalan pada simpul Kontrol untuk mengoptimalkan dan mengoordinasikan eksekusi kueri pengguna yang didistribusikan dengan membaginya menjadi kueri yang lebih kecil yang akan dieksekusi pada simpul Komputasi. Ini juga menetapkan set file yang akan diproses oleh setiap simpul.
Simpul Komputasi
Simpul Komputasi menyediakan daya komputasi.
Dalam kumpulan SQL khusus, distribusi memetakan ke simpul Komputasi untuk diproses. Saat Anda membayar lebih banyak sumber daya komputasi, kumpulan akan memetakan ulang distribusi ke simpul Komputasi yang tersedia. Jumlah simpul komputasi berkisar antara 1 hingga 60, dan ditentukan oleh tingkat layanan untuk Synapse SQL. Setiap simpul Komputasi memiliki ID simpul yang terlihat dalam tampilan sistem. Anda dapat melihat ID simpul Komputasi dengan mencari kolom simpul_id dalam tampilan sistem dengan nama awal sys.pdw_nodes. Untuk daftar tampilan sistem ini, lihat Tampilan sistem Synapse SQL.
Dalam kumpulan SQL tanpa server, setiap simpul Komputasi diberi tugas dan set file untuk menjalankan tugas. Tugas merupakan unit eksekusi kueri terdistribusi, yang sebenarnya merupakan bagian dari kueri yang dikirimkan pengguna. Penskalaan otomatis berlaku untuk memastikan simpul Komputasi yang cukup telah digunakan untuk menjalankan kueri pengguna.
Layanan Pemindahan Data
Data Movement Service (DMS) adalah teknologi pengangkut data dalam kumpulan SQL khusus yang mengoordinasikan pergerakan data di antara simpul Komputasi. Beberapa kueri memerlukan pergerakan data untuk memastikan kueri paralel memberikan hasil yang akurat. Ketika pergerakan data diperlukan, DMS memastikan data yang tepat sampai ke lokasi yang tepat.
Distribusi
Distribusi adalah unit penyimpanan dan pemrosesan dasar untuk kueri paralel yang berjalan pada data terdistribusi dalam kumpulan SQL khusus. Ketika kumpulan SQL khusus menjalankan kueri, pekerjaan dibagi menjadi 60 kueri yang lebih kecil dan berjalan secara paralel.
Setiap 60 kueri yang lebih kecil tersebut berjalan pada salah satu distribusi data. Setiap simpul Komputasi mengelola satu atau sebagian dari 60 distribusi tersebut. Kumpulan SQL khusus dengan sumber daya komputasi maksimum memiliki satu distribusi per simpul Komputasi. Kumpulan SQL khusus dengan sumber daya komputasi minimum memiliki semua distribusi pada satu simpul komputasi.
Tabel terdistribusi hash
Tabel terdistribusi hash dapat menjalankan performa kueri tertinggi untuk gabungan dan agregasi pada tabel besar.
Untuk memecah data ke dalam tabel terdistribusi hash, kumpulan SQL khusus menggunakan fungsi hash untuk menetapkan setiap baris secara deterministik ke satu distribusi. Dalam definisi tabel, salah satu kolom ditetapkan sebagai kolom distribusi. Fungsi hash menggunakan nilai dalam kolom distribusi untuk menetapkan setiap baris ke distribusi.
Diagram berikut ini menggambarkan bagaimana tabel lengkap (tabel tidak didistribusikan) disimpan sebagai tabel yang didistribusikan hash.
- Setiap baris adalah bagian dari satu distribusi.
- Algoritma hash deterministik menetapkan setiap baris untuk satu distribusi.
- Jumlah baris tabel per distribusi bervariasi seperti yang diperlihatkan oleh berbagai ukuran tabel.
Ada pertimbangan performa dalam memilih kolom distribusi, seperti perbedaan, kecondongan data, dan jenis kueri yang berjalan pada sistem.
Tabel terdistribusi round-robin
Tabel round-robin adalah tabel paling sederhana yang mudah dibuat serta memberikan performa cepat ketika digunakan sebagai meja penahapan pada beban.
Tabel terdistribusi round-robin mendistribusikan data secara merata ke seluruh tabel tetapi tanpa pengoptimalan lebih lanjut. Distribusi pertama kali dipilih secara acak dan kemudian buffer baris ditetapkan ke distribusi secara berurutan. Cepat memuat data ke dalam tabel round-robin, tetapi performa kueri seringkali bisa lebih baik dengan tabel terdistribusi hash. Gabungan pada tabel round-robin memerlukan perombakan data, yang membutuhkan waktu ekstra.
Tabel yang direplikasi
Tabel yang direplikasi menyediakan performa kueri tercepat untuk tabel kecil.
Tabel yang direplikasi melakukan cache salinan lengkap tabel pada setiap simpul komputasi. Sehingga, replikasi tabel akan menghapus kebutuhan untuk mentransfer data di antara simpul komputasi sebelum gabungan atau agregasi. Tabel yang direplikasi paling baik digunakan dengan tabel kecil. Penyimpanan ekstra diperlukan dan ada overhead ekstra yang dikeluarkan saat menulis data, yang membuat tabel besar tidak praktis.
Diagram di bawah ini memperlihatkan tabel yang direplikasi dan dilakukan cache pada distribusi pertama di setiap simpul komputasi.
Langkah berikutnya
Sekarang setelah Anda tahu sedikit tentang Synapse SQL, pelajari cara cepat membuat kumpulan SQL khusus dan memuat data sampel. Atau mulai menggunakan kumpulan SQL tanpa server. Jika Anda baru menggunakan Azure, Anda mungkin menemukan glosarium Azure berguna saat Anda menemukan terminologi baru.