Extension du langage R dans SQL ServerR language extension in SQL Server

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

L’extension R fait partie intégrante du module complémentaire SQL Server Machine Learning Services du moteur de base de données relationnelle.The R extension is part of the SQL Server Machine Learning Services add-on to the relational database engine. Il ajoute un environnement d’exécution R, une distribution R de base avec des bibliothèques et des outils standard ainsi que les bibliothèques Microsoft R : RevoScaleR pour un analytique à la bonne échelle, MicrosoftML pour des algorithmes de Machine Learning et d’autres bibliothèques pour accéder aux données ou au code R dans SQL Server.It adds an R execution environment, base R distribution with standard libraries and tools, and the Microsoft R libraries: RevoScaleR for analytics at scale, MicrosoftML for machine learning algorithms, and other libraries for accessing data or R code in SQL Server.

L’intégration R est disponible dans SQL Server R Services et SQL Server Machine Learning Services.R integration is available in SQL Server R Services and SQL Server Machine Learning Services.

Composants RR components

SQL Server comporte des packages open source et propriétaires.SQL Server includes both open-source and proprietary packages. Les bibliothèques R de base sont installées via la distribution de R open source de Microsoft : Microsoft R Open (MRO).The base R libraries are installed through Microsoft's distribution of open-source R: Microsoft R Open (MRO). Les utilisateurs actuels de R doivent pouvoir porter leur code R et l’exécuter en tant que processus externe dans SQL Server avec peu ou pas de modifications.Current users of R should be able to port their R code and execute it as an external process on SQL Server with few or no modifications. MRO est installé indépendamment des outils SQL et s’exécute en dehors des processus du moteur de base, dans le framework d’extensibilité.MRO is installed independently of SQL tools, and is executed outside of core engine processes, in the extensibility framework. Pendant l’installation, vous devez accepter les termes de la licence open source.During installation, you must consent to the terms of the open-source license. Cela vous donne le droit d’exécuter ensuite les packages R standard sans autre modification, comme dans n’importe quelle autre distribution open source de R.Thereafter, you can run standard R packages without further modification just as you would in any other open-source distribution of R.

SQL Server ne modifie pas les exécutables R de base, mais vous devez utiliser la version de R qui est installée par le programme d’installation, car c’est à partir de cette version que les packages propriétaires sont créés et testés.SQL Server does not modify the base R executables, but you must use the version of R installed by Setup because that version is the one that the proprietary packages are built and tested on. Pour savoir ce qui distingue MRO d’une distribution de base de R que vous pouvez obtenir via CRAN, consultez Interopérabilité avec le langage R et les produits et fonctionnalités Microsoft R.For more information about how MRO differs from a base distribution of R that you might get from CRAN, see Interoperability with R language and Microsoft R products and features.

La distribution de packages de base R qui est installée par le programme d’installation se trouve dans le dossier associé à l’instance.The R base package distribution installed by Setup can be found in the folder associated with the instance. Par exemple, si vous avez installé R Services sur une instance SQL Server par défaut, les bibliothèques R se trouvent par défaut dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library.For example, if you installed R Services on a SQL Server default instance, the R libraries are located in this folder by default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. De la même façon, les outils R associés à l’instance par défaut se trouvent par défaut dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.Similarly, the R tools associated with the default instance would be located in this folder by default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

Les packages R ajoutés par Microsoft pour les charges de travail parallèles et distribuées incluent les bibliothèques suivantes.R packages added by Microsoft for parallel and distributed workloads include the following libraries.

