출처 : https://learn.microsoft.com/ko-kr/training/modules/secure-data-manage-users-azure-synapse-serverless-sql-pools/

 

Azure Synapse 서버리스 SQL 풀에서 데이터 보안 및 사용자 관리 - Training

Azure Synapse 서버리스 SQL 풀에서 데이터 보안 및 사용자 관리

learn.microsoft.com

 

학습 목표

  • Azure Synapse 서버리스 SQL 풀에서 인증 방법 선택
  • Azure Synapse 서버리스 SQL 풀의 사용자 관리
  • Azure Synapse 서버리스 SQL 풀의 사용자 권한 관리

 

 

 

Azure Synapse 서버리스 SQL 풀에서 인증 방법 선택

 - 서버리스 SQL 풀 인증은 엔드포인트에 연결할 때 사용자가 자신의 ID를 증명하는 방법을 나타낸다. 지원되는 두가지 인증 유형은 다음과 같다.

  • SQL 인증 : 사용자 이름과 암호 사용
  • Microsoft Entra ID 인증 : 다단계 인증 설정 가능, Active Directory 인증(통합 보안) 사용

 

[권한 부여]

 - 사용자가 서버리스 SQL 풀 데이터베이스 내에서 수행할 수 있는 작업을 나타내며 사용자 계정의 데이터베이스 역할 멤버 자격 및 개체 수준 권한으로 제어된다.

 - SQL 인증을 사용하는 경우, SQL 사용자는 서버리스 SQL풀에만 존재하며 권한의 범위는 서버리스 SQL 풀의 개체로 지정된다. SQL 사용자는 서버리스 SQL 풀 범위에서만 존재하므로 다른 서비스의 보안 개체에 대한 액세스는 SQL 사용자에게 직접 부여할 수 없다. SQL 사용자는 스토리지 계정의 파일에 액세스하기 위한 권한을 부여받아야 한다.

 - Microsoft Entra 인증을 사용하는 경우, 서버리스 SQL 풀 및 Azure Storage와 같은 기타 서비스에 로그인하고 Microsoft Entra 사용자에게 권한을 부여할 수 있다.

 

[스토리지 계정에 액세스]

 - 서버리스 SQL 풀 서비스에 로그인한 사용자는 Azure Storage의 파일에 액세스하고 쿼리할 수 있는 권한이 있어야 한다. 서버리스 SQL 풀에서 지원하는 권한 부여 유형은 다음과 같다.

  • 익명 액세스 : 익명 액세스를 허용하는 Azure 스토리지 계정에 있는 공개적으로 사용 가능한 파일에 액세스한다.
  • 공유 액세스 서명 (SAS) : 스토리지 계정의 리소스에 대한 위임된 액세스를 제공한다. SAS를 사용하면 계정 키를 공유하지 않고 스토리지 계정의 리소스에 대한 액세스 권한을 클라이언트에 부여할 수 있다. SAS는 SAS를 사용하는 클라이언트에 부여하는 액세스 유형에 대한 세부적인 제어(유효성 간격, 부여된 권한, 허용되는 IP 주소 범위, 허용 되는 프로토콜)를 제공한다.
  • 관리 ID : 서버리스 SQL 풀을 위한 Azure 서비스를 제공하는 Microsoft Entra ID의 기능. 또한 Microsoft Entra ID에 자동으로 관리 ID를 배포한다. 이 ID는 Azure Storage에서 데이터 액세스에 대한 요청을 승인하는데 사용될 수 있다. 데이터에 액세스하기 전에 Azure Storage 관리자가 데이터에 액세스할 수 있는 권한을 관리 ID에 부여해야 한다. 관리 ID 에 대한 권한 부여는 다른 Microsoft Entra 사용자에게 권한 부여와 동일한 방식으로 수행된다.
  • 사용자 ID : "통과"라고도 하는 것은 서버리스 SQL 풀에 로그인한 Microsoft Entra 사용자의 ID를 사용하여 데이터에 대한 액세스 권한을 부여하는 권한 부여 형식이다. 데이터에 액세스하기 전에 Azure Storage 관리자는 Microsoft Entra 사용자에게 데이터에 액세스할 수 있는 권한을 부여해야 한다. 이 권한 부여 형식은 서버리스 SQL풀에 로그인한 Microsoft Entra 사용자를 사용하므로 SQL 사용자 유형에는 지원되지 않는다.

