가상 테이블 만들기

Objective

After completing this lesson, you will be able to 클래식 스키마와 HDI 컨테이너에서 가상 테이블을 생성, 관리하고 원격 소스에서 가상 테이블을 사용합니다.

가상 테이블

원격 오브젝트 액세스

SAP HANA는 원격 시스템(원격 오브젝트)의 특정 오브젝트에서 데이터에 액세스하기 위해 가상 테이블을 구현합니다. 가상 테이블은 카탈로그 오브젝트이며스키마에 있습니다.

가상 테이블을 통해 하나의 원격 오브젝트(아래 예시의 테이블 또는 뷰)에 액세스할 수 있습니다.

이 슬라이드에서는 가상 테이블의 개념을 설명합니다.

노트

여기서는 최소한 두 가지 이유로 원격 시스템 "오브젝트"에서 "테이블"이 아닌 아티팩트를 의도적으로 호출합니다.
  • 먼저 원격 아티팩트의 유형은 원격 시스템에 따라 다릅니다. 데이터베이스 시스템에서는 물론 테이블일 수 있습니다. 그러나 파일 시스템에는 테이블이 없지만 파일은 있습니다. 구조가 잘 정의된 .csv 또는 .txt 파일은 대부분 가상 테이블로 변환할 수 있지만, 이는 어댑터의 기능에 따라 달라지며 특히 열 유형을 식별하기 위한 메타데이터 정의가 필요합니다.
  • 또한 원격 데이터베이스 시스템에서도 일반적으로 테이블과뷰가 있습니다. 대부분의 어댑터는 비슷한 방식으로 원격 테이블과 원격 뷰에 액세스할 수 있습니다.

가상 테이블이 생성되면 데이터베이스 프로세스에서 대상 데이터베이스에 실제로 있는 것처럼 가상 테이블을 사용할 수 있습니다. 그러나 가상 테이블의 핵심 원칙은 로컬 데이터베이스에 데이터를 저장하지 않고 메타데이터만 저장하는 것입니다. 대신 쿼리를 실행할 때마다 지원 원격 소스를 통해 원격 데이터를 표시합니다.

노트

가상 테이블 없이 원격 데이터를 사용할 수도 있습니다. 연결된 데이터베이스 라고 하며 스마트 데이터 액세스 원격 소스에서만 사용할 수 있습니다. 개념, 이점 및 제한사항은 나중에 다룹니다.

가상 테이블 정의

가상 테이블은 정의에 다음 두 부분으로 구성됩니다.

  • 가상 테이블 식별자
  • 원격 소스에 대한 참조를 포함한 원격 오브젝트 식별자
이 슬라이드에는 가상 테이블 특성의 개요가 나와 있습니다.

노트

원격 시스템이 실제로 데이터베이스인 경우에도 원격 데이터베이스의 이름은 <NULL> 수 있다. 원격 소스 오브젝트는 원격 시스템으로 SAP HANA를 사용하는 일부 구성에서 호스트 및 포트를 사용하여 데이터베이스를 이미 결정하기 때문입니다.

다른 원격 시스템 유형에서는 하나의 원격 소스가 여러 데이터베이스에 도달할 수 있는 데이터베이스 서버를 참조할 수 있습니다. 가상 테이블 정의에서 원격 데이터베이스 설정이 필요한 위치입니다.

가상 테이블에 대한 보안 고려

가상 테이블을 생성할 때 원격 소스와 원격 시스템의 가용성 뿐만 아니라 두 시스템 모두에서 사용 가능한 권한과도 관련된 여러 선행조건을 충족해야 합니다. 여기 있습니다.

로컬 시스템

가상 테이블을 생성하려면 로컬 사용자에게 다음 선행조건이 충족되어야 합니다.

  • 원격 소스를 생성한 로컬 사용자에게 이 원격 소스에 가상 테이블을 생성할 수 있는 권한이 자동으로 부여됩니다.
  • 다른 용도로 사용하려면 원격 소스에 대한 CREATE VIRTUAL TABLE 권한이 필요합니다.
  • 어떤 경우든 로컬 사용자에게는 가상 테이블이 저장될 스키마에 대한 CREATE ANY 권한이 필요합니다.

원격 시스템

원격 소스의 자격 증명 구성(또는 해당 원격 소스의 사용자에 대한 기존 보조 자격 증명)에 따라 원격/소스 오브젝트에 액세스할 원격 사용자가 결정됩니다.

