Aracılığıyla paylaş


SQL Server Dil Uzantılarında Genişletilebilirlik mimarisi

Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri

SQL Server'da dış kod çalıştırmanıza olanak tanıyan SQL Server Dil Uzantıları için kullanılan genişletilebilirlik mimarisi hakkında bilgi edinin. Java, Python ve R, SQL Server 2019 (15.x) ve sonraki sürümlerde desteklenir. Kod, çekirdek veritabanı altyapısının uzantısı olarak bir dil çalışma zamanı ortamında yürütülür.

Arka plan

Genişletilebilirlik çerçevesinin amacı, SQL Server ile dış diller arasında bir arabirim sağlamaktır. Veritabanı yöneticileri, SQL Server tarafından yönetilen güvenli bir çerçeve içinde güvenilir bir dil yürüterek ve veri bilimcilerinin kurumsal verilere erişmesine izin vererek güvenliği koruyabilir.

Desteklenen tüm dış diller saklı yordam çağrılarak çalıştırılabilir ve sonuçlar doğrudan SQL Server'a tablosal sonuçlar olarak döndürülür. Bu, SQL sorgusu gönderebilen ve sonuçları işleyebilen herhangi bir uygulamadan dış dil kullanmayı kolaylaştırır.

Mimari diyagramları

Mimari, dış kodun SQL Server'dan ayrı bir işlemde, ancak SQL Server'daki veri ve işlemler için istek zincirini dahili olarak yöneten bileşenlerle çalışacak şekilde tasarlanmıştır.

Windows'ta bileşen mimarisi:

Windows'ta bileşen mimarisi diyagramı.

Linux'ta bileşen mimarisi:

Linux'ta Bileşen mimarisi diyagramı.

Bileşenler, dış çalışma zamanlarını (örneğin Java) çağırmak için kullanılan bir Launchpad hizmetini ve yorumlayıcıları ve kitaplıkları yüklemek için kitaplığa özgü mantığı içerir.

Launchpad

SQL Server Launchpad, betik yürütmeden sorumlu dış işlemin yaşam süresini, kaynaklarını ve güvenlik sınırlarını yöneten bir hizmettir. Bu, tam metin dizin oluşturma ve sorgu hizmetinin tam metin sorgularını işlemek için ayrı bir konak başlatma yöntemine benzer. Launchpad hizmeti yalnızca Microsoft tarafından yayımlanan veya Performans ve kaynak yönetimi gereksinimlerini karşılamak üzere Microsoft tarafından onaylanan güvenilen başlatıcıları başlatabilir.

SQL Server Launchpad hizmeti, yürütme yalıtımı için AppContainers kullanan SQLRUserGroup altında çalışır.

SQL Server Makine Dili Uzantıları eklediğiniz her veritabanı altyapısı örneği için ayrı bir SQL Server Launchpad hizmeti oluşturulur. Her veritabanı altyapısı örneği için bir Launchpad hizmeti vardır, bu nedenle dış betik desteğine sahip birden çok örneğiniz varsa her biri için bir Launchpad hizmetiniz vardır. Veritabanı altyapısı örneği, bunun için oluşturulan Launchpad hizmetine bağlıdır. Saklı yordamdaki veya T-SQL'deki bir dış betiğin tüm çağrıları, SQL Server hizmetinin aynı örnek için oluşturulan Launchpad hizmetini çağırmasını sağlar.

Görevleri desteklenen belirli bir dilde yürütmek için Launchpad havuzdan güvenli bir çalışan hesabı alır ve dış çalışma zamanını yönetmek için bir uydu işlemi başlatır. Her uydu işlemi Launchpad'in kullanıcı hesabını devralır ve betik yürütme sırasında bu çalışan hesabını kullanır. Betik paralel işlemler kullanıyorsa, bunlar aynı, tek çalışan hesabı altında oluşturulur.

Bileşenler arasındaki iletişim kanalları

Bileşenler ve veri platformları arasındaki iletişim protokolleri bu bölümde açıklanmıştır.

  • TCP/IP

    Varsayılan olarak, SQL Server ile SQL uydu arasındaki iç iletişimler TCP/IP kullanır.

  • ODBC

    Dış veri bilimi istemcileri ile uzak SQL Server örneği arasındaki iletişim ODBC kullanır. Betik işlerini SQL Server'a gönderen hesabın hem örneğe bağlanma hem de dış betikleri çalıştırma izinlerine sahip olması gerekir.

    Ayrıca, göreve bağlı olarak hesabın şu izinlere ihtiyacı olabilir:

    • İş tarafından kullanılan verileri okuma
    • Tablolara veri yazma: Örneğin, sonuçları tabloya kaydederken
    • Veritabanı nesneleri oluşturma: Örneğin, dış betiği yeni bir saklı yordamın parçası olarak kaydediyorsanız

    SQL Server uzak bir istemciden yürütülen betik için işlem bağlamı olarak kullanıldığında ve yürütülebilir dosyanın bir dış kaynaktan veri alması gerektiğinde, geri yazma için ODBC kullanılır. SQL Server, uzak komutu veren kullanıcının kimliğini geçerli örnekteki kullanıcının kimliğiyle eşler ve o kullanıcının kimlik bilgilerini kullanarak ODBC komutunu çalıştırır. Bu ODBC çağrısını gerçekleştirmek için gereken bağlantı dizesi istemci kodundan alınır.

  • Diğer protokoller

    "Öbekler" içinde çalışması veya uzak istemciye veri aktarması gerekebilecek işlemler de XDF dosya biçimini kullanabilir. Gerçek veri aktarımı kodlanmış bloblar aracılığıyla yapılır.