- 데이터베이스 사용자에 대해 지원되는 권한 부여 유형

인증 형식 SQL 사용자 Microsoft Entra 사용자
사용자 ID X O
SAS O O
관리 ID X O

 

 

- 지원되는 스토리지 및 권한 부여 유형

권한 부여 유형 Blob Storage ADLS Gen1 ADLS Gen2
사용자ID O X O
SAS O O O
관리 ID O O O

 

 

 

 

Azure Synapse 서버리스 SQL 풀의 사용자 관리

 - 관리 > 액세스 제어 메뉴에서 가능

 

 

Azure Synapse 서버리스 SQL 풀의 사용자 권한 관리

  - 데이터를 보호하기 위해 Azure Storage는 Azure RBAC(Azure 역할 기반 액세스 제어) 및 ACL(액세스 제어 목록)을 모두 지원하는 액세스 제어 모델을 구현한다.

 - 보안 주체를 파일 및 디렉터리에 대한 액세스 수준과 연결할 수 있다. 해당 연결은 ACL에 캡처된다. 스토리지 계정의 각 파일과 디렉터리에는 액세스 제어 목록이 있다. 보안 주체가 파일이나 디렉터리에 대한 작업을 시도하는 경우 ACL 검사는 해당 보안 주체에게 작업을 수행할 수 있는 올바른 권한 수준이 있는지 확인한다.

 - 액세스 제어 목록에는 다음 두가지 종류가 있다.

  • 액세스 ACL : 개체에 대한 액세스를 제어한다. 파일과 디렉터리 모두에 액세스 ACL이 있다.
  • 기본 ACL : 디렉터리에 생성된 모든 자식 항목의 액세스 ACL을 결정하는 디렉터리와 연결된 ACL 템플릿이다. 파일에는 기본 ACL이 없다. 

 - 액세스 ACL 및 기본 ACL의 구조는 모두 동일하다.

 - 컨테이너 개체에 대한 권한은 읽기, 쓰기, 실행이며 다음 표와 같이 파일 및 디렉터리에서 사용할 수 있다.

 

* 권한 수준

사용권한 파일 디렉터리
읽기(R) 파일의 내용을 읽을 수 있다. 디렉터리의 내용을 나열하려면 읽기 및 실행이 필요하다.
쓰기(W) 쓰거나 파일에 추가할 수 있다. 디렉터리에 자식 항목을 만들려면 쓰기 및 실행이 필요하다.
실행(X) Data Lake Storage Gen2의 컨텍스트에서는 의미가 없다. 디렉터리의 자식 항목을 트래버스하는데 필요하다.

 

 