주의

원격 소스에 대한 자격 증명이 전혀 없는 경우(기술 사용자 또는 보조 자격 증명) 원격 오브젝트에 액세스할 수 없습니다. 이 작업은 일부 유형의 원격 소스에 대해 수행할 수 있지만 일반적으로 권장되지 않습니다.

일반적으로 원격 데이터베이스 시스템을 가리키는 가상 테이블을 생성할 때 원격 소스 정의에서 파생된 원격 사용자(또는 사용자에게 연결된 기존 보조 자격 증명)에는 권한(SAP HANA) 또는 그에 상응하는 CATALOG READ권한만 필요하지만 반드시 원격 테이블 또는 뷰(또는 스키마 포함)에 대한 SELECT 권한이 필요하지 않습니다.

노트

이를 통해 보조 자격 증명을 사용할 때 편리한 보안 구성이 가능합니다. 실제로 CATALOG READ 권한(또는 이에 상응하는 권한)을 초과하지 않는 사용자는 해당 소스 오브젝트의 데이터를 선택하지 않고도 가상 테이블을 생성할 수 있습니다.

가상 테이블을 생성하는 방법

가상 테이블은 두 가지 방법으로 생성할 수 있습니다.

  • SAP HANA 데이터베이스 탐색기에서 카탈로그를 사용하여
  • SQL 문 사용

그래픽 사용자 인터페이스를 사용한 가상 테이블 설정

서식 기반 편집기에서는 기존 원격 소스를 사용하여 액세스할 수 있는 오브젝트를 나열한 다음 하나 이상의 오브젝트에 대한 가상 오브젝트를 생성합니다.

이 슬라이드에는 원격 소스 오브젝트 리스트를 사용하는 방법이 나와 있습니다.

서식 기반 접근 방식에서는 먼저 원격 오브젝트를 선택한 다음 가상 테이블의 저장 위치와 이름을 지정하는 방법을 정의합니다.

이제 원격 오브젝트를 식별하는 여러 요소에 대해 먼저 살펴보겠습니다.

  • 원격 소스 는 앞에서 설명한 필수 요소입니다.
  • 원격 소스가 특정 데이터베이스를 참조하지 않는 경우 데이터베이스 요소가 일부 원격 소스 유형(일부 어댑터)에 사용됩니다.

    일반적인 사용 케이스는 원격 데이터베이스 시스템이 단일 호스트 및 포트에서 둘 이상의 데이터베이스에 대한 액세스 권한을 부여할 수 있는 경우입니다.

    SAP HANA가 원격 시스템인 경우 원격 소스에서 항상 단일 대상 데이터베이스를 지정합니다. 따라서 데이터베이스 부분은 항상 <NULL>입니다.

  • 스키마

    스키마는 데이터베이스 토폴로지에서 기본 아티팩트입니다. SAP HANA, 테이블, 뷰 및 기타 오브젝트를 포함한 대부분의 데이터베이스 시스템에서는 스키마에 있습니다. 그러나 스키마의 개념이 항상 존재하는 것은 아닙니다. 예를 들어 SDI 파일 어댑터에는 스키마가 없습니다. 따라서 스키마 부분도 <NULL>입니다.

  • 오브젝트

    마지막으로, 원격 오브젝트는 이름으로 식별됩니다. 이 요소는 모든 가상 테이블 정의에서 필수입니다.

가상 테이블을 생성할 오브젝트를 하나 이상 선택한 후에는 로컬 SAP HANA 시스템(대상)에서 가상 테이블의 식별자를 정의해야 합니다.

  • 단일 가상 테이블을 생성하는 경우 대화 상자에서 개체 이름을 묻는 메시지가 표시됩니다. 반대로 가상 테이블을 여러 개 생성할 경우, 예시에 나와 있는 것처럼 대화 상자에서 모든 원격 오브젝트의 이름에 추가될 접두부를 묻습니다.

    힌트

    일반적으로 가상 테이블을 식별하는 데 도움이 되는 접두부를 사용하는 것이 좋습니다. 다시 말해, 가상 테이블에 카탈로그 탐색기에 전용 아이콘이 있는 경우에도 여전히 다른 클래식 행 및 열 테이블과 함께 나열되므로 특정 접두부가 도움이 될 수 있습니다.
  • 마지막으로, 신규 가상 테이블을 생성할 스키마를 지정해야 합니다. 기본적으로 사용자의 스키마가 기본값으로 사용됩니다.

