변경 불가능 및 투명성

추가 전용 저널

Amazon QLDB에는 모든 데이터 변경 사항에 대해 정확하고 순차적인 항목을 저장하는 변경 불가능한 내장 저널이 있습니다. 이 저널은 추가만 할 수 있습니다. 즉, 저널에 데이터를 추가할 수만 있고 덮어쓰거나 삭제할 수는 없습니다. 따라서 저장한 변경 기록을 삭제하거나 수정할 수 없습니다. 원장에서 데이터를 삭제하더라도 변경 불가능한 저널에서 읽어 오는 방식으로 해당 데이터의 변경 기록을 계속 액세스할 수 있습니다.

변경 기록에 대한 간편한 액세스

Amazon QLDB를 사용하면 애플리케이션 데이터의 전체 변경 기록에 액세스할 수 있습니다. 변경 기록 요약(예: 차량의 모든 이전 소유자 목록) 및 트랜잭션 기록과 관련된 구체적인 세부 정보(예: 차량 판매 시간 및 새 소유자의 이름)도 쿼리할 수 있습니다.

암호화 방식으로 검증 가능

변경 기록 다이제스트

Amazon QLDB는 암호화를 사용하여 변경 기록의 간결한 요약을 생성합니다. 일반적으로 다이제스트라고 하는 이 보안 요약은 암호화 해시 기능(SHA-256)을 사용하여 생성됩니다. 다이제스트는 데이터 변경 기록의 증거로 사용되며, 이를 통해 데이터 변경 사항을 되돌아보거나 이에 대한 무결성을 검증할 수 있습니다. 이 다이제스트를 QLDB의 API에서 사용하여 트랜잭션의 무결성(예: 트랜잭션이 발생했는지 여부)을 입증할 수 있습니다. 또한 QLDB를 사용하면 데이터의 기록을 쿼리하고 이에 액세스할 수 있지만, 검증 가능성은 특정 트랜잭션과 관련된 증거가 필요한 비즈니스 시나리오에 유용합니다. 예를 들어 전자 상거래 비즈니스는 낙찰 증명을 보여 줘야 할 수 있습니다.

서버리스

간편하게 확장 가능

Amazon QLDB는 용량을 프로비저닝하거나 읽기 및 쓰기 제한을 구성할 필요 없이, 원활하게 자동으로 확장하여 애플리케이션을 요구를 충족합니다. 또한 QLDB는 데이터베이스이므로 블록체인 프레임워크보다 나은 성능 및 확장성을 제공합니다. QLDB는 손쉽게 확장되고 일반 블록체인 프레임워크보다 2~3배 많은 트랜잭션을 실행할 수 있습니다. 블록체인 프레임워크는 분산되어 있으며, 원장에 저장하기 전에 피어 노드에서 트랜잭션 검증을 해야 합니다. 따라서 성능이 영향을 받을 수 있습니다. 반면 QLDB에서 트랜잭션을 실행하는 것은 AWS 데이터베이스를 사용하는 것만큼 간단합니다.

손쉬운 설정

Amazon QLDB는 관리할 서버나 프로비저닝할 용량이 없으므로 간단하게 시작할 수 있습니다. AWS Management Console, AWS Command Line Interface(CLI), AWS CloudFormation 템플릿을 사용하거나 QLDB API를 호출하여 몇 분 내에 새로운 원장을 생성할 수 있습니다.

모니터링 및 지표

Amazon QLDB는 원장에 대한 Amazon CloudWatch 지표를 제공합니다. QLDB를 사용하여 읽기 및 쓰기 IO에 대한 주요 운영 지표를 볼 수 있습니다.

사용 편의성

PartiQL 지원

Amazon QLDB는 새로운 공개 표준 쿼리 언어인 PartiQL을 지원합니다. PartiQL은 QLDB의 문서 지향 데이터 모델에 대한 SQL 호환 액세스를 지원하며, 여기에는 특정 데이터 원본과 독립적으로 유지되는 반정형 데이터 및 중첩 데이터가 포함됩니다. PartiQL을 통해 친숙한 SQL 연산자를 사용하여 데이터를 쉽게 쿼리, 관리 및 업데이트할 수 있습니다.

문서 지향 데이터 모델

데이터 모델은 데이터베이스 내에서 데이터가 처리 및 저장되는 방식을 정의합니다. Amazon QLDB는 문서 지향 데이터 모델을 사용하여 데이터를 저장합니다. 따라서 정형 및 반정형 데이터를 유연하게 저장할 수 있습니다. QLDB의 데이터 모델은 중첩된 데이터 구조도 지원하므로 애플리케이션을 간소화할 수 있습니다.

트랜잭션 일관성 및 ACID 의미 체계

데이터베이스 작업을 수행할 때 Amazon QLDB는 원자성, 일관성, 격리성 및 내구성(ACID) 속성을 제공합니다. 또한 QLDB 트랜잭션은 완전 직렬화 성질(최고 수준의 격리)을 가집니다. 트랜잭션의 ACID 속성을 통해 손쉽게 올바른 애플리케이션을 작성할 수 있습니다. 예를 들어 뱅킹 애플리케이션에서 100 USD가 계좌 A에서 계좌 B로 이체되는 동안 돈이 계좌 A에서 출금된 후 계좌 B로 입금되거나, 아니면 아무 작업도 수행되지 않게 하여 작업을 완전하고 일관되게 수행합니다. 트랜잭션은 절대 부분적이고 일관되지 않은 방식으로 실행되지 않습니다. 즉 돈이 계좌 B로 입금되는데 계좌 A에서 출금되지 않거나 그 반대의 경우는 발생하지 않습니다.