SQL Server의 R 언어 확장R language extension in SQL Server

적용 대상: 예SQL Server 아니요Azure SQL Database아니요Azure Synapse Analytics(SQL DW) 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

R 확장은 관계형 데이터베이스 엔진에 대한 SQL Server Machine Learning Services 추가 기능에 포함되어 있습니다.The R extension is part of the SQL Server Machine Learning Services add-on to the relational database engine. 이 확장은 R 실행 환경, 표준 라이브러리 및 도구가 포함된 기본 R 배포판, Microsoft R 라이브러리를 추가합니다. RevoScaleR은 대규모 분석용이고, MicrosoftML은 기계 학습 알고리즘용이며, 그 외에도 SQL Server에서 데이터 또는 R 코드에 액세스하기 위한 기타 라이브러리를 추가합니다.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.

R 통합은 SQL Server R ServicesSQL Server Machine Learning Services에서 사용할 수 있습니다.R integration is available in SQL Server R Services and SQL Server Machine Learning Services.

R 구성 요소R components

SQL Server는 오픈 소스 패키지와 독점 패키지를 모두 포함하고 있습니다.SQL Server includes both open-source and proprietary packages. 기본 R 라이브러리는 Microsoft의 오픈 소스 R: Microsoft R Open(MRO) 배포판을 통해 설치됩니다.The base R libraries are installed through Microsoft's distribution of open-source R: Microsoft R Open (MRO). 현재 R 사용자는 R 코드를 약간 수정하거나 전혀 수정하지 않고 이식하여 SQL Server에서 외부 프로세스로 실행할 수 있습니다.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는 SQL 도구와 독립적으로 설치되며, 핵심 엔진 프로세스 외부인 확장성 프레임워크에서 실행됩니다.MRO is installed independently of SQL tools, and is executed outside of core engine processes, in the extensibility framework. 설치하는 동안 오픈 소스 라이선스 사용 약관에 동의해야 합니다.During installation, you must consent to the terms of the open-source license. 그 후에 R의 다른 오픈 소스 배포에서 실행하는 것처럼 추가 수정 없이 표준 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는 기본 R 실행 파일을 수정하지 않지만, 설치 프로그램에서 설치하는 R 버전을 사용해야 합니다. 해당 버전에서 독점 패키지를 빌드하고 테스트했기 때문입니다.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. MRO가 CRAN에서 얻을 수 있는 기본 배포판 R과 어떤 차이가 있는지 자세히 알아보려면 R 언어와 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.

설치 프로그램을 통해 설치된 R 기본 패키지 배포판은 인스턴스와 연결된 폴더에서 찾을 수 있습니다.The R base package distribution installed by Setup can be found in the folder associated with the instance. 예를 들어 R Services를 SQL Server 기본 인스턴스에 설치한 경우 R 라이브러리는 기본적으로 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. 마찬가지로, 기본 인스턴스와 연결된 R 도구는 기본적으로 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.

병렬 및 분산 워크로드를 처리하기 위해 Microsoft에서 추가한 R 패키지에는 다음 라이브러리가 포함되어 있습니다.R packages added by Microsoft for parallel and distributed workloads include the following libraries.

라이브러리Library 설명Description
RevoScaleRRevoScaleR 데이터 원본 개체와 데이터 탐색, 조작, 변환 및 시각화를 지원합니다.Supports data source objects and data exploration, manipulation, transformation, and visualization. rxLinMod와 같이 다양한 확장 가능한 기계 학습 모델뿐 아니라 원격 컴퓨팅 컨텍스트 만들기도 지원합니다.It supports creation of remote compute contexts, as well as a various scalable machine learning models, such as rxLinMod. API는 너무 커서 메모리에 맞출 수 없는 데이터 집합을 분석하고 여러 코어 또는 프로세서에 분배되는 계산을 수행하도록 최적화되었습니다.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. 분석에 사용되는 데이터를 더 빠르게 이동하고 스토리지하기 위해 RevoScaleR 패키지는 XDF 파일 형식도 지원합니다.The RevoScaleR package also supports the XDF file format for faster movement and storage of data used for analysis. XDF 형식은 열 형식 스토리지를 사용하고, 이식 가능하고, 텍스트, SPSS 또는 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 속도와 정확도에 최적화된 기계 학습 알고리즘과 텍스트 및 이미지 작업을 위한 인라인 변환이 포함되어 있습니다.Contains machine learning algorithms that have been optimized for speed and accuracy, as well as in-line transformations for working with text and images. 자세한 내용은 SQL Server의 MicrosoftML을 참조하세요.For more information, see MicrosoftML in SQL Server.

