Bővíthetőségi architektúra az SQL Server nyelvi bővítményeiben

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Ismerje meg az SQL Server nyelvi bővítményekhez használt bővíthetőségi architektúrát, amely lehetővé teszi külső kód futtatását az SQL Serveren. A Java, a Python és az R támogatott az SQL Server 2019 (15.x) és újabb verzióiban. A kód egy nyelvi futtatókörnyezetben fut az alapvető adatbázismotor kiterjesztéseként.

Háttér

A bővíthetőségi keretrendszer célja, hogy felületet biztosítson az SQL Server és a külső nyelvek között. Az adatbázisgazdák úgy tudják fenntartani a biztonságot, hogy egy megbízható nyelvet hajtanak végre az SQL Server által felügyelt biztonságos keretrendszerben, miközben lehetővé teszik az adatelemzők számára a vállalati adatokhoz való hozzáférést.

Bármely támogatott külső nyelv futtatható egy tárolt eljárás meghívásával, és az eredményeket táblázatos eredményként adja vissza közvetlenül az SQL Servernek. Ez megkönnyíti a külső nyelv használatát bármely olyan alkalmazásból, amely képes SQL-lekérdezést küldeni és kezelni az eredményeket.

Építészeti diagramok

Az architektúra úgy lett kialakítva, hogy a külső kód az SQL Servertől eltérő folyamaton fusson, de olyan összetevőkkel, amelyek belsőleg kezelik az SQL Serveren futó adat- és műveleti kérelmek láncát.

Összetevőarchitektúra a Windowsban:

A windowsos összetevőarchitektúra diagramja.

Komponensarchitektúra Linuxban:

A linuxos komponensarchitektúra diagramja.

Az összetevők közé tartozik a külső futtatókörnyezetek (például Java) meghívására használt Launchpad-szolgáltatás , valamint az értelmezők és kódtárak betöltésére szolgáló kódtárspecifikus logika.

Dob

Az SQL Server Launchpad egy olyan szolgáltatás, amely a szkriptek végrehajtásáért felelős külső folyamat élettartamát, erőforrásait és biztonsági határait kezeli. Ez hasonló ahhoz, ahogyan a teljes szöveges indexelési és lekérdezési szolgáltatás külön gazdagépet indít el a teljes szöveges lekérdezések feldolgozásához. A Launchpad szolgáltatás csak a Microsoft által közzétett megbízható indítókat indíthatja el, vagy a Microsoft minősíti a teljesítmény- és erőforrás-kezelés követelményeit.

Az SQL Server Launchpad szolgáltatás az SQLRUserGroup alatt fut, amely appContainereket használ a végrehajtás elkülönítéséhez.

Külön SQL Server Launchpad-szolgáltatás jön létre minden olyan adatbázismotor-példányhoz, amelyhez SQL Server Machine Language Extensions bővítményeket ad hozzá. Minden adatbázismotor-példányhoz egy Launchpad-szolgáltatás tartozik, így ha több külső szkripttámogatással rendelkező példánya van, mindegyikhez rendelkezik Launchpad-szolgáltatással. Az adatbázismotor-példány a számára létrehozott Launchpad szolgáltatáshoz van kötve. Egy tárolt eljárásban vagy T-SQL-ben egy külső szkript összes meghívása azt eredményezi, hogy az SQL Server szolgáltatás meghívja az ugyanahhoz a példányhoz létrehozott Launchpad szolgáltatást.

Ha a feladatokat egy adott támogatott nyelven szeretné végrehajtani, a Launchpad lekéri a készletből a biztonságos feldolgozói fiókot, és elindít egy műholdas folyamatot a külső futtatókörnyezet kezeléséhez. Minden műholdas folyamat örökli a Launchpad felhasználói fiókját, és ezt a feldolgozó fiókot használja a szkript végrehajtása során. Ha a szkript párhuzamos folyamatokat használ, azokat ugyanazzal az egy feldolgozói fiókkal hozza létre.

Kommunikációs csatornák az összetevők között

Az összetevők és adatplatformok közötti kommunikációs protokollokat ebben a szakaszban ismertetjük.

  • TCP/IP

    Alapértelmezés szerint az SQL Server és az SQL-műhold közötti belső kommunikáció TCP/IP protokollt használ.

  • ODBC-

    A külső adatelemzési ügyfelek és egy távoli SQL Server-példány közötti kommunikáció ODBC-t használ. A szkriptfeladatokat az SQL Servernek küldő fióknak mindkét engedéllyel kell rendelkeznie a példányhoz való csatlakozáshoz és a külső szkriptek futtatásához.

    Emellett a tevékenységtől függően a fióknak szüksége lehet az alábbi engedélyekre:

    • A feladat által használt adatok olvasása
    • Adatok írása táblákba: például az eredmények táblázatba való mentésekor
    • Adatbázis-objektumok létrehozása: például ha egy új tárolt eljárás részeként menti a külső szkriptet

    Ha az SQL Servert használják a távoli ügyfélről végrehajtott szkript számítási környezeteként, és a végrehajthatónak külső forrásból kell adatokat lekérnie, az ODBC-t használja a visszaíráshoz. Az SQL Server leképezi a távoli parancsot kibocsátó felhasználó identitását az aktuális példány felhasználójának identitására, és az ODBC-parancsot a felhasználó hitelesítő adataival futtatja. Az ODBC-hívás végrehajtásához szükséges kapcsolati sztring az ügyfélkódból származik.

  • Egyéb protokollok

    Azok a folyamatok is használhatják az XDF-fájlformátumot, amelyeknek "adattömbökben" kell működniük, vagy adatokat kell visszavinni egy távoli ügyfélnek. A tényleges adatátvitel kódolt blobokon keresztül történik.