BibliothèqueLibrary DescriptionDescription
RevoScaleRRevoScaleR Prend en charge les objets de source de données ainsi que l’exploration, la manipulation, la transformation et la visualisation des données.Supports data source objects and data exploration, manipulation, transformation, and visualization. Prend en charge la création de contextes de calcul distants ainsi qu’un certain nombre de modèles de Machine Learning scalables, comme rxLinMod.It supports creation of remote compute contexts, as well as a various scalable machine learning models, such as rxLinMod. Les API ont été optimisées pour analyser les jeux de données qui sont trop volumineux pour être stockés en mémoire et pour effectuer des calculs distribués entre plusieurs cœurs ou processeurs.The APIs have been optimized to analyze data sets that are too big to fit in memory and to perform computations distributed over several cores or processors. Le package RevoScaleR prend aussi en charge le format de fichier XDF pour accélérer le transfert et le stockage des données utilisées pour l’analyse.The RevoScaleR package also supports the XDF file format for faster movement and storage of data used for analysis. Le format XDF est un format portable qui utilise le stockage en colonnes. Il permet de charger et manipuler des données de différentes sources, y compris une connexion texte, SPSS ou ODBC.The XDF format uses columnar storage, is portable, and can be used to load and then manipulate data from various sources, including text, SPSS, or an ODBC connection.
MicrosoftMLMicrosoftML Contient des algorithmes de Machine Learning qui ont été optimisés pour la vitesse et la précision ainsi que des transformations en ligne pour permettre l’utilisation de texte et d’images.Contains machine learning algorithms that have been optimized for speed and accuracy, as well as in-line transformations for working with text and images. Pour plus d’informations, consultez MicrosoftML dans SQL Server.For more information, see MicrosoftML in SQL Server.

Utilisation de R dans SQL ServerUsing R in SQL Server

Vous pouvez écrire un script R en utilisant les fonctions de base, mais pour tirer parti du multitraitement, vous devez importer les modules RevoScaleR et MicrosoftML dans votre code R, puis appeler ses fonctions pour créer des modèles qui s’exécutent en parallèle.You can script R using base functions, but to benefit from multi-processing, you must import the RevoScaleR and MicrosoftML modules into your R code, and then call its functions to create models that execute in parallel.

Parmi les sources de données prises en charge figurent les bases de données ODBC, SQL Server et le format de fichier XDF pour l’échange de données avec d’autres sources ou avec des solutions R.Supported data sources include ODBC databases, SQL Server, and XDF file format to exchange data with other sources, or with R solutions. Les données d’entrée doivent être tabulaires.Input data must be tabular. Tous les résultats de R doivent être retournés sous forme de trame de données.All R results must be returned in the form of a data frame.

Parmi les contextes de calcul pris en charge figurent le contexte de calcul SQL Server local ou distant.Supported compute contexts include local, or remote SQL Server compute context. Un contexte de calcul distant fait référence à une exécution de code qui commence sur un ordinateur, par exemple une station de travail, avant que l’exécution du script bascule sur un ordinateur distant.A remote compute context refers to code execution that starts on one computer such as a workstation, but then switches script execution to a remote computer. Pour que le basculement du contexte de calcul s’opère, les deux systèmes doivent avoir la même bibliothèque RevoScaleR.Switching the compute context requires that both systems have the same RevoScaleR library.

Comme vous pouvez le comprendre, le contexte de calcul local exécute notamment le code R sur le même serveur que l’instance du moteur de base de données, avec le code à l’intérieur de T-SQL ou incorporé dans une procédure stockée.Local compute context, as you might expect, includes execution of R code on the same server as the database engine instance, with code inside T-SQL or embedded in a stored procedure. Vous pouvez aussi exécuter le code à partir d’un IDE R local et faire en sorte que le script s’exécute sur l’ordinateur SQL Server, en définissant un contexte de calcul distant.You can also run the code from a local R IDE and have the script execute on the SQL Server computer, by defining a remote compute context.

Architecture d’exécutionExecution architecture

Les schémas ci-dessous décrivent l’interaction des composants SQL Server avec le runtime R dans chacun des scénarios pris en charge suivants : exécution de script dans la base de données et exécution à distance à partir d’une ligne de commande R, en utilisant un contexte de calcul SQL Server.The following diagrams depict the interaction of SQL Server components with the R runtime in each of the supported scenarios: running script in-database, and remote execution from an R command line, using a SQL Server compute context.

Scripts R exécutés à partir de SQL Server dans la base de donnéesR scripts executed from SQL Server in-database

Le code R lancé de « l’intérieur » de SQL Server est exécuté en appelant une procédure stockée.R code that is run from "inside" SQL Server is executed by calling a stored procedure. Par conséquent, toute application qui peut appeler une procédure stockée peut lancer l’exécution du code R.Thus, any application that can make a stored procedure call can initiate execution of R code. SQL Server gère ensuite l’exécution du code R comme résumé dans le schéma suivant.Thereafter SQL Server manages the execution of R code as summarized in the following diagram.

