Gambaran umum kueri elastis Azure SQL Database (pratinjau)

Berlaku untuk:Azure SQL Database

Fitur kueri elastis (dalam pratinjau) memungkinkan Anda menjalankan kueri Transact-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

Azure SQL Database

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

Elastic query used on scaled-out data tier

Skenario pelanggan untuk kueri elastis ditandai dengan topologi berikut:

  • Pemartisian vertikal - Kueri lintas database (Topologi 1): Data dipartisi secara vertikal antara sejumlah 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. Tidak cocok untuk operasi ETL di mana sejumlah besar data 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 UBAH SUMBER DATA EKSTERNAL APA PUN. Izin ini disertakan dengan izin MENGUBAH DATABASE. MENGUBAH izin SUMBER DATA EKSTERNAL diperlukan untuk merujuk ke sumber data yang mendasarinya.

Data referensi: Topologi digunakan untuk manajemen data referensi. Pada gambar di bawah ini, dua tabel (T1 dan T2) dengan data referensi disimpan di 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

Vertical partitioning - Using elastic query to query reference data

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 disarankan jika kueri jarak jauh tidak mengembalikan hasil yang besar.

Gambar 3 Pemartisian vertikal - Menggunakan kueri elastis untuk kueri di berbagai database

Vertical partitioning - Using elastic query to query across various databases

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:

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

Horizontal partitioning - Using elastic query for reporting over sharded data tiers

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 login/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:

Setelah Anda melakukan langkah-langkah ini, Anda dapat mengakses tabel "mytable" yang dipartisi secara horizontal 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 akan gagal. Jika Anda berencana untuk meminta ratusan atau ribuan database sekaligus, pastikan aplikasi klien Anda telah mencoba kembali logika yang disematkan, atau pertimbangkan untuk memanfaatkan Elastic Database Jobs (pratinjau) dan mengkueri subset database yang lebih kecil, mengonsolidisasikan 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 melalui tabel eksternal Anda pada koneksi tersebut dengan batasan yang diuraikan di bawah ini. Anda dapat menemukan informasi lebih lanjut dan contoh kueri T-SQL dalam topik dokumentasi untuk pemartisian horizontal dan pemartisian 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. Perhatikan bahwa topologi di mana database jarak jauh Anda berada di pusat data yang berbeda dari titik akhir kueri elastis didukung, tetapi keluarnya data dari database jarak jauh dibebankan secara teratur 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.
  • Pembuatan skrip sumber data eksternal atau tabel eksternal dari SSMS atau SSDT belum didukung.
  • Impor/Ekspor untuk SQL Database belum mendukung sumber data eksternal dan tabel eksternal. Jika Anda perlu menggunakan Impor/Ekspor, letakkan objek ini sebelum mengekspor lalu buat ulang setelah mengimpor.
  • 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. Hal ini dapat berguna untuk, misalnya, mempertahankan hasil sementara menggunakan, contohnya, SELECT <column_list> INTO <local_table>, atau untuk menentukan prosedur tersimpan pada database kueri elastis yang merujuk ke tabel eksternal.
  • Kecuali untuk nvarchar(max), tipe LOB (termasuk tipe spasial) tidak didukung dalam definisi tabel eksternal. Sebagai solusinya, Anda bisa membuat tampilan pada database jarak jauh yang melemparkan tipe LOB ke nvarchar(max), menentukan tabel eksternal Anda di atas tampilan alih-alih tabel dasar lalu melemparkannya kembali ke tipe LOB asli dalam kueri Anda.
  • Kolom jenis data nvarchar(max) dalam tataan hasil menonaktifkan teknik batching tingkat lanjut yang digunakan dalam implementasi Kueri Elastis dan dapat memengaruhi performa kueri untuk urutan besaran, atau bahkan dua urutan besarnya dalam kasus penggunaan non-kanonis di mana sejumlah besar data non-agregat sedang ditransfer sebagai hasil 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 bisa menggunakannya untuk mengkueri instans SQL Server.
  • Tautan privat saat ini tidak didukung dengan kueri elastis untuk database yang merupakan target sumber data eksternal.

Bagikan umpan balik Anda

Bagikan umpan balik tentang pengalaman Anda dengan kueri elastis dengan kami di bawah ini, di forum MSDN, atau di Stack Overflow. Kami tertarik pada semua jenis umpan balik tentang layanan (cacat, tepi kasar, celah fitur).

Langkah berikutnya