Amazon QLDB 개요 - Amazon Quantum Ledger Database(QLDB)

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

Amazon QLDB 개요

다음 단원에서 Amazon QLDB 서비스 구성 요소 및 요소 간 상호 작용 방식을 간단히 설명합니다.

저널 우선

기존 데이터베이스 아키텍처에서는 일반적으로 트랜잭션의 일부로 테이블에 데이터를 씁니다. 일반적으로 내부 구현인 트랜잭션 로그는 모든 트랜잭션과 해당 트랜잭션에서 수행한 데이터베이스 수정 내용을 기록합니다. 트랜잭션 로그는 데이터베이스의 중요한 구성 요소입니다. 시스템 장애, 재해 복구 또는 데이터 복제 시 트랜잭션을 재생하려면 로그가 필요합니다. 하지만 데이터베이스 트랜잭션 로그는 변경할 수 없으며, 사용자가 직접 쉽게 액세스할 수 있도록 설계되지 않았습니다.

Amazon QLDB에서 저널은 데이터베이스의 핵심입니다. 트랜잭션 로그와 구조적으로 유사한 저널은 변경 불가하며, 애플리케이션 데이터를 관련 메타데이터와 함께 저장하는 추가 전용 데이터 구조입니다. 업데이트와 삭제를 포함한 모든 쓰기 트랜잭션은 저널 우선에 커밋됩니다.

QLDB는 저널을 사용하여 쿼리 가능한 사용자 정의 테이블로 원장 데이터를 구체화하여 원장 데이터의 현재 상태를 확인합니다. 또한 이 테이블은 문서 수정 및 메타데이터를 포함한 모든 트랜잭션 데이터에 대한 액세스 가능한 기록을 제공합니다. 또한 저널은 원장 데이터의 동시성, 시퀀싱, 암호화 검증 및 가용성을 처리합니다.

다음 다이어그램에 QLDB 저널 아키텍처가 나와 있습니다.


                    QLDB라는 제목의 다이어그램: 저널은 저널 아키텍처를 보여주는 데이터베이스로, 원장에 연결하여 저널에 트랜잭션을 커밋하고 테이블로 구체화되는 애플리케이션이 있습니다.
  • 이 예제에서 애플리케이션은 원장에 연결하여 cars라는 이름의 테이블에 문서를 삽입, 업데이트 및 삭제하는 트랜잭션을 실행합니다.

  • 데이터는 먼저 순서대로 저널에 기록됩니다.

  • 그런 다음 데이터는 기본 제공 뷰가 있는 테이블로 구체화됩니다. 이러한 뷰를 통해 차량의 현재 상태와 전체 기록을 모두 쿼리할 수 있으며, 각 수정본에 버전 번호가 할당됩니다.

  • 저널에서 직접 데이터를 내보내거나 스트리밍할 수도 있습니다.

변경 불가능

QLDB 저널은 추가 전용이므로 수정하거나 덮어쓸 수 없는 모든 데이터 변경 내용을 모두 기록합니다. 커밋된 데이터를 변경할 수 있는 API나 다른 방법은 없습니다. 이 저널 구조를 사용하면 원장의 전체 기록에 액세스하고 쿼리할 수 있습니다.

참고

QLDB가 지원하는 불변성의 유일한 예외는 데이터 수정입니다. 이 기능을 사용하면 유럽 연합의 일반 데이터 보호 규정(GDPR) 및 캘리포니아 소비자 개인정보보호법(CCPA)과 같은 규제 법령을 준수할 수 있습니다.

QLDB는 테이블 기록에서 비활성 문서 수정본을 영구적으로 삭제할 수 있는 수정 작업을 제공합니다. 이 작업을 수행하면 지정된 수정 버전의 사용자 데이터만 삭제되고 저널 시퀀스와 문서 메타데이터는 변경되지 않습니다. 이렇게 하면 원장의 전체 데이터 무결성이 유지됩니다. 자세한 내용은 문서 개정본 수정하기 섹션을 참조하세요.

QLDB는 트랜잭션의 저널에 블록 하나를 기록합니다. 각 블록에는 삽입, 업데이트 및 삭제한 문서를 나타내는 항목 객체와 해당 문서를 커밋하기 위해 실행한 명령문이 포함되어 있습니다. 이러한 블록은 데이터 무결성을 보장하기 위해 시퀀싱되고 해시 체인으로 연결됩니다.

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


                    ‘레코드는 변경할 수 없음’이라는 제목의 다이어그램은 QLDB의 변경 불가능한 추가 전용 저널 구조와 해시 체인으로 연결된 각 저널 블록의 시퀀스 번호를 보여줍니다.

