Gambaran umum kueri elastis Azure SQL Database (pratinjau)
Berlaku untuk:Azure SQL Database
Fitur kueri elastis (dalam pratinjau) memungkinkan Anda menjalankan kueri Transact-SQL (T-SQL) yang mencakup beberapa database di Azure SQL Database. Fitur ini memungkinkan Anda untuk melakukan kueri lintas database untuk mengakses tabel jauh, dan untuk menghubungkan alat Microsoft dengan pihak ketiga (Excel, Power BI, Tableau, dll.) guna membuat kueri di seluruh tingkat data dengan beberapa database. Dengan fitur ini, Anda dapat meluaskan skala kueri ke tingkat data yang besar dan memvisualisasikan hasilnya dalam laporan inteligensi bisnis (BI).
Mengapa menggunakan kueri elastis
Database Azure SQL
Kueri di seluruh database di Azure SQL Database sepenuhnya di T-SQL. Ini memungkinkan kueri baca-saja database jarak jauh dan menyediakan opsi bagi pelanggan SQL Server saat ini untuk melakukan migrasi aplikasi menggunakan nama tiga dan empat bagian atau server tertaut ke SQL Database.
Tersedia di semua tingkatan layanan
Kueri elastis didukung di semua tingkatan layanan Azure SQL Database. Lihat bagian tentang Batasan Pratinjau di bawah ini tentang batasan kinerja untuk tingkat layanan yang lebih rendah.
Mendorong parameter ke database jarak jauh
Kueri elastis sekarang dapat mendorong parameter SQL ke database jarak jauh untuk dieksekusi.
Eksekusi prosedur tersimpan
Jalankan panggilan prosedur tersimpan jauh atau fungsi jarak jauh menggunakan sp_execute _remote.
Fleksibilitas
Tabel eksternal dengan kueri elastis bisa merujuk ke tabel jarak jauh dengan skema atau nama tabel yang berbeda.
Skenario kueri elastis
Tujuannya adalah untuk memfasilitasi skenario kueri di mana beberapa database berkontribusi baris ke dalam satu hasil keseluruhan. Kueri dapat disusun oleh pengguna atau aplikasi secara langsung, atau secara tidak langsung melalui alat yang tersambung ke database. Ini sangat berguna saat membuat laporan, menggunakan BI komersial atau alat integrasi data, atau aplikasi apa pun yang tidak dapat diubah. Dengan kueri elastis, Anda bisa membuat kueri di beberapa database menggunakan pengalaman konektivitas SQL Server yang sudah tak asing lagi dalam alat seperti Excel, Power BI, Tableau, atau Cognos. Kueri elastis memungkinkan akses mudah ke seluruh kumpulan database melalui kueri yang dikeluarkan oleh SQL Server Management Studio atau Visual Studio, dan memfasilitasi kueri lintas database dari Kerangka Kerja Entitas atau lingkungan ORM lainnya. Gambar 1 memperlihatkan skenario di mana aplikasi cloud yang ada (yang menggunakan pustaka klien database elastis) dibangun pada tingkat data yang diskalakan, dan kueri elastis digunakan untuk pelaporan lintas database.
Gambar 1 Kueri elastis yang digunakan pada tingkat data yang diskalakan
Skenario pelanggan untuk kueri elastis ditandai dengan topologi berikut:
Pemartisian vertikal - Kueri lintas database (Topologi 1): Data dipartisi secara vertikal antara beberapa database dalam tingkat data. Biasanya, kumpulan tabel yang berbeda berada di database yang berbeda. Itu berarti bahwa skemanya berbeda pada database yang berbeda. Misalnya, semua tabel untuk inventaris berada di satu database sementara semua tabel terkait akuntansi berada di database kedua. Kasus penggunaan umum dengan topologi ini mengharuskan seseorang untuk mengkueri di seluruh atau untuk mengompilasi laporan di seluruh tabel dalam beberapa database.
Pemartisian Horizontal - Sharding (Topologi 2): Data dipartisi secara horizontal untuk mendistribusikan baris di seluruh tingkat data yang diskalakan. Dengan pendekatan ini, skema identik pada semua database yang berpartisipasi. Pendekatan ini juga disebut sharding. Sharding dapat dilakukan dan dikelola menggunakan (1) pustaka alat database elastis atau (2) pecahan diri. Kueri elastis digunakan untuk mengkueri atau mengompilasi laporan di banyak pecahan. Pecahan biasanya merupakan database dalam kumpulan elastis. Anda dapat menganggap kueri elastis sebagai cara yang efisien untuk mengkueri semua database kumpulan elastis sekaligus, selama database berbagi skema umum.
Catatan
Kueri elastis berfungsi paling baik untuk melaporkan skenario di mana sebagian besar pemrosesan (pemfilteran, agregasi) dapat dilakukan di sisi sumber eksternal. Ini tidak cocok untuk operasi ETL di mana sejumlah besar data sedang ditransfer dari database jarak jauh. Untuk beban kerja pelaporan berat atau skenario pergudangan data dengan kueri yang lebih kompleks, pertimbangkan juga menggunakan Azure Synapse Analytics.
Pemartisian vertikal - kueri lintas database
Untuk memulai pengkodean, lihat Mulai menggunakan kueri lintas database (pemartisian vertikal).
Kueri elastis dapat digunakan untuk membuat data yang terletak di database di SQL Database yang tersedia untuk database lain di SQL Database. Ini memungkinkan kueri dari satu database untuk merujuk ke tabel di database jarak jauh lainnya di SQL Database. Langkah pertama adalah menentukan sumber data eksternal untuk setiap database jarak jauh. Sumber data eksternal ditentukan dalam database lokal tempat Anda ingin mendapatkan akses ke tabel yang terletak di database jarak jauh. Tidak ada perubahan yang diperlukan pada database jarak jauh. Untuk skenario pemartisian vertikal umum di mana database yang berbeda memiliki skema yang berbeda, kueri elastis dapat digunakan untuk mengimplementasikan kasus penggunaan umum seperti akses ke data referensi dan kueri lintas database.
Penting
Anda harus memiliki izin ALTER ANY EXTERNAL DATA SOURCE
. Izin ini sudah termasuk dalam izin ALTER DATABASE
. Diperlukan izin ALTER ANY EXTERNAL DATA SOURCE
untuk merujuk ke sumber data yang mendasarinya.
Data referensi: Topologi digunakan untuk manajemen data referensi. Dalam gambar berikut, dua tabel (T1 dan T2) dengan data referensi disimpan pada database khusus. Dengan menggunakan kueri elastis, sekarang Anda bisa mengakses tabel T1 dan T2 dari jarak jauh dari database lain, seperti yang diperlihatkan dalam gambar. Gunakan topologi 1 jika tabel referensi kecil atau kueri jarak jauh ke dalam tabel referensi memiliki predikat selektif.
Gambar 2 Pemartisian vertikal - Menggunakan kueri elastis untuk mengkueri data referensi
Kueri lintas database: Kueri elastis memungkinkan kasus penggunaan yang memerlukan kueri di beberapa database di SQL Database. Gambar 3 memperlihatkan empat database berbeda: CRM, Inventaris, SDM, dan Produk. Kueri yang dilakukan di salah satu database juga memerlukan akses ke satu atau semua database lainnya. Menggunakan kueri elastis, Anda bisa mengonfigurasi database Anda untuk kasus ini dengan menjalankan beberapa pernyataan DDL sederhana pada masing-masing dari empat database. Setelah konfigurasi satu kali ini, akses ke tabel jarak jauh akan semudah merujuk ke tabel lokal dari kueri T-SQL Anda atau dari alat BI Anda. Pendekatan ini direkomendasikan jika kueri jarak jauh tidak mengembalikan hasil yang besar.
Gambar 3 Pemartisian vertikal - Menggunakan kueri elastis untuk kueri di berbagai database
Langkah-langkah berikut ini mengonfigurasi kueri database elastis untuk skenario pemartisian vertikal yang memerlukan akses ke tabel yang terletak di database jarak jauh di SQL Database dengan skema yang sama:
MEMBUAT KUNCI MASTER
mymasterkey
MEMBUAT
mycredential
KREDENSIAL CAKUPAN DATABASEMEMBUAT
mydatasource
SUMBER DATA EKSTERNAL dari jenisRDBMS
BUAT TABEL EKSTERNAL
mytable
Setelah menjalankan pernyataan DDL, Anda dapat mengakses tabel jarak jauh mytable
seolah-olah itu adalah tabel lokal. Azure SQL Database secara otomatis membuka koneksi ke database jarak jauh, memproses permintaan Anda di database jarak jauh, dan mengembalikan hasilnya.
Pemartisian horizontal - sharding
Menggunakan kueri elastis untuk melakukan tugas pelaporan melalui pecahan, yaitu, dipartisi secara horizontal, tingkat data memerlukan peta pecahan database elastis untuk mewakili database tingkat data. Biasanya, hanya satu peta pecahan yang digunakan dalam skenario ini dan database khusus dengan kemampuan kueri elastis (simpul kepala) berfungsi sebagai titik masuk untuk melaporkan kueri. Hanya database khusus ini yang membutuhkan akses ke peta pecahan. Gambar 4 menggambarkan topologi ini dan konfigurasinya dengan database kueri elastis dan peta pecahan. Untuk informasi selengkapnya tentang pustaka klien database elastis dan membuat peta pecahan, lihat Manajemen peta pecahan.
Gambar 4 Pemartisian horizontal - Menggunakan kueri elastis untuk melaporkan tingkat data yang dipecah
Catatan
Database Kueri Elastis (simpul kepala) bisa menjadi database terpisah, atau bisa menjadi database yang sama yang menghosting peta pecahan. Konfigurasi apa pun yang Anda pilih, pastikan tingkat layanan dan ukuran komputasi database tersebut cukup tinggi untuk menangani jumlah permintaan masuk/kueri yang diharapkan.
Langkah-langkah berikut ini mengonfigurasi kueri database elastis untuk skenario pemartisian horizontal yang memerlukan akses ke serangkaian tabel yang terletak di (biasanya) beberapa database jarak jauh di SQL Database:
MEMBUAT KUNCI MASTER
mymasterkey
MEMBUAT KREDENSIAL LINGKUP DATABASE
mycredential
.Buat peta pecahan yang mewakili tingkat data Anda menggunakan pustaka klien database elastis.
MEMBUAT SUMBER DATA EKSTERNAL
mydatasource
jenisSHARD_MAP_MANAGER
.BUAT TABEL EKSTERNAL
mytable
Setelah melakukan langkah-langkah ini, Anda dapat mengakses tabel yang dipartisi secara horizontal mytable
seolah-olah itu adalah tabel lokal. Azure SQL Database secara otomatis membuka beberapa koneksi paralel ke database jarak jauh tempat tabel disimpan secara fisik, memproses permintaan pada database jarak jauh, dan mengembalikan hasilnya.
Informasi lebih lanjut tentang langkah-langkah yang diperlukan untuk skenario pemartisian horizontal dapat ditemukan dalam kueri elastis untuk partisi horizontal.
Untuk memulai pengkodean, lihat Memulai dengan kueri elastis untuk pemartisian horizontal (sharding).
Penting
Keberhasilan eksekusi kueri elastis atas sekumpulan besar database sangat bergantung pada ketersediaan masing-masing database selama eksekusi kueri. Jika salah satu database tidak tersedia, seluruh kueri gagal. Jika Anda berencana untuk mengkueri ratusan atau ribuan database sekaligus, pastikan aplikasi klien Anda telah mencoba kembali logika yang disematkan, atau pertimbangkan untuk memanfaatkan pekerjaan elastis dan mengkueri subset database yang lebih kecil, mengonsolidasikan hasil setiap kueri ke dalam satu tujuan.
Kueri T-SQL
Setelah Anda menentukan sumber data eksternal dan tabel eksternal, Anda bisa menggunakan string koneksi SQL Server reguler untuk menyambungkan ke database tempat Anda menentukan tabel eksternal Anda. Anda kemudian dapat menjalankan pernyataan T-SQL di atas tabel eksternal Anda pada koneksi tersebut dengan batasan yang diuraikan nanti dalam artikel ini. Anda dapat menemukan informasi selengkapnya dan contoh kueri T-SQL dalam artikel dokumentasi untuk partisi horizontal dan partisi vertikal.
Konektivitas untuk alat
Anda bisa menggunakan string koneksi SQL Server reguler untuk menyambungkan aplikasi dan BI atau alat integrasi data Anda ke database yang memiliki tabel eksternal. Pastikan bahwa SQL Server didukung sebagai sumber data untuk alat Anda. Setelah tersambung, lihat database kueri elastis dan tabel eksternal dalam database itu seperti yang akan Anda lakukan dengan database SQL Server lain yang Anda sambungkan dengan alat Anda.
Penting
Kueri elastis hanya didukung saat menyambungkan dengan Autentikasi SQL Server.
Biaya
Kueri elastis disertakan dalam biaya Azure SQL Database. Topologi di mana database jarak jauh Anda berada di pusat data yang berbeda dari titik akhir kueri elastik didukung, tetapi keluarnya data dari database jarak jauh dikenakan biaya sesuai tarif Azure .
Batasan pratinjau
Menjalankan kueri elastis pertama Anda dapat memakan waktu hingga beberapa menit pada sumber daya yang lebih kecil dan tingkat layanan Standar dan Tujuan Umum. Kali ini diperlukan untuk memuat fungsionalitas kueri elastis; kinerja pemuatan meningkat dengan tingkat layanan dan ukuran komputasi yang lebih tinggi.
Kueri elastis saat ini hanya mendukung akses baca-saja ke tabel eksternal. Namun, Anda dapat menggunakan fungsionalitas T-SQL penuh pada database tempat tabel eksternal ditentukan. Ini dapat berguna untuk, misalnya, mempertahankan hasil sementara menggunakan, misalnya,
SELECT <column_list> INTO <local_table>
, atau untuk menentukan prosedur tersimpan pada database kueri elastis yang merujuk ke tabel eksternal.Kecuali untuk nvarchar(max), jenis LOB (termasuk jenis spasial) tidak didukung dalam definisi tabel eksternal. Sebagai solusinya, Anda dapat membuat tampilan pada database jarak jauh yang mengonversi jenis LOB ke nvarchar(max), lalu definisikan tabel eksternal Anda berdasarkan tampilan ini alih-alih tabel dasar, dan kemudian konversikan kembali ke jenis LOB asli dalam kueri Anda.
Kolom dengan jenis data nvarchar(max) dalam hasil set menonaktifkan teknik batching canggih dalam Kueri Elastis dan dapat memengaruhi performa kueri hingga satu atau bahkan dua kali lipat dalam kasus penggunaan non-kanonis di mana sejumlah besar data non-agregat ditransfer sebagai hasil dari kueri.
Statistik kolom atas tabel eksternal saat ini tidak didukung. Statistik tabel didukung, tetapi harus dibuat secara manual.
Kursor tidak didukung untuk tabel eksternal di Azure SQL Database.
Kueri elastis hanya berfungsi dengan Azure SQL Database. Anda tidak dapat menggunakannya untuk mengkueri instans SQL Server, Azure SQL Managed Instance, atau database Fabric SQL.
Link privat saat ini tidak didukung dengan kueri elastis untuk database yang menjadi target sumber data eksternal.
Konten terkait
- Mulai menggunakan kueri lintas database (pemartisian vertikal) (pratinjau)
- Kueri di seluruh database cloud dengan skema yang berbeda (pratinjau)
- Laporan di seluruh database cloud yang diperluas (pratinjau)
- Pelaporan di seluruh database cloud yang diskalakan (pratinjau)
- sp_execute_remote (Azure SQL Database)