[ACL 설정 지침]

 - 항상 Microsoft Entra 보안 그룹을 ACL 항목에 할당된 주체로 사용한다. 개별 사용자 또는 서비스 주체를 직접 할당할 수 있는 기회를 거부한다. 

 - 이 구조를 사용하면 ACL을 전체 디렉터리 구조에 다시 적용하지 않고도 사용자 또는 서비스 주체를 추가하고 제거할 수 있다. 대신 적절한 Microsoft Entra 보안 그룹에서 사용자 및 서비스 주체를 추가하거나 제거할 수 있다.

 - 그룹은 여러 방법으로 설정할 수 있다. 예를 들어 서버에서 생성된 로그 데이터를 포함하는 /LogData 디렉터리가 있다고 가정해 본다. ADF는 해당 폴더에 데이터를 수집한다. 서비스 엔지니어링 팀의 특정 사용자가 로그를 업로드하고 해당 폴더의 다른 사용자를 관리하며, 다양한 Databricks 클러스터는 해당 폴더의 로그를 분석한다.

 - LogsWriter 그룹과 LogsReader 그룹을 만들어 해당 활동을 활성화할 수 있다. 그룹을 만든 후, 다음과 같이 권한을 할당할 수 있다.

  • rwx 권한이 있는 /LogData 디렉터리의 ACL에 LogsWriter 그룹을 추가한다.
  • r-x권한이 있는 /LogData 디렉터리의 ACL에 LogsReader 그룹을 추가한다.
  • ADF에 대한 서비스 주체 개체 또는 MSI(관리 서비스 ID)를 LogsWriters 그룹에 추가한다.
  • LogsWriter 그룹에 서비스 엔지니어링 팀의 사용자를 추가한다.
  • Databricks에 대한 서비스 주체 개체 또는 MSI를 LogsReader 그룹에 추가한다.

 - 서비스 엔지니어링팀의 사용자가 퇴사하는 경우 LogsWriter그룹에서 제거하면 된다. 해당 사용자를 그룹에 추가하지 않고 해당 사용자에 대한 전용 ACL 항목을 추가한 경우 /LogData 디렉터리에서 해당 ACL 항목을 제거해야 한다. 또한 /LogData 디렉터리의 전체 디렉터리 계층 구조에 있는 모든 하위 디렉터리 및 파일에서 항목을 제거해야 한다.

 

 

[서버리스 SQL 풀 사용자에게 필요한 역할]

 - 읽기전용 권한 : Storage Blob 데이터 읽기 권한자라는 역할 할당

 - 읽기/쓰기 권한 : Storage Blob 데이터 기여자 역할 할당, 사용자가 CETAS에 액세스해야 하는 경우도 필요

 

 

[데이터베이스 수준 권한]

 - 사용자에게 더 세부적인 액세스를 제공하려면 SQL 구문을 사용하여 로그인 및 사용자를 만들어야 한다.

 1. 로그인 만들기

use master
CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;

 2. 사용자 만들기

use yourdb -- Use your DB name
CREATE USER alias FROM LOGIN [alias@domain.com];

 3. 지정된 역할의 구성원에 사용자 추가

use yourdb -- Use your DB name
alter role db_datareader 
Add member alias -- Type USER name from step 2
-- You can use any Database Role which exists 
-- (examples: db_owner, db_datareader, db_datawriter)
-- Replace alias with alias of the user you would like to give access and domain with the company domain you are using.

 

 

[서버 수준 권한]

 - 사용자에게 모든 서버리스 SQL 풀 데이터베이스에 대한 전체 액세스 권한을 부여하려면 다음 예제 단계 따른다.

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

출처 : https://learn.microsoft.com/ko-kr/training/modules/create-metadata-objects-azure-synapse-serverless-sql-pools/

 

Azure Synapse Analytics에서 레이크 데이터베이스 만들기 - Training

Azure Synapse Analytics에서 레이크 데이터베이스 만들기

learn.microsoft.com

 

학습 목표

  • 레이크 데이터베이스 개념 및 구성 요소 이해
  • Azure Synapse Analytics의 데이터베이스 템플릿 설명
  • 레이크 데이터베이스 만들기

레이크 데이터베이스 개념 이해

  - 데이터 레이크에는 고정된 스키마가 없다. 데이터는 구조화되거나 반구조화되거나 구조화되지 않은 파일에 저장된다. 애플리케이션 및 데이터 분석가는 자신이 선택한 도구를 사용하여 관계형 데이터베이스 시스템의 제약 조건 없이 데이터 레이크 파일로 직접 작업할 수 있다.

 - 레이크 데이터베이스는 데이터 레이크에 있는 하나 이상의 파일에 관계형 메타데이터 계층을 제공한다. 열 이름 및 데이터 형식뿐만 아니라 기본 및 외래키 열간의 관계를 비롯해 테이블에 대한 정의를 포함하는 레이크 데이터베이스를 만들 수 있다. 테이블은 데이터 레이크의 파일을 참조하므로 관계형 의미 체계를 데이터 작업에 적용하고 SQL을 사용하여 쿼리할 수 있다. 그러나 데이터 파일의 스토리지는 데이터베이스 스키마에서 분리된다. 일반적으로 관계형 데이터베이스 시스템에서 제공하는 것보다 더 많은 유연성을 사용할 수 있다.

 