SQL Server에서 R 사용Using R in SQL Server

기본 함수를 사용하여 R 스크립트를 작성할 수 있지만, 다중 처리를 활용하려면 RevoScaleRMicrosoftML 모듈을 R 코드로 가져온 다음, 해당 함수를 호출하여 병렬로 실행되는 모델을 만들어야 합니다.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.

지원되는 데이터 원본으로는 ODBC 데이터베이스, SQL Server, 그리고 다른 원본 또는 R 솔루션과 데이터를 교환할 수 있는 XDF 파일 형식이 있습니다.Supported data sources include ODBC databases, SQL Server, and XDF file format to exchange data with other sources, or with R solutions. 입력 데이터는 테이블 형식이어야 합니다.Input data must be tabular. 모든 R 결과는 데이터 프레임 형식으로 반환되어야 합니다.All R results must be returned in the form of a data frame.

지원되는 컴퓨팅 컨텍스트로는 로컬 또는 원격 SQL Server 컴퓨팅 컨텍스트가 있습니다.Supported compute contexts include local, or remote SQL Server compute context. 원격 컴퓨팅 컨텍스트는 워크스테이션 같은 한 컴퓨터에서 시작하는 코드 실행을 참조하지만, 이후에 스크립트 실행을 원격 컴퓨터로 전환합니다.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. 컴퓨팅 컨텍스트를 전환하려면 두 시스템의 RevoScaleR 라이브러리가 동일해야 합니다.Switching the compute context requires that both systems have the same RevoScaleR library.

예상하시겠지만, 로컬 컴퓨팅 컨텍스트에는 데이터베이스 엔진 인스턴스와 동일한 서버에서 실행되는 R 코드와 T-SQL 내 또는 저장 프로시저에 포함된 코드가 들어 있습니다.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. 또한 원격 컴퓨팅 컨텍스트를 정의하여 로컬 R IDE에서 코드를 실행하고 SQL Server 컴퓨터에서 스크립트를 실행할 수 있습니다.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.

실행 아키텍처Execution architecture

다음 다이어그램은 SQL Server 컴퓨팅 컨텍스트를 사용하여 지원되는 각 시나리오(데이터베이스 내에서 스크립트 실행, R 명령줄에서 원격 실행)에서 SQL Server 구성 요소와 R 런타임 간에 이루어지는 상호 작용을 보여줍니다.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.

SQL Server 데이터베이스 내에서 실행되는 R 스크립트R scripts executed from SQL Server in-database

SQL Server "내부"에서 실행되는 R 코드는 저장 프로시저를 호출하여 실행됩니다.R code that is run from "inside" SQL Server is executed by calling a stored procedure. 따라서 저장 프로시저 호출을 만들 수 있는 모든 애플리케이션은 R 코드의 실행을 시작할 수 있습니다.Thus, any application that can make a stored procedure call can initiate execution of R code. 이후 SQL Server는 다음 다이어그램에 요약된 대로 R 코드의 실행을 관리합니다.Thereafter SQL Server manages the execution of R code as summarized in the following diagram.