이 동영상을 실행하여 SAP HANA 데이터베이스 탐색기의 그래픽 사용자 인터페이스를 사용하여 가상 테이블을 생성하는 방법을 알아보십시오.

SQL을 사용한 가상 테이블 설정

SAP HANA 데이터베이스 탐색기의 원격 소스 오브젝트 리스트 외에도 SQL 문을 사용하여 가상 테이블을 생성할 수 있습니다. 이 기능은 특히 가상 테이블을 대량으로 생성하려는 경우 원격 오브젝트 식별자를 이미 알고 있을 때 유용합니다.

명령문은 다음과 같습니다.

Code Snippet
12
CREATE VIRTUAL TABLE <schema>.<virtual_table_name> AT <remote_source>.<database>.<schema>.<object_name>;

그래픽 사용자 인터페이스에서 가상 테이블을 생성할 때 원격 오브젝트를 정의하는 방법에 대해 이미 설명한 정보는 동일한 방식으로 적용됩니다. SAP HANA의 SQL 문과 마찬가지로, 식별자를 큰따옴표로 묶거나 대소문자를 구분하지 않고 대문자로 자동 해석해야 합니다.

일부 시나리오에서는 원격 <database> 및/또는 <schema>을(를) "<NULL>"으로 설정해야 할 수 있습니다.

주의

원격 소스 또는 개체 이름에 따옴표가 없는 식별자를 사용하더라도 데이터베이스 또는 스키마에 대한 <NULL> 값은 항상 따옴표로 묶어야 합니다. 큰따옴표가 없으면 SQL 문이 실패합니다.

다음은 원격 EPM_MODEL 스키마의 오브젝트(소스 CL_RS_OP_SDA)를 기반으로 앞서 생성한 것과 동일한 가상 테이블을 생성하는 두 가지 SQL 문의 예입니다.

Code Snippet
12345
CREATE VIRTUAL TABLE "CL_DATA_ENGINEER_FED"."VT_SNWD_PO" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO"; CREATE VIRTUAL TABLE "CL_DATA_ENGINEER_FED"."VT_SNWD_PO_I" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO_I";

세션 사용자가 CL_DATA_ENGINEER_FED인 경우 가상 테이블 식별자에서 이 스키마에 대한 언급을 생략할 수 있습니다.

이 동영상을 실행하여 SQL 문으로 가상 테이블을 생성하는 방법을 알아보십시오.

SAP Business Application Studio 프로젝트의 가상 테이블 정의

HDI 컨테이너에서 원격 오브젝트 액세스

SAP Business Application Studio의 개발 또는 모델링 프로젝트에서 작업할 때 SAP HANA 데이터베이스 모듈(디자인 타임 아티팩트 포함) 내에서 HDI 컨테이너(런타임 아티팩트)에 배포된 원격 소스를 사용하고 가상 테이블을 생성할 수 있습니다.

전용 디자인 유형 아티팩트인 .hdbvirtualtable 이 이 용도로 사용됩니다.

다시 말해, SAP HANA의 원격 소스는 스키마 오브젝트가 아닙니다. 따라서 프로젝트의 HDB 모듈 안에 원격 소스를 생성할 수 없습니다. 그러나 기존 원격 소스를 사용하도록 프로젝트를 설정할 수 있습니다.

이 작업을 수행하는 방법을 살펴보겠습니다.

원격 오브젝트 사용 방법

