AWS QLDB

[QLDB] 1. AWS QLDB 개요

푸팟퐁쿼리 2023. 6. 30. 13:28

AWS QLDB (Quantum Ledger Database)

AWS에서 개발한 중앙 관리형 원장(Ledger) 데이터베이스입니다.

여기서 원장이란, 은행에서 거래 내역을 적은 장부를 뜻하는 단어에서 파생된 용어로,

Application에서 발생한 데이터 변경 사항을 기록한 것입니다. 

 

기존 DBMS에서는 Audit 기능을 이용하여 데이터의 변경 사항을 기록할 수 있지만,

관리자에 의해 기록이 변경될 가능성(Not Immutable)이 있다는 단점이 있었습니다.

위 단점에 대한 대안으로 블록체인 프레임워크를 도입할 수도 있으나, 

탈중앙적(Decentralized) 구조로 인해 복잡성이 증가하고

불필요한 비용이 발생한다는 또 다른 단점이 발생합니다.

이 두가지 방식의 절충안으로 탄생안 DBMS가 

Amazon Quantum Ledger Database(QLDB)입니다. 

 

QLDB는 데이터의 변경 사항을 신뢰할 수 있는 중앙 기관이 소유함으로써

신뢰성을 확보한 점에서 블록체인과 차별점이 있습니다.

이 점으로 인해, 트랜잭션을 커밋하기위해 다른 참가자들의

동의를 얻는 과정을 생략할 수 있어 블록체인보다 빠르다는 장점이 있습니다. 

 

QLDB의 내부 구조를 살펴보겠습니다. 

AWS QLDB에는 모든 데이터 변경 사항을 순차적으로 저장하는 내장 저널이 있고,

이는 추가만 가능하고 변경이 불가능합니다.

(저널은 RDBMS에서 트랜잭션 로그와 같은 개념입니다.)

 

원장에서 데이터를 삭제하더라도, 변경 불가능한 저널에서 읽어 오는 방식으로

데이터 변경 사항을 계속 조회할 수 있습니다. 

 

저널에 저장된 데이터 변경사항은 SHA-256 암호화 방식으로

암호화되어있어 암호를 이용하여 확인이 가능합니다.

내부적으로 각 저널 블록의 헤더를 구성하는 요소 중에

이전 블록의 해시값(Previous Block Hash Value)이 있는데, 

이 요소로 인해 특정 블록의 데이터 값을 바뀌면

이후 블록들의 해시 값이 맞지 않아 변경이 쉽게 감지되는 특성을 지니게 됩니다. 

이러한 특징으로 인해 AWS QLDB는 기록에 대한 무결성이 중시되는

금융 시스템 등에서 주로 사용합니다. 

 

Journal - 데이터 변경 사항을 순차적으로(Append Only) 기록하는

QLDB 트랜잭션 로그로, SHA-256으로 암호화되어 저장됩니다. 

 

Current Table - 실제 Application이 바라보는 테이블로,

데이터의 현재 값을 저장하고 있습니다.

 

History Table - 데이터의 변경 전/후의 값이 기록되는 장소로,

Oracle / MySQL의 UndoTablespace와 유사합니다.

변경 이전/이후의 값이 버전별로 순차적으로 기록되는 테이블로

Insert만 가능하고, Delete/Update는 불가능합니다.

사용자는 History() 함수를 이용하여 과거 버전의 데이터 값도 버전 조회할 수 있습니다.