[레이크 데이터베이스 스키마]

 - Azure Synapse Analytics에서 레이크 데이터베이스를 만들고 데이터를 저장해야 하는 엔터티를 나타내는 테이블을 정의할 수 있다. 입증된 데이터 모델링 원칙을 적용하여 테이블 간의 관계를 만들고 테이블, 열, 그 외 데이터베이스 개체에 적절한 명명 규칙을 사용할 수 있다. 

 - Azure Synapse Analytics에는 기존 데이터베이스에 적용할 데이터베이스 디자인과 동일한 여러 모범 사례를 사용하여 복잡한 데이터베이스 스키마를 모델링하는데 사용할 수 있는 그래픽 데이터베이스 디자인 인터페이스가 포함되어 있다.

[레이크 데이터베이스 스토리지]

 - 레이크 데이터베이스의 테이블에 대한 데이터는 데이터 레이크에 Parquet 또는 CSV 파일로 저장된다. 이 파일은 데이터베이스 테이블과 상관없이 독립적으로 관리할 수 있으므로 다양한 데이터 처리 도구 및 기술을 사용하여 데이터 수집 및 조작을 더욱 쉽게 관리할 수 있다.

[레이크 데이터베이스 컴퓨팅]

 - 정의한 테이블을 통해 데이터를 쿼리하고 조작하려면 Azure Synapse 서버리스 SQL풀을 사용하여 SQL 쿼리를 실행하거나 Azure Synapse Spark 풀을 사용하여 Spark SQL API를 이용한 테이블 작업을 수행할 수 있다.

 

 

 

데이터베이스 템플릿 탐색

 - 빈 스키마에서 레이크 데이터베이스를 만들 수 있다. 이 스키마에서는 테이블에 대한 정의와 테이블 간 관계를 추가할 수 있다. 그러나 Azure Synapse Analytics는 여러 비즈니스 시나리오에서 발견되는 일반적인 스키마를 반영하는 포괄적인 데이터베이스 템플릿 컬렉션을 제공한다.

 - 엔터프라이즈 데이터베이스 템플릿 중 하나를 레이크 데이터베이스 만드기의 시작점으로 사용하거나 빈 스키마로 시작하여 필요에 따라 템플릿에서 테이블을 추가하고 수정할 수 있다.

 

 

레이크 데이터베이스 만들기

 - Azure Synapse Studio에서 레이크 데이터베이스 디자이너를 사용하여 레이크 데이터베이스를 만들 수 있다. 먼저 데이터 페이지에 새 레이크 데이터베이스를 추하거거나, 갤러리에서 템플릿을 선택하거나 빈 레이크 데이터베이스로 시작한다. 그런 다음 시각적 데이터베이스 디자이너 인터페이스를 사용하여 테이블을 추가하고 사용자를 지정한다. 

 

[데이터베이스 디자이너]

 - 테이블간 관계를 편집할 수 있는 UI 제공 등

 

 

 

레이크 데이터베이스 사용

 - 레이크 데이터베이스를 만든 후 데이터 레이크의 적절한 폴더에 테이블 스키마와 일치하는 데이터 파일을 저장하고 SQL을 사용하여 이 파일을 쿼리할 수 있다.

 

[서버리스 SQL 풀 사용]

 - 예시

USE RetailDB;
GO

