Arsitektur ekstensibilitas dalam Ekstensi Bahasa SQL Server

Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru

Pelajari tentang arsitektur ekstensibilitas yang digunakan untuk Ekstensi Bahasa SQL Server, yang memungkinkan Anda menjalankan kode eksternal di SQL Server. Java, Python, dan R didukung di SQL Server 2019 (15.x) dan versi yang lebih baru. Kode dijalankan dalam lingkungan runtime bahasa sebagai ekstensi ke mesin database inti.

Latar belakang

Tujuan dari kerangka kerja ekstensibilitas adalah untuk menyediakan antarmuka antara SQL Server dan bahasa eksternal. Administrator database dapat menjaga keamanan dengan menjalankan bahasa tepercaya dalam kerangka kerja aman yang dikelola oleh SQL Server, sekaligus memungkinkan ilmuwan data mengakses data perusahaan.

Setiap bahasa eksternal yang didukung dapat dijalankan dengan memanggil prosedur tersimpan dan hasilnya dikembalikan sebagai hasil tabular langsung ke SQL Server. Ini memudahkan penggunaan bahasa eksternal dari aplikasi apa pun yang dapat mengirim kueri SQL dan menangani hasilnya.

Diagram arsitektur

Arsitektur dirancang skema kode eksternal berjalan dalam proses terpisah dari SQL Server, tetapi dengan komponen yang secara internal mengelola rantai permintaan data dan operasi di SQL Server.

Arsitektur komponen di Windows:

Diagram of component architecture on Windows.

Arsitektur komponen di Linux:

Diagram of Component architecture on Linux.

Komponen termasuk layanan Launchpad yang digunakan untuk memanggil runtime eksternal (misalnya, Java) dan logika khusus pustaka untuk memuat interpreter dan pustaka.

Launchpad

Launchpad SQL Server adalah layanan yang mengelola batas masa pakai, sumber daya, dan keamanan dari proses eksternal yang bertanggung jawab atas eksekusi skrip. Ini mirip dengan cara layanan pengindeksan dan kueri teks lengkap meluncurkan host terpisah untuk memproses kueri teks lengkap. Layanan Launchpad hanya dapat memulai peluncur tepercaya yang diterbitkan oleh Microsoft, atau disertifikasi oleh Microsoft sebagai persyaratan rapat untuk manajemen performa dan sumber daya.

Layanan Launchpad SQL Server berjalan di bawah SQLRUserGroup yang menggunakan AppContainers untuk isolasi eksekusi.

Layanan Launchpad SQL Server terpisah dibuat untuk setiap instans mesin database tempat Anda menambahkan Ekstensi Bahasa Mesin SQL Server. Ada satu layanan Launchpad untuk setiap instans mesin database, jadi jika Anda memiliki beberapa instans dengan dukungan skrip eksternal, Anda memiliki layanan Launchpad untuk masing-masing instans. Instans mesin database terikat ke layanan Launchpad yang dibuat untuknya. Semua pemanggilan skrip eksternal dalam prosedur tersimpan atau T-SQL, mengakibatkan layanan SQL Server memanggil layanan Launchpad yang dibuat untuk instans yang sama.

Untuk menjalankan tugas dalam bahasa tertentu yang didukung, Launchpad mendapatkan akun pekerja aman dari kumpulan, dan memulai proses satelit untuk mengelola runtime eksternal. Setiap proses satelit mewarisi akun pengguna Launchpad dan menggunakan akun pekerja tersebut selama eksekusi skrip. Jika skrip menggunakan proses paralel, skrip dibuat di bawah akun pekerja tunggal yang sama.

Saluran komunikasi antar komponen

Protokol komunikasi di antara komponen dan platform data dijelaskan di bagian ini.

  • TCP/IP

    Secara default, komunikasi internal antara SQL Server dan satelit SQL menggunakan TCP/IP.

  • ODBC

    Komunikasi antara klien ilmu data eksternal dan instans SQL Server jarak jauh menggunakan ODBC. Akun yang mengirim pekerjaan skrip ke SQL Server harus memiliki izin untuk menyambungkan ke instans dan menjalankan skrip eksternal.

    Selain itu, tergantung pada tugas, akun mungkin memerlukan izin ini:

    • Membaca data yang digunakan oleh pekerjaan
    • Menulis data ke tabel: misalnya, saat menyimpan hasil ke tabel
    • Membuat objek database: misalnya, jika menyimpan skrip eksternal sebagai bagian dari prosedur tersimpan baru

    Ketika SQL Server digunakan sebagai konteks komputasi untuk skrip yang dijalankan dari klien jarak jauh, dan yang dapat dieksekusi harus mengambil data dari sumber eksternal, ODBC digunakan untuk tulis balik. SQL Server memetakan identitas pengguna yang mengeluarkan perintah jarak jauh ke identitas pengguna pada instans saat ini, dan menjalankan perintah ODBC menggunakan kredensial pengguna tersebut. string koneksi yang diperlukan untuk melakukan panggilan ODBC ini diperoleh dari kode klien.

  • Protokol lain

    Proses yang mungkin perlu berfungsi dalam "gugus" atau mentransfer data kembali ke klien jarak jauh juga dapat menggunakan format file XDF. Transfer data aktual melalui blob yang dikodekan.