[AWS] QLDB
QLDB๋ Amazon Quantum Ledger Database์ ์ถ์ฝ์ผ๋ก, ๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ด๋ค.
๊ธ์ต ๊ฑฐ๋์ ๊ธฐ๋ก์ฒ๋ผ ์ ํ์ฑ๊ณผ ์๊ตฌ์ฑ, ํ์คํ ๋ฆฌ, ๋ณด์ ๋ฑ์ด ์ค์ํ ๋ถ๋ถ์ ์ต์ ํ๋์ด์๋ค.
mongoDB์ฒ๋ผ ๋น์ ํ์ JSON ํํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
์๋ฆฌ
QLDB๋ ๋๋๊ฒ๋ ๋ธ๋ก์ฒด์ธ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
๋ธ๋ก์ฒด์ธ๊ณผ ๋ค๋ฅธ ์ ์ด๋ผ๋ฉด, ๋ถ์ฐํ์ด ์๋๋ผ AWS์์ ๋ชจ๋ ๊ฑธ ํต์ ํ๋ ์ค์์ง์คํ์ด๋ผ๋ ๊ฒ ๋ฟ์ด๋ค.
์ด๊ฑธ ํตํด ๊ฐ ํธ๋์ญ์
์ ๋ฌด๊ฒฐ์ฑ์ ์๋ฒฝํ๊ฒ ๋ณด์ฅํ๋ค๊ณ ํ๋๋ฐ.. ๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค.
์ด๊ฒ ๊ทธ๋งํผ์ด๋ ๋๋จํ ์ด์ ์ด ์๋?
์๋ฌดํผ ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ ๋ชจ๋ ํ์คํ ๋ฆฌ๊ฐ ๋ณด์กด๋๋ค๋ ์ ์์๋ ๊ฝค ๊ด์ฐฎ์๋ณด์ด๊ธด ํ๋ค.
๋น์ฉ
์์ ๊ด๋ฆฌํ ์๋ฒ๋ฆฌ์ค ์์คํ
์ด๋ผ, ๊ธฐ๋ณธ๋น์ฉ๊ฐ์๊ฑด ๋ฐ๋ก ์๋ค.
์ฌ์ฉํ ๋งํผ๋ง ๋น์ฉ์ ๋ธ๋ค.
๋ฑํ ๋ง ๊ทธ๋ ๊ฒ ๋น์ผ ํธ์ ์๋๋ค.
์ ์ก์๋ ์๊ธ์ ์ข ๋ฌธ๋ค. ๋์ผ ๋ฆฌ์ ๋ด์์๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๊ณต์ง๋ค.
๋ ์์ธํ ๊ฒ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://aws.amazon.com/ko/qldb/pricing/?pg=ln&sec=hs
RDB์์ ๋น๊ต
๊ตฌ์กฐ๋ RDB๋ค๊ณผ ๋น๊ตํ๋ฉด ๋์ถฉ ์ด๋ฐ ํํ๋ฅผ ๊ฐ์ง๋ค.

์์ฅ(ledger) ์์ฑ
์์ฅ์ RDB์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ฑํ ๊ฐ๋
์ด๋ค. ํ๋์ ์์ฅ์๋ ์ฌ๋ฌ๊ฐ์ ํ
์ด๋ธ์ด ๋ค์ด๊ฐ ์ ์๋ค.
๋จผ์ ๋ง๋ค์ด์ฃผ์
๋ ๋์ถฉ ๋ค ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์คฌ๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง๋ค.
ํ ์ด๋ธ ์์ฑ
์ด์ ์ ๊ธฐ๋ค ํ ์ด๋ธ์ ์ถ๊ฐํด๋ณด๊ฒ ๋ค.
๋ฐ๋ก ๋ญ ํด์ผํ๋๊ฒ ์์ง๋ ์๋ค.
์ด๋ฆ๋ง ์ ์ง์ด์ค๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.

์ฟผ๋ฆฌ ์์ฑํด๋ณด๊ธฐ (PartiQL)
์ฟผ๋ฆฌ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์คํ์ํฌ ์ ์๋ ์ฐฝ์ผ๋ก ์ด๋ํ๋ค.
QLDB๋ SQL์ ์๋๋ฐ, ๊ทธ๊ฑฐ๋ ๋น์ทํ PartiQL์ด๋ ๊ณ ์ ์ ์ ํ์ค๋ฅผ ์ ๊ณตํ๋ค.
INSERT ๋ฌธ
๋ง์ฝ insert๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ํ ์ ์๋ค.
values๋ฅผ JSON์ผ๋ก ๋ฐ๋ ๊ธฐ๊ธฐ๋ฌ๋ฌํ ํํ๋ค.
INSERT INTO transactions VALUE
{
'id' : 1,
'from': 1232324,
'to': 44444,
'money': 10000
}
๊ทธ๋ผ ์ ๋ค์ด๊ฐ์ง ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ "documentId"๋ผ๋ ๊ธฐ๋ณธํค๊ฐ ์์์ ์ผ๋ก ๋ง๋ค์ด์ง๋ค.
SELECT ๋ฌธ
์ด๊ฑด ๊ทธ๋ฅ ๋น์ทํ๊ฒ ์ธ ์ ์๋ค.

