Amazon QLDB의 핵심 개념 및 용어 - Amazon Quantum Ledger Database(QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon QLDB의 핵심 개념 및 용어

이 섹션에서는 원장 구조 및 원장의 데이터 관리 방법을 포함하여 Amazon QLDB의 핵심 개념 및 용어에 대한 개요를 제공합니다. 원장 데이터베이스인 QLDB는 다음과 같은 주요 개념에서 다른 문서 지향 데이터베이스와는 다릅니다.

QLDB 데이터 객체 모델

Amazon QLDB의 기본 데이터 객체 모델은 다음과 같이 설명할 수 있습니다.

  1. 원장

    첫 번째 단계는 QLDB에서 기본 AWS 리소스 타입인 원장을 만드는 것입니다. 원장 생성 방법을 알아보려면 콘솔 시작하기1단계: 새 원장 생성 또는 Amazon QLDB 원장의 기본 작업을 참조하세요.

    원장의 ALLOW_ALLSTANDARD 권한 모드 모두에 대해 이 원장 리소스에서 API 작업을 실행할 권한을 부여하는 AWS Identity and Access Management(IAM)정책을 생성합니다.

    원장 ARN 형식:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}
  2. 저널 및 표

    QLDB 원장에 데이터 쓰기를 시작하려면 먼저 기본 CREATE TABLE 명령문을 사용하여 표를 생성합니다. 원장 데이터는 원장 저널에 체결된 문서의 수정본으로 구성되어 있습니다. 사용자 정의 표의 컨텍스트에서 원장에 문서 수정본을 체결합니다. QLDB에서 표은 저널의 문서 수정본 모음에 대한 구체화된 뷰를 보여줍니다.

    원장의 STANDARD 권한 모드에서는 이 테이블 리소스에서 PartiQL 문을 실행할 권한을 부여하는 IAM 정책을 생성해야 합니다. 테이블 리소스에 대한 권한이 있으면 테이블의 현재 상태에 액세스하는 문을 실행할 수 있습니다. 또한 내장 history() 함수를 사용하여 테이블의 개정 이력을 쿼리할 수 있습니다.

    표 ARN 형식:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/table/${table-id}

    원장 및 관련 리소스에 권한을 부여하는 자세한 방법은 Amazon QLDB에서 IAM을 사용하는 방법 섹션을 참조하세요.

  3. 문서

    표은 Amazon Ion struct 형식의 데이터 세트인 QLDB 문서의 수정본으로 구성되어 있습니다. 문서 수정본은 고유한 문서 ID로 식별되는 문서 시퀀스의 단일 버전을 나타냅니다.

    QLDB는 체결된 문서의 전체 변경 기록을 저장합니다. 표를 사용하면 문서의 현재 상태를 쿼리하고 history() 함수를 사용하면 표 문서의 전체 수정 기록을 쿼리할 수 있습니다. 수정 쿼리 및 작성에 대한 자세한 설명은 데이터 및 기록 작업 섹션을 참조하세요.

  4. 시스템 카탈로그

    또한 각 원장은 원장의 모든 테이블과 인덱스를 나열하기 위해 쿼리할 수 있는 시스템 정의 카탈로그 리소스를 제공합니다. 원장의 STANDARD 권한 모드에서는 다음 작업을 수행하려면 이 카탈로그 리소스에 대한 qldb:PartiQLSelect 권한이 필요합니다.

    • 시스템 카탈로그 표 information_schema.user_tables에 대한 SELECT 문을 실행합니다.

    • QLDB 콘솔의 원장 세부 정보 페이지에서 표 및 인덱스 정보를 볼 수 있습니다.

    • QLDB 콘솔의 PartiQL 편집기에서 표 및 인덱스 목록을 볼 수 있습니다.

    카탈로그 ARN 형식:

    arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/information_schema/user_tables

저널 우선 트랜잭션

애플리케이션이 QLDB 원장에서 데이터를 읽거나 쓸 때 데이터베이스 트랜잭션에서 데이터를 읽거나 씁니다. Amazon QLDB 할당량 및 제한에 정의된 대로 모든 트랜잭션에는 제한이 적용됩니다. QLDB는 트랜잭션 내에서 다음 단계를 수행합니다.

  1. 원장에서 데이터의 현재 상태를 읽습니다.

  2. 트랜잭션에 제공된 문을 수행한 다음 OCC(낙관적 동시성 제어)를 사용하여 충돌이 없는지 확인하여 직렬화가 완전히 가능한지 확인합니다.

  3. OCC 충돌이 발견되지 않으면 다음과 같이 트랜잭션 결과를 반환합니다.

    • 읽기의 경우, 결과 세트를 반환하고 추가 전용 방식으로 SELECT 문을 저널에 체결합니다.

    • 쓰기의 경우 업데이트, 삭제 또는 새로 삽입된 데이터를 추가 전용 방식으로 저널에 체결합니다.

저널은 데이터의 모든 변경 사항에 대한 완전하고 변경할 수 없는 기록을 나타냅니다. QLDB는 트랜잭션의 저널에 체인 블록 하나를 기록합니다. 각 블록에는 삽입, 업데이트 및 삭제한 문서 수정본을 나타내는 항목 객체와 이를 체결한 PartiQL 문이 들어 있습니다.

다음 다이어그램은 이 저널 구조를 보여줍니다.


                스트랜드를 구성하는 체인 블록 세트와 각 블록의 시퀀스 번호 및 블록 해시를 보여주는 Amazon QLDB 저널 구조 다이어그램..