다이어그램은 트랜잭션이 검증을 위해 해시 체인으로 연결된 블록으로 저널에 커밋되는 것을 보여줍니다. 각 블록에는 주소를 지정하는 시퀀스 번호가 있습니다.

암호학적으로 검증 가능

저널 블록은 블록체인과 유사한 암호화 해싱 기법을 사용하여 시퀀싱되고 함께 연결됩니다. QLDB는 저널의 해시 체인을 사용하여 암호화 검증 방법을 통해 트랜잭션 데이터 무결성을 제공합니다. 다이제스트(특정 시점을 기준으로 저널의 전체 해시 체인을 나타내는 해시 값)와 Merkle 감사 증명(바이너리 해시 트리 내 모든 노드의 유효성을 입증하는 메커니즘)을 사용하면 언제든지 데이터에 의도하지 않은 변경이 없었는지 확인할 수 있습니다.

다음 다이어그램은 특정 시점에서 저널의 전체 해시 체인을 다루는 다이제스트를 보여줍니다.


                    SHA-256을 사용한 해시 체인화라는 제목의 다이어그램, Ion 문서, PartiQL 문 및 메타데이터를 나타내는 항목을 포함하는 저널 블록 구조와 함께 저널의 전체 해시 체인을 다루는 다이제스트를 보여줌.

이 다이어그램에서 저널 블록은 SHA-256 암호화 해시 함수를 사용하여 해싱되고 후속 블록에 순차적으로 연결됩니다. 각 블록에는 데이터 문서, 메타데이터 및 트랜잭션에서 실행된 PartiQL 명령문을 포함하는 항목이 들어 있습니다.

자세한 내용은 Amazon QLDB에서의 데이터 확인 섹션을 참조하세요.

SQL와 유사하고 유연한 문서

QLDB는 PartiQL을 쿼리 언어로 사용하고 Amazon Ion을 문서 지향 데이터 모델로 사용합니다. PartiQL은 Ion과 함께 작동하도록 확장된 오픈 소스 SQL 호환 쿼리 언어입니다. PartiQL을 사용하면 익숙한 SQL 연산자를 사용하여 데이터를 삽입, 쿼리 및 관리할 수 있습니다. 플랫 문서를 쿼리할 때 구문은 SQL을 사용하여 관계형 테이블을 쿼리하는 것과 동일합니다. PartiQL의 QLDB 구현에 대한 자세한 내용은 Amazon QLDB PartiQL 참조 섹션을 참조하세요.

Amazon Ion은 JSON의 상위 집합입니다. Ion은 정형, 반정형 및 중첩 데이터를 저장하고 처리할 수 있는 유연성을 제공하는 오픈 소스 문서 기반 데이터 형식입니다. QLDB에 대해 자세히 알아보려면 Amazon QLDB의 Amazon Ion 데이터 형식 참조 섹션을 참조하세요.

기존 관계형 데이터베이스와 QLDB의 핵심 구성 요소 및 기능에 대한 상위 수준의 비교는 관계형에서 원장까지 섹션을 참조하세요.

오픈 소스 개발자 도구

애플리케이션 개발을 단순화하기 위해 QLDB는 다양한 프로그래밍 언어로 오픈 소스 드라이버를 제공합니다. 이러한 드라이버를 사용하면 원장에서 PartiQL 명령문을 실행하고 해당 명령문의 결과를 처리하여 트랜잭션 데이터 API와 상호 작용할 수 있습니다. 현재 지원되는 드라이버 언어에 대한 정보 및 자습서는 Amazon QLDB 드라이버 시작하기 섹션을 참조하세요.

Amazon Ion은 사용자를 대신해 Ion 데이터를 처리하는 클라이언트 라이브러리도 제공합니다. Ion 데이터 처리에 대한 개발자 가이드와 코드 예제는 GitHub의 Amazon Ion 설명서를 참조하세요.

서버리스 및 고가용성

QLDB는 완전 관리형, 서버리스, 고가용성 기능을 제공합니다. 애플리케이션의 수요를 지원할 수 있도록 서비스의 규모가 자동으로 조정되므로 인스턴스나 용량을 프로비저닝할 필요가 없습니다. 여러 데이터 사본이 가용 영역과 AWS 리전의 가용 영역 전체에 복제됩니다.

엔터프라이즈급

QLDB 트랜잭션은 원자성, 일관성, 격리 및 내구성(ACID) 속성을 완벽하게 준수합니다. QLDB는 OCC(낙관적 동시성 제어)를 사용하며 트랜잭션은 최고 수준의 격리인 완전한 직렬화 기능으로 작동합니다. 즉, 가상 읽기, 더티 읽기, 쓰기 스큐 또는 기타 유사한 동시성 문제가 발생할 위험이 없습니다. 자세한 내용은 Amazon QLDB 동시성 모델 섹션을 참조하세요.