HDI 컨테이너 내에서 원격 오브젝트를 사용하려면 다음 선행조건이 충족되어야 합니다.

  • 사용자 제공 서비스가 HDI 컨테이너 서비스를 배포할 Cloud Foundry 공간에서 실행되고 있습니다.

    이 사용자 제공 서비스에는 다음 권한을 가진 사용자가 지정되어야 합니다.

    CREATE VIRTUAL TABLE 원격 소스에서 사용할 수 있습니다.

  • 사용자 제공 서비스가 mta.yaml 파일의 종속성 정의에서 프로젝트에 바인딩됩니다.
  • .hdbgrants 파일은 HDI 컨테이너 오브젝트를 소유할 HDI 오브젝트 소유자(#OO) 사용자에게 관련 권한을 부여합니다.

노트

이러한 변경을 수행한 후에 프로젝트를 성공적으로 배포해야 오브젝트 소유자에게 실제로 관련 권한이 부여되어 가상 테이블을 생성할 수 있습니다.

SAP Business Application Studio에서 가상 테이블 생성

SAP Business Application Studio에서 가상 테이블을 생성하려면 해당 .hdbvirtualtable 디자인 타임 파일을 생성합니다. 이 파일은 텍스트 편집기나 전용 편집기에서 편집할 수 있습니다. 후자는 원격 소스 오브젝트 계층구조를 읽을 수 있는 한 가지 이점을 제공합니다.

이 슬라이드에서는 SAP Business Application Studio에서 가상 테이블을 생성하는 방법을 보여줍니다.

텍스트 편집기에서 동일한 디자인 타임 오브젝트는 다음과 같이 표시됩니다.

Code Snippet
12
VIRTUAL TABLE "CL_V_SNWD_PO" AT "CL_RS_OP_SDA"."<NULL>"."EPM_MODEL"."SNWD_PO"

큰따옴표를 사용하면 대문자와 소문자가 일치하지 않게 하는 것이 좋습니다. 선택한 명명 규칙에 따라 필수 항목일 수도 있습니다. 예를 들어, 소문자와 대소문자를 혼합하여 오브젝트 이름을 사용하려는 경우 오브젝트 식별자에서 네임스페이스를 사용하고/또는 이러한 식별자에 점이 포함되어 있습니다.

노트

큰따옴표 구분 기호를 사용하든 일반적으로 사용하지 않을 경우 가상 테이블 정의에서 사용될 때마다 "<NULL>" 키워드를 항상 따옴표로 묶어야 합니다. 이 내용은 위 예제의 데이터베이스 이름 필드에 나와 있습니다.

클래식 스키마에서 생성된 가상 테이블과 비교할 때, SAP Business Application 프로젝트에서 디자인 타임 파일로 정의하는 테이블보다 테이블, 열 뷰 등과 같은 다른 오브젝트에 대한 SAP Business Application Studio 프로젝트에서와 마찬가지로 스키마를 지정하지 않습니다.

명명 규칙에 따라 오브젝트 식별자에 네임스페이스가 포함되는 경우 가상 테이블 이름 필드에 이 네임스페이스를 접두부로 추가해야 합니다(예: <name.space.specification>::<virtual_table_name>).

SAP Business Application Studio 프로젝트에서 디자인 타임 파일로 가상 테이블을 생성하는 방법을 알아보려면 이 비디오를 실행하십시오.

가상 테이블 사용

가상 테이블이 생성되면 적절한 권한이 있는 모든 사용자가 가상 테이블을 사용할 수 있습니다. 필요한 권한을 살펴보겠습니다.

  • 로컬 시스템: 가상 오브젝트에 대한 SELECT 권한

    이 권한은 테이블의 데이터에 액세스하는 데 필요한 기존 권한입니다. 특정 가상 테이블 또는 전체 스키마에 대해 사용자에게 또는 (가급적) 역할을 부여할 수 있습니다.

  • 원격 시스템: 원격 오브젝트의 SELECT

    가상 테이블을 사용하려면 원격 소스 정의에서 파생된 원격 사용자(기술 사용자 또는 이 원격 소스에 대해 사용자에게 지정된 보조 자격 증명)가 원격 오브젝트에 대한 액세스 권한을 부여해야 합니다. 원격 데이터베이스 시스템에서는 일반적으로 SELECT 권한을 통해 이 권한이 부여됩니다.

    노트

    데이터베이스가 아닌 소스 시스템(예: 파일 시스템)에서는 데이터 액세스를 설정하는 다른 방법이 있을 수 있습니다. 이러한 경우 보조 자격 증명을 항상 사용할 수 있는 것은 아닙니다. 예를 들어, SAP HANA 스마트 데이터 통합의 FileAdapter는 파일 저장소에 대한 액세스를 보호하기 위해 토큰을 저장할 수 있습니다. 그러면 이 토큰이 원격 소스 보안 정의에 사용됩니다.

원격 소스 관리

원격 소스 생성 외에도 데이터 프로비저닝 관리자가 유지보수를 담당합니다. 원격 소스 권한, 원격 소스 정의 또는 보안 구성에 대한 수정사항 등이 여기에 포함됩니다. 원격 소스가 더 이상 필요하지 않은 경우 삭제할 수도 있습니다.

이 유지보수의 매우 중요한 측면을 강조해 보겠습니다. 가상 테이블은 원격 소스에 종속됩니다. 따라서 원격 소스를 기반으로 가상 테이블을 정의하는 즉시 가상 테이블을 유지하면서 원격 소스를 삭제할 수 없습니다.

다행히도 원격 소스 정의에 가상 테이블이 정의되어 있더라도 원격 소스 정의를 수정할 수 있습니다.

원격 소스에 대한 권한 유지보수

원격 소스를 생성할 때 원격 소스를 생성한 사용자만 처음에 이 원격 소스에 대한 권한이 있는 유일한 사용자입니다. 이러한 권한은 조직에서 권한 트리가 설정된 방식에 따라 다른 사용자에게 부여할 수도 있고 부여해야 합니다.

원격 소스 권한은 오브젝트 권한(특정 원격 소스 오브젝트를 가리킴)이며 다음 두 가지 범주로 분류할 수 있습니다.

  • 관리 권한:
    • ALTER
    • DROP
  • 원격 소스 운영 권한:
    • CREATE VIRTUAL TABLE
    • LINKED DATABASE
    • CREATE REMOTE SUBSCRIPTION
    • PROCESS REMOTE SUBSCRIPTION EXCEPTION

또 다른 권한은 CREDENTIAL ADMIN 이며, 이 권한은 사용자가 생성하지 않은 원격 소스에서 보조 자격 증명을 관리하는 데 필요합니다.

이러한 모든 권한은 일반적으로 SAP HANA 콕피트 또는 SQL 콘솔의 GRANTREVOKE 문을 통해 관리됩니다.

원격 소스 수정

원격 소스를 수정하려면 SAP Database Explorer에서 그래픽 사용자 인터페이스를 사용하거나 SQL 콘솔에서 ALTER REMOTE SOURCE 문을 실행합니다.

이렇게 하면 원격 소스 정의의 모든 요소를 수정할 수 있습니다(이름 제외).

노트

실제로 원격 소스의 이름은 원격 소스 위에 생성된 가상 테이블과의 관계를 유지하는 데 사용됩니다.

일반적인 시나리오는 다른 호스트로 이동하는 원격 시스템, DML 모드(읽기 또는 읽기/쓰기) 등의 설정 수정 또는 별칭 스키마일 수 있습니다. 이는 보안 정의의 변경사항일 수도 있습니다. 예를 들어 기술 사용자에서 보조 자격 증명으로 이동하여 원격 오브젝트에 더 세밀하게 액세스할 수 있습니다.

원격 소스 삭제

원격 소스 수정과 삭제의 차이를 염두에 두고 원격 소스를 삭제하는 방법을 살펴보겠습니다.

그래픽 사용자 인터페이스를 사용하여 원격 소스 삭제

  1. SAP HANA 데이터베이스 탐색기 에서 카탈로그를 원격 소스 섹션으로 이동합니다.
  2. 원격 소스를 마우스 오른쪽 버튼으로 클릭하고 삭제 를 선택합니다.
  3. 관련 옵션을 선택합니다.
    • 다른 오브젝트가 종속되어 있지 않으면 원격 소스를 삭제합니다.
    • 원격 소스 및 이 소스에 종속된 다른 오브젝트를 삭제합니다.
  4. 삭제를 선택합니다.

주의

잘못된 원격 소스를 삭제하면 가상 테이블이 많이 손실될 수 있으므로 두 번째 옵션은 매우 신중하게 사용하십시오.

SQL로 원격 소스 삭제

SQL 콘솔에서 다음 명령문 중 하나를 실행하여 원격 소스를 삭제합니다.

  • 종속된 다른 오브젝트가 없는 경우 원격 소스를 삭제하려면 다음과 같이 하십시오.
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name>;
  • 원격 소스와 이 소스에 종속된 다른 오브젝트를 삭제하려면 다음과 같이 하십시오.
    Code Snippet
    1
    DROP REMOTE SOURCE <remote_source_name> CASCADE;

주의

다시, 당신은 매우 신중 하 게 CASCADE 옵션을 사용 해야 합니다.