rsql_indb780-01

  1. Une demande du runtime R est indiquée par le paramètre @language='R' passé à la procédure stockée sp_execute_external_script.A request for the R runtime is indicated by the parameter @language='R' passed to the stored procedure, sp_execute_external_script. SQL Server envoie cette demande au service launchpad.SQL Server sends this request to the launchpad service. Dans Linux, SQL utilise un service launchpad pour communiquer avec un processus launchpad distinct pour chaque utilisateur.In Linux, SQL uses a launchpadd service to communicate with a separate launchpad process for each user. Pour plus d’informations, consultez le schéma de l’architecture d’extensibilité.See the Extensibility architecture diagram for details.
  2. Le service launchpad démarre le lanceur approprié (en l’occurrence, RLauncher).The launchpad service starts the appropriate launcher; in this case, RLauncher.
  3. RLauncher démarre le processus R externe.RLauncher starts the external R process.
  4. En coordination avec le runtime R, BxlServer gère les échanges de données avec SQL Server et le stockage des résultats du travail.BxlServer coordinates with the R runtime to manage exchanges of data with SQL Server and storage of working results.
  5. SQL Satellite gère les communications avec SQL Server sur les tâches et les processus associés.SQL Satellite manages communications about related tasks and processes with SQL Server.
  6. BxlServer utilise SQL Satellite pour communiquer l’état et les résultats à SQL Server.BxlServer uses SQL Satellite to communicate status and results to SQL Server.
  7. SQL Server obtient les résultats et ferme les tâches et les processus associés.SQL Server gets results and closes related tasks and processes.

Scripts R exécutés à partir d’un client distantR scripts executed from a remote client

Si vous vous connectez à partir d’un client de science des données distant qui prend en charge Microsoft R, vous pouvez exécuter des fonctions R dans le contexte de SQL Server en utilisant les fonctions RevoScaleR.When connecting from a remote data science client that supports Microsoft R, you can run R functions in the context of SQL Server by using the RevoScaleR functions. Ce flux de travail, qui est différent du précédent, est résumé dans le diagramme suivant.This is a different workflow from the previous one, and is summarized in the following diagram.

rsql_fromR2db-01

  1. Pour les fonctions RevoScaleR, le runtime R appelle une fonction de liaison qui, à son tour, appelle BxlServer.For RevoScaleR functions, the R runtime calls a linking function which in turn calls BxlServer.
  2. BxlServer est fourni avec Microsoft R et s’exécute dans un processus distinct du runtime R.BxlServer is provided with Microsoft R and runs in a separate process from the R runtime.
  3. BxlServer détermine la cible de la connexion et démarre une connexion à l’aide d’ODBC, en passant les informations d’identification fournies dans la chaîne de connexion de l’objet de source de données R.BxlServer determines the connection target and initiates a connection using ODBC, passing credentials supplied as part of the connection string in the R data source object.
  4. BxlServer ouvre une connexion à l’instance SQL Server.BxlServer opens a connection to the SQL Server instance.
  5. Pour un appel R, le service launchpad est appelé, lequel démarre ad le lanceur approprié, c’est-à-dire RLauncher.For an R call, the launchpad service is invoked, which is turn starts the appropriate launcher, RLauncher. Le traitement du code R est ensuite semblable au processus d’exécution du code R à partir de T-SQL.Thereafter, processing of R code is similar to the process for running R code from T-SQL.
  6. RLauncher effectue un appel à l’instance du runtime R qui est installé sur l’ordinateur SQL Server.RLauncher makes a call to the instance of the R runtime that is installed on the SQL Server computer.
  7. Les résultats sont retournés à BxlServer.Results are returned to BxlServer.
  8. SQL Satellite gère la communication avec SQL Server et le nettoyage des objets de travail associés.SQL Satellite manages communication with SQL Server and cleanup of related job objects.
  9. SQL Server transmet en retour les résultats au client.SQL Server passes results back to the client.

Voir aussiSee also