[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