rsql_indb780-01

  1. R 런타임에 대한 요청은 저장 프로시저 sp_execute_external_script에 전달된 매개 변수 @language='R' 에 의해 표시됩니다.A request for the R runtime is indicated by the parameter @language='R' passed to the stored procedure, sp_execute_external_script. SQL Server는 실행 패드 서비스에 이 요청을 보냅니다.SQL Server sends this request to the launchpad service. Linux에서 SQL은 실행 패드 서비스를 사용하여 각 사용자에 대한 별도의 실행 패드 프로세스와 통신합니다.In Linux, SQL uses a launchpadd service to communicate with a separate launchpad process for each user. 자세한 내용은 확장성 아키텍처 다이어그램을 참조하세요.See the Extensibility architecture diagram for details.
  2. 실행 패드 서비스가 적절한 시작 관리자(여기서는 RLauncher)를 시작합니다.The launchpad service starts the appropriate launcher; in this case, RLauncher.
  3. RLauncher가 외부 R 프로세스를 시작합니다.RLauncher starts the external R process.
  4. BxlServer는 R 런타임과 조율하여 SQL Server와의 데이터 교환 및 작업 결과 저장을 관리합니다.BxlServer coordinates with the R runtime to manage exchanges of data with SQL Server and storage of working results.
  5. SQL Satellite는 SQL Server를 사용하여 관련 작업 및 프로세스에 대한 통신을 관리합니다.SQL Satellite manages communications about related tasks and processes with SQL Server.
  6. BxlServer는 SQL Satellite를 사용하여 상태 및 결과를 SQL Server에 전달합니다.BxlServer uses SQL Satellite to communicate status and results to SQL Server.
  7. SQL Server는 결과를 얻고 관련 작업과 프로세스를 닫습니다.SQL Server gets results and closes related tasks and processes.

원격 클라이언트에서 실행되는 R 스크립트R scripts executed from a remote client

Microsoft R을 지원하는 원격 데이터 과학 클라이언트에서 연결할 때 RevoScaleR 함수를 사용하여 SQL Server의 컨텍스트에서 R 함수를 실행할 수 있습니다.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. 이 워크플로는 이전 워크플로와 다르며 다음 다이어그램에 요약되어 있습니다.This is a different workflow from the previous one, and is summarized in the following diagram.

rsql_fromR2db-01

  1. RevoScaleR 함수의 경우 R 런타임은 BxlServer를 호출하는 연결 함수를 호출합니다.For RevoScaleR functions, the R runtime calls a linking function which in turn calls BxlServer.
  2. BxlServer는 Microsoft R과 함께 제공되며 R 런타임과 별도의 프로세스로 실행됩니다.BxlServer is provided with Microsoft R and runs in a separate process from the R runtime.
  3. BxlServer가 연결 대상을 결정하고 ODBC를 통해 연결을 시작하여 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가 SQL Server 인스턴스에 대한 연결을 엽니다.BxlServer opens a connection to the SQL Server instance.
  5. R 호출의 경우 실행 패드 서비스가 호출되며, 이 서비스가 해당 시작 관리자 RLauncher를 시작합니다.For an R call, the launchpad service is invoked, which is turn starts the appropriate launcher, RLauncher. 이후 R 코드의 처리는 T-SQL에서 R 코드를 실행하는 프로세스와 비슷합니다.Thereafter, processing of R code is similar to the process for running R code from T-SQL.
  6. RLauncher가 SQL Server 컴퓨터에 설치된 R 런타임의 인스턴스를 호출합니다.RLauncher makes a call to the instance of the R runtime that is installed on the SQL Server computer.
  7. 결과가 BxlServer로 반환됩니다.Results are returned to BxlServer.
  8. SQL Satellite가 SQL Server와의 통신과 관련 작업 개체 정리를 관리합니다.SQL Satellite manages communication with SQL Server and cleanup of related job objects.
  9. SQL Server가 클라이언트에 결과를 전달합니다.SQL Server passes results back to the client.

관련 항목:See also