์ด๋ฐ์์ผ๋ก ์กฐํ๊ฐ ์ ๋๋ค.
where ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋ณดํต ์ด๋ฐ์์ผ๋ก ๋๋ฑ ์กฐ๊ฑด์ด๋(=) In ํํ ์ ๋๋ก๋ง ํํฐ๋ฅผ ๊ฑธ๊ณ , ์๋ ํญ์์ ์ค๋ช
ํ ์ธ๋ฑ์ค๊ฐ ํ์์ ์ผ๋ก ์กด์ฌํด์ผ ํ๋ค. ์๊ทธ๋ฌ๋ฉด ์ฑ๋ฅ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ญ order by๋ group by ๊ฐ์ ๋ณต์กํ ์ ํ์ค๋ ์๊ณ , join ์ ๋๋ง ์ง์ํ๋ค.
๊ฐ๊ธ์ ์ด๋ฉด ์ด๋ฐ 1์ฐจ์์ ์ด๋ฉด์ ๋จ์ํ ์ฟผ๋ฆฌ๋ง ์ฌ์ฉํ๋๊ฒ ์ข๋ค. ๋๋จธ์ง๋ ๊ทธ๋ฅ ํ๋ก๊ทธ๋จ์์ ์ฒ๋ฆฌํ์..
UPDATE ๋ฌธ
update๋ฌธ๋ SQL๊ณผ ๊ฑฐ์ ๊ฐ๋ค.


DELETE ๋ฌธ
์ด๊ฒ๋ ๋ค๋ฅผ๊ฑด ์๋ค.
๋ค๋ง, ๊ฒ์ผ๋ก๋ง ์ญ์ ํด์ ์๋๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ ๋ฟ์ด์ง, ๋ด์ญ์๋ ๋ค ๋จ์์๋ค.

์ธ๋ฑ์ค
RDB๋ค๊ณผ ๋น์ทํ๊ฒ ์ธ๋ฑ์ค๋ ์ง์ํ๋ค. QLDB์์ ์ธ๋ฑ์ค๋ ํญ์ ํ์๋ค.
์ด๊ฒ ์์ผ๋ฉด SELECT๋ ํญ์ ํ์ค์บ์ ๋๋ฆฌ๋๋ฐ, QLDB๋ ๊ตฌ์กฐ์ ํ๋์ ์ฟผ๋ฆฌ๊ฐ ๋ฌด์กฐ๊ฑด 30์ด ์ด๋ด์ ์๋ฃ๊ฐ ๋์ด์ผ๋ง ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ ์ฟผ๋ฆฌ๋ ๋ฒ๋ ค์ง๋ค.
๊ฒ๋ค๊ฐ ๋๋ฌด ๋๋ฆฐ ์ฟผ๋ฆฌ๋ ๋์์ฑ์ ์ํฅ์ ์ค๋ค๊ณ ํ๋ค.
์ด๋ฐ์์ผ๋ก ์ฐ๋ฉด ๋๋ค.
create index on ํ
์ด๋ธ๋ช
(ํ๋๋ช
)
๊ทธ๋์ ์์ ์์ ์์ id์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ๊ณ ์ถ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ํ๋ฉด ๋๋ค.

์ ํ์ค์ ๋ํ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ํ๋ค๋ฉด, ๋ฌธ์๋ฅผ ์ฐธ์กฐํด๋ณด๊ธธ ๋ฐ๋๋ค.
https://docs.aws.amazon.com/qldb/latest/developerguide/console_QLDB.html
ํ์คํ ๋ฆฌ ๋ณด๊ธฐ
QLDB์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋, ๋ธ๋ก์ฒด์ธ์ฒ๋ผ APPEND ONLY๋ผ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๋ญ UPDATE๋ DELETE๋ฅผ ์น๋๋ผ๋, ๊ธฐ๋ก์ ๋ค ๋จ์์๋ค.
transactions์ ๋ํ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ์น๋ฉด ๋๋ค.

๊ทธ๋ผ ์ด๋ ๊ฒ ์ญ ๋ณด์ฌ์ค ๊ฒ์ด๋ค.
data๊ฐ ์ค์ ๋ก ๋ค์ด์๋ ๋ฐ์ดํฐ๋ค.
๋ง์ฝ id๊ฐ 1์ด์๋ ํญ๋ชฉ์ ๋ํ ๊ฒ์ ์ฟผ๋ฆฌํ๋ค๋ฉด

ํด๋น ํญ๋ชฉ์ด ์ด๋ป๊ฒ ๋ฐ๋์ด์๋์ง๋ฅผ ์ญ ๋ณผ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ metadata์ version๊ณผ txTime์ ๋ณด๋ฉด ๋ญ๊ฐ ๋จผ์ ๊ณ , ์ธ์ ๋ง๋ค์ด์ก๋์ง ์ ์ ์๋ค. version์ 0์์๋ถํฐ ์์ํ๋ค.
์ด๋ฐ๊ฒ ์ ๋ง ์ค์ํ ๊ธ์ต ๊ฑฐ๋๋, ๋ญ ๊ทธ๋ฐ๋ฐ๋ ์ฐ๊ธฐ ์ข์ ๊ฒ ๊ฐ๋ค.
์ฐธ์กฐ
https://medium.com/devopsinternationalbv/what-is-this-quantum-ledger-database-that-im-keep-hearing-about-a3c16c35c799
https://docs.aws.amazon.com/qldb/latest/developerguide/working.history.html