SELECT CustomerID, FirstName, LastName
FROM Customer
ORDER BY LastName;

 - OPENROWSET 함수를 사용하거나 기본 파일 스토리지에서 데이터에 액세스하기 위한 추가 코드를 포함할 필요가 없다. 서버리스 SQL 풀은 파일에 대한 매핑을 처리한다.

 

[Apache Spark 풀 사용]

출처 : https://learn.microsoft.com/ko-kr/training/modules/use-azure-synapse-serverless-sql-pools-for-transforming-data-lake/

 

Azure Synapse 서버리스 SQL 풀을 사용하여 데이터 레이크의 데이터 변환 - Training

Azure Synapse 서버리스 SQL 풀을 사용하여 데이터 레이크의 데이터 변환

learn.microsoft.com

 

소개

CREATE EXTERNAL TABLE AS SELECT (CETAS문)을 사용하여 데이터를 변환하고 서버리스 SQL 데이터 베이스의 관계형 테이블을 통해 쿼리하거나 파일 시스템에서 직접 처리할 수 있는 데이터 레이크의 파일에 결과를 저장하는 방법을 알아본다.

 

목표

  • CETAS문을 사용하여 데이터를 변환한다.
  • 저장 프로세저에 CETAS문을 캡슐화 한다.
  • 파이프라인에 데이터 변환 저장 프로시저를 포함한다.

 

 


 

[CREATE EXTERNAL TABLE AS SELECT 문을 사용하여 데이터 파일 변환]

- Azure Synapse 서버리스 SQL풀을 사용하여 데이터를 변환하고 추가 처리 또는 쿼리를 위해 데이터를 데이터 레이크에 파일로 유지하는 SQL문을 실행할 수 있다.

- Transact-SQL 구문에 익숙하면 원하는 특정 변환을 적용하는 SELECT문을 만들고 SQL을 사용하여 쿼리할 수 있는 메타데이터 테이블 스키마로 SELECT문으리 결과를 선택한 파일 형식으로 저장할 수 있다.

- CETAS문에는 유효한 데이터 원본의 데이터를 쿼리하고 조작하는 SELECT 문이 포함되어 있다. SELECT 문의 결과는 파일에 저장된 데이터를 통해 관계형 추상화 기능을 제공하는 데이터베이스의 메타데이터 개체인 외부 테이블에 유지된다. 

 - 이 기술을 적용하면 SQL을 사용하여 파일 또는 테이블에서 데ㅣ터를 추출 및 변환하고 다운스트림 처리 또는 분석을 위해 변환된 결과를 저장할 수 있다. 변환된 데이터의 후속 작업은 SQL 풀 데이터베이스의 관계형 테이블에 대해 수행하거나 기본 데이터 파일에 대해 직접 수행할 수 있다.

 

 

CETAS를 지원하는 외부 데이터베이스 개체 만들기

- CETAS 식을 사용하려면 서버리스 또는 전용 SQL풀의 데이터베이스에서 다음 유형의 개체를 만들어야 한다. 서버리스 SQL 풀을 사용하는 경우 기본 제공 데이터베이스가 아닌 사용자 지정 데이터베이스(CREATE DATABASE로 만든)에 이러한 개체를 만든다.

 

외부 데이터 원본

 - 외부 데이터 원본은 데이터 레이크의 파일 시스템 위치에 대한 연결을 캡슐화한다. 그런다음, 이 연결을 사용하여 CETAS문에서 만든 외부 테이블의 데이터 파일이 저장되는 상대 경로를 지정할 수 있다.

- CETAS문의 원본 데이터가 동일한 데이터 레이크 경로의 파일에 있는 경우 OPENROWSET 함수에서 동일한 외부 데이터 원본을 사용하여 쿼리할 수 있다. 또는 원본 파일에 대한 별도의 외부 데이터 원본을 만들거나 OPENROWSET 함수에서 정규화된 파일 경로를 사용할 수 있다.

 - 외부 데이터 원본을 만들려면 "CREATE EXTERNAL DATA SOURCE"문을 사용한다.