다이어그램은 트랜잭션이 문서 수정본 항목이 포함된 블록 형태로 저널에 커밋됨을 보여줍니다. 각 블록은 검증을 위해 해싱되고 후속 블록에 연결됩니다. 각 블록에는 스트랜드 내의 주소를 지정하는 시퀀스 번호가 있습니다.

참고

Amazon QLDB에서 스트랜드는 원장 저널의 파티션입니다. QLDB는 현재 단일 스트랜드가 포함된 저널만 지원합니다.

블록의 데이터 내용에 대해 자세히 알아보려면 Amazon QLDB의 저널 콘텐츠 섹션을 참조하세요.

데이터 쿼리

QLDB는 고성능 온라인 트랜잭션 처리(OLTP) 워크로드의 요구 사항을 해결하기 위한 것입니다. 원장은 저널에 체결된 트랜잭션 정보를 기반으로 데이터의 쿼리 가능한 표 보기를 제공합니다. QLDB의 표 는 표 데이터의 하위 집합입니다. 뷰는 실시간으로 유지 관리되므로 애플리케이션에서 항상 쿼리할 수 있습니다.

PartiQL SELECT 문을 사용하여 다음과 같은 시스템 정의 뷰를 쿼리할 수 있습니다.

  • 사용자 - 테이블에 기록한 데이터의 최신 활성 개정 (즉, 사용자 데이터의 현재 상태)입니다. 이는 QLDB의 기본 뷰입니다.

  • 커밋됨 - 사용자 데이터와 시스템에서 생성한 메타데이터의 최신 활성 개정입니다. 이는 사용자 테이블에 직접 해당하는 전체 시스템 정의 테이블입니다.

쿼리 가능한 이러한 뷰 외에도 내장된 기록 함수을 사용하여 데이터의 수정 기록을 쿼리할 수 있습니다. 기록 함수는 체결된 뷰와 동일한 스키마에서 사용자 데이터와 연결된 메타데이터를 모두 반환합니다.

데이터 스토리지

QLDB에는 다음 두 가지 타입의 데이터 스토리지가 있습니다.

  • 저널 스토리지 - 원장의 저널이 사용하는 디스크 공간입니다. 저널은 추가 전용으로, 데이터에 대한 모든 변경 사항에 대한 완전하고 변경 불가능하며 검증 가능한 기록을 포함합니다.

  • 인덱싱된 스토리지 - 원장의 표, 인덱스, 인덱싱된 기록에 사용되는 디스크 공간입니다. 인덱싱된 스토리지는 고성능 쿼리에 최적화된 원장 데이터로 구성됩니다.

데이터가 저널에 체결되면 정의한 표로 구체화됩니다. 이러한 표은 더 빠르고 효율적인 쿼리를 위해 최적화되었습니다. 애플리케이션이 트랜잭션 데이터 API를 사용하여 데이터를 읽으면 인덱싱된 스토리지에 저장된 표와 인덱스에 액세스합니다.

QLDB API 모델

QLDB는 애플리케이션 코드가 상호 작용할 수 있는 두 가지 타입의 API를 제공합니다.

  • Amazon QLDB - QLDB 리소스 관리 API(컨트롤 플레인이라고도 함). 이 API는 원장 리소스 관리 및 비트랜잭션 데이터 작업에만 사용됩니다. 이러한 작업을 사용하여 원장을 생성, 삭제, 설명, 나열 및 업데이트할 수 있습니다. 또한 데이터를 암호로 검증하고 저널 블록을 내보내거나 스트리밍할 수 있습니다.

  • Amazon QLDB 세션 - QLDB 트랜잭션 데이터 API. 이 API를 사용하여 PartiQL 문을 사용하여 원장에서 데이터 트랜잭션을 실행할 수 있습니다.

    중요

    QLDB 세션 API와 직접 상호 작용하는 대신 QLDB 드라이버 또는 QLDB 쉘을 사용하여 원장에서 데이터 트랜잭션을 실행하는 것이 좋습니다.

    • AWS SDK로 작업하는 경우 QLDB 드라이버를 사용하세요. 드라이버는 이 QLDB 세션 데이터 API 위에 높은 수준의 추상화 계층을 제공하고 사용자를 대신하여 SendCommand 작업을 관리합니다. 지원되는 프로그래밍 언어에 대한 자세한 내용 및 목록은 드라이버 시작하기 섹션을 참조하세요.

    • AWS CLI를 사용하여 작업하는 경우 QLDB 쉘을 사용하세요. 쉘은 QLDB 드라이버를 사용하여 원장과 상호 작용하는 명령줄 인터페이스입니다. 자세한 내용은 Amazon QLDB 쉘 사용(데이터 API만 해당)을 참조하세요.

이러한 API 작업에 대한 자세한 설명은 Amazon QLDB API 참조 섹션을 참조하세요.

다음 단계

데이터에 원장을 사용하는 방법을 알아보려면 Amazon QLDB에서 데이터 및 기록 작업 섹션을 참조하고 표 생성, 데이터 삽입 및 기본 쿼리 실행 프로세스를 설명하는 예를 따르세요. 이 가이드에서는 샘플 데이터와 컨텍스트에 대한 쿼리 예를 사용하여 이러한 개념이 어떻게 작동하는지 자세히 설명합니다.

QLDB 콘솔을 사용하여 샘플 애플리케이션 자습서를 빠르게 시작하려면 Amazon QLDB 콘솔 시작하기 센션을 참조하세요.

이 섹션에 설명된 주요 용어 및 정의 목록은 Amazon QLDB 용어집 섹션을 참조하세요.