์•Œ๋ฆฌ๋ฐ”๋ฐ”๋Š” PostgreSQL ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐ DBMS์ธ PolarDB์˜ ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

์ค‘๊ตญ ์ตœ๋Œ€ IT๊ธฐ์—… ์•Œ๋ฆฌ๋ฐ”๋ฐ”๊ฐ€ ํฌ์ŠคํŠธ๊ทธ๋ ˆSQL(PostgreSQL) ๊ธฐ๋ฐ˜ ๋ถ„์‚ฐํ˜• DBMS ํด๋ผDB(PolarDB)์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ๋‹ค. PolarDB๋Š” ์—ฌ๋Ÿฌ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ถ„์‚ฐ๋œ ์ „์ฒด ๊ธ€๋กœ๋ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋งฅ๋ฝ์—์„œ ACID ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๊ณ  ๋ฌด๊ฒฐ์„ฑ์„ ๊ฐ–์ถ˜ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์šฉ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PostgreSQL์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. PolarDB๋Š” ๋˜ํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋…ธ๋“œ๊ฐ€ ์‹คํŒจํ•œ ํ›„ ์ •๋ณด๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„์‚ฐ SQL ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

PolarDB๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ๊ณผ PostgreSQL์šฉ ํŒจ์น˜ ์„ธํŠธ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํŒจ์น˜๋Š” PostgreSQL ์ฝ”์–ด์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋ฉฐ ํ™•์žฅ์—๋Š” ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค, ๋ถ„์‚ฐ SQL ์ฟผ๋ฆฌ ํ”„๋กœ์„ธ์„œ, ์ถ”๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋„๊ตฌ, ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ ๋ฐ ๋‹จ์ˆœํ™” ๋“ฑ PostgreSQL๊ณผ ๋ณ„๋„๋กœ ๊ตฌํ˜„๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์‹œ์Šคํ…œ์„ ์—ฌ๊ธฐ์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์น˜๋Š” ๋‹ค์–‘ํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋Œ€ํ•ด ๋‹ค์ค‘ ๋ฒ„์ „(MVCC, ๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ‘๋ ฌ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๋ถ„์‚ฐ ๋ฒ„์ „์„ PostgreSQL ์ฝ”์–ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. PolarDB์˜ ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„์€ ํ™•์žฅ ๊ธฐ๋Šฅ์— ํฌํ•จ๋˜์–ด ์žˆ์–ด PostgreSQL์— ๋Œ€ํ•œ ์˜์กด๋„๋ฅผ ์ค„์ด๊ณ  PolarDB ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์˜ ์—…๋ฐ์ดํŠธ ๋ฐ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค(์ƒˆ ๋ฒ„์ „์˜ PostgreSQL๋กœ์˜ ์ „ํ™˜์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  PostgreSQL๊ณผ์˜ ์™„์ „ํ•œ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค). ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด PostgreSQL-XC ๋ฐ PostgreSQL-XL์˜ ์œ ์‚ฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” pgxc_ctl ํˆดํ‚ท์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ธ๋“œ(DN), ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž(CM) ๋ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ์„œ๋น„์Šค(TM)์˜ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋ก์‹œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ธ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ธ๋“œ๊ฐ€ ์ฐธ์—ฌํ•˜๋Š” ๋ถ„์‚ฐ ์ฟผ๋ฆฌ ์‹คํ–‰์˜ ์กฐ์ •์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ธ๋“œ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์„ ์ €์žฅํ•˜๋ฉฐ, ๋…ธ๋“œ ๊ด€๋ฆฌ, ๋ฐฑ์—…, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์—…๋ฐ์ดํŠธ, ์‹œ์ž‘ ๋ฐ ์ค‘์ง€๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ์„œ๋น„์Šค๋Š” ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฑธ์ณ ์ „๋ฐ˜์ ์ธ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆฌ๋ฐ”๋ฐ”๋Š” PostgreSQL ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐ DBMS์ธ PolarDB์˜ ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

PolarDB๋Š” ๋ชจ๋“  ๋…ธ๋“œ์— ๊ณตํ†ต๋œ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์ €์žฅ๋  ๋•Œ ๋ถ„์‚ฐ๋˜๋ฉฐ, ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ด์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•˜๊ณ  ๊ด€๋ จ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” Shared-nothing ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์—. ๊ฐ ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ•ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• (์ƒค๋”ฉ)๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๊ฑธ์ณ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ํŠธ๋žœ์žญ์…˜ ์กฐ์ •์ž๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ACID(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ ๋ฐ ์‹ ๋ขฐ์„ฑ)๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋Š” ์ตœ์†Œ XNUMX๊ฐœ์˜ ๋…ธ๋“œ์— ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ๋ฐ์ดํ„ฐ์—๋Š” XNUMX๊ฐœ์˜ ๋ณต์ œ๋ณธ๋งŒ ํฌํ•จ๋˜๋ฉฐ, ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” WAL(ํ›„๊ธฐ์ž… ๋กœ๊ทธ) ์ €์žฅ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๋‘ ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฆฌ๋”๋กœ ์„ ์ถœ๋˜์–ด ์š”์ฒญ ์ฒ˜๋ฆฌ์— ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ๋Š” ๋ฌธ์ œ์˜ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์˜ˆ๋น„ ์—ญํ• ์„ ํ•˜๊ณ  ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ๋Š” ์„ ๋‘ ๋…ธ๋“œ ์„ ํƒ์— ์ฐธ์—ฌํ•˜๋ฉฐ ์ „์ฒด ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๋‘ ๋…ธ๋“œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ •๋ณด๋ฅผ ๋ณต์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ณต์ œ๋Š” ์ž ์žฌ์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ์—์„œ ์ผ๊ด€๋œ ํ•ฉ์˜ ์ •์˜๋ฅผ ๋ณด์žฅํ•˜๋Š” Paxos ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

PolarDB DBMS์˜ ์ „์ฒด ๊ธฐ๋Šฅ์€ ์„ธ ๊ฐ€์ง€ ๋ฆด๋ฆฌ์Šค์— ๊ฑธ์ณ ๊ณต๊ฐœ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ๋Š” ๋ณต์ œ, ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ๊ฒŒ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์—๋Š” ๋…ธ๋“œ ๊ฐ„ ACID ๋ฐ ๋ถ„์‚ฐ SQL ์‹คํ–‰์„ ์ง€์›ํ•˜๋Š” ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์‹œ์Šคํ…œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์—๋Š” ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„ธ๊ทธ๋จผํŠธ์˜ ์ ์‘ํ˜• ๋ฐฐ์น˜์™€ ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ๋…ธ๋“œ ๊ฐ„ ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์™€ PostgreSQL์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€