-- Create an external data source for the Azure storage account
CREATE EXTERNAL DATA SOURCE files
WITH (
    LOCATION = 'https://mydatalake.blob.core.windows.net/data/files/',
    TYPE = HADOOP, -- For dedicated SQL pool
    -- TYPE = BLOB_STORAGE, -- For serverless SQL pool
    CREDENTIAL = storageCred
);

 

- 이전 예제에서는 외부 데이터 원본을 사용하는 쿼리를 실행하는 사용자에게 파일에 액세스할 수 있는 충분한 권한이 있다고 가정한다. 다른 방법은 모든 사용자에게 직접 읽을 수 있는 권한을 부여하지 않고 파일 데이터에 액세스하는데 사용할 수 있도록 외부 데이터 원본의 자격 증명을 캡슐화하는 것이다.

CREATE DATABASE SCOPED CREDENTIAL storagekeycred
WITH
    IDENTITY='SHARED ACCESS SIGNATURE',  
    SECRET = 'sv=xxx...';

CREATE EXTERNAL DATA SOURCE secureFiles
WITH (
    LOCATION = 'https://mydatalake.blob.core.windows.net/data/secureFiles/'
    CREDENTIAL = storagekeycred
);

 

팁)

SAS 인증 외에도 관리 ID(Azure Synapse 작업 영역에서 사용하는 Microsoft Entra ID), 특정 Microsoft Entra 보안 주체 또는 쿼리를 실행하는 사용자의 ID 기반의 패스스루 인증(기본 인증 유형)을 사용하는 자격 증명을 정의할 수 있다. 

 

외부 파일 형식 : 

CETAS 문은 파일에 저장된 데이터가 있는 테이블을 만든다. 만들려는 파일 형식을 외부 파일 형식으로 지정해야 한다.

외부 파일 형식을 만들려면 다음 예제와 같이 CREATE EXTERNAL FILE FORMAT 문을 사용한다.

CREATE EXTERNAL FILE FORMAT ParquetFormat
WITH (
        FORMAT_TYPE = PARQUET,
        DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
    );

 

CETAS 문 사용

 - 외부 데이터 원본 및 외부 파일 형식을 만든 후 CETAS 문을 사용하여 데이터를 변환하고 결과를 외부 테이블에 저장할 수 있다.

- 예를 들어 변환하려는 원본 데이터 레이크의 폴더에 저장된 쉼표로 구분된 텍스트 파일의 판매 주문으로 구성되어 있다고 가정한다. "특수 주문"으로 표시된 주문만 포함되도록 데이터를 필터링하고 변환된 데이터를 동일한 데이터 레이크의 다른 폴더에 Parquet 파일로 저장하려고 한다. 다음 예제와 같이 원본 폴더와 대상 폴더 모두에 동일한 외부 데이터 원본을 사용할 수 있다.

CREATE EXTERNAL TABLE SpecialOrders
    WITH (
        -- details for storing results
        LOCATION = 'special_orders/',
        DATA_SOURCE = files,
        FILE_FORMAT = ParquetFormat
    )
AS
SELECT OrderID, CustomerName, OrderTotal
FROM
    OPENROWSET(
        -- details for reading source files
        BULK 'sales_orders/*.csv',
        DATA_SOURCE = 'files',
        FORMAT = 'CSV',
        PARSER_VERSION = '2.0',
        HEADER_ROW = TRUE
    ) AS source_data
WHERE OrderType = 'Special Order';

 

- 이전 예제의 LOCATION 및 BULK 매개 변수는 가각 결과 및 소스 파일에 대한 상대 경로. 경로는 파일 외부 데이터 원본에서 참조하는 파일 시스템 위치를 기준으로 한다.

- 외부 데이터 원본을 사용하여 외부 테이블의 변환된 데이터를 저장할 위치를 지정해야 한다는 것이다. 파일 기반 원본 데이터가 동일한 폴더 계층 구조에 저장되는 경우 동일한 외부 데이터 원본을 사용할 수 있다. 그렇지 않으면 다음 예제와 같이 두번째 데이터 원본을 사용하여 원본 데이터에 대한 연결을 정의하거나 정규화된 경로를 사용할 수 있다.

 

 

외부 테이블 삭제

- 변환된 데이터를 포함하는 외부 테이블이 더 이상 필요하지 않은 경우 다음과 같이 DROP EXTERNAL TABLE 문을 사용하여 데이터베이스에서 해당 테이블을 삭제할 수 있다. 

DROP EXTERNAL TABLE SpecialOrders;

- 그러나 외부 테이블은 실제 데이터가 포함된 파일에 대한 메타데이터 추상화임을 이해하는 것이 중요하다. 외부 테이블을 삭제해도 기본 데이터는 삭제되지 않는다.

 

 

[저장 프로시저에서 데이터 변환 캡슐화]

- 데이터를 변환해야 할 때마다 스크립트에서 CREATE EXTERNAL TABLE AS SELECT (CETAS)문을 실행할 수 있지만 저장 프로시저에서 변환 작업을 캡슐화하는 것이 좋다. 이 방식을 사용하면 매개 변수를 제공하고 출력을 검색하고 단일 프로시저 호출에 추가 논리를 포함함으로써 데이터 변환을 보다 쉽게 운영할 수 있다. 

 

 

클라이언트에서 서버 트워크로의 트래픽 감소

 - 프로시저의 명령은 단일 코드 일괄 처리로 실행된다. 프로시저를 실행하는 호출만 네트워크를 통해 전송되므로 서버와 클라이언트간의 네트워크 트래픽을 크게 줄일 수 있다.

 

보안 경계 제공

- 여러 사용자 및 클라이언트 프로그램이 기본 데이터베이스 개체에 대한 직접적인 사용 권한이 없는 경우에도 프로시저를 통해 이러한 기본 개체에 대해 작업을 수행할 수 있다. 이 프로시저는 수행되는 프로세스 및 활동을 기본 데이터베이스 개체를 보호한다. 개별 개체 수준에서 권한을 부여해야 하는 요구 사항을 제거하고 보안 계층을 간소화한다.

 

용이한 유지 관리

 - 데이터 변환과 관련된 논리 또는 파일 시스템 위치의 변경 내용은 저장 프로지서에서만 적용할 수 있다. 클라이언트 애플리케이션 또는 기타 호출 함수에 대한 업데이트가 필요하지 않는다.

 

성능 향상

 - 저장 프로시저는 처음 실행될 때 컴파일되고 결과 실행 계획은 캐시에 보관되어 동일한 저장 프로시저의 후속 실행 시 다시 사용된다. 따라서 프로시저를 처리하는데 시간이 적게 걸린다.

 

 

[파이프라인에 데이터 변환 저장 프로시저 포함]

 - 저장 프로시저에서 CREATE EXTERNAL TABLE AS SELECT (CETAS)문을 캡슐화하면 반복적으로 수행해야 할 수 있는 데이터 변환을 보다 쉽게 조작할 수 있다. 

 - Azure Synapse Analytics 및 Azure Data Factory에서는 데이터 레이크 파일을 호스트하는 Azure Data Lake Store Gen2 스토리지 계정 및 서버리스 SQL 풀을 포함하여 연결된 서비스에 연결하는 파이프라인을 만들 수 있다. 이를 통해 전체 ETL 파이프라인의 일부로 저장 프로시저를 호출할 수 있다.

 - 예를 들어 다음 작업을 포함하는 파이프라인을 만들 수 있다.

  • 데이터 레이크에서 변환된 데이터에 대한 대상 폴더를 삭제하는 삭제 작업
  • 서버리스 SQL풀에 연결하고 CETAS 작업을 캡슐화하는 저장 프로시저를 실행하는 저장 프로시저 작업
  •  

+ Recent posts