์ค๊ตญ ์ต๋ 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 ์ฟผ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๋์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ธ๋๊ฐ ์ฐธ์ฌํ๋ ๋ถ์ฐ ์ฟผ๋ฆฌ ์คํ์ ์กฐ์ ์ ์ญํ ์ ํฉ๋๋ค. ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ธ๋์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ์ ์ฅํ๋ฉฐ, ๋ ธ๋ ๊ด๋ฆฌ, ๋ฐฑ์ , ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ ๋ฐ์ดํธ, ์์ ๋ฐ ์ค์ง๋ฅผ ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํธ๋์ญ์ ๊ด๋ฆฌ ์๋น์ค๋ ์ ์ฒด ํด๋ฌ์คํฐ์ ๊ฑธ์ณ ์ ๋ฐ์ ์ธ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
PolarDB๋ ๋ชจ๋ ๋ ธ๋์ ๊ณตํต๋ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๋ฐ์ดํฐ๊ฐ ์๋ก ๋ค๋ฅธ ๋ ธ๋์ ์ ์ฅ๋ ๋ ๋ถ์ฐ๋๋ฉฐ, ๊ฐ ๋ ธ๋๊ฐ ์ด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ด๋นํ๊ณ ๊ด๋ จ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ Shared-nothing ๋ถ์ฐ ์ปดํจํ ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ฐ์ดํฐ์. ๊ฐ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋ถํ (์ค๋ฉ)๋ฉ๋๋ค. ์์ฒญ์ด ์ฌ๋ฌ ๋ ธ๋์ ์๋ ๋ฐ์ดํฐ์ ๊ฑธ์ณ ์๋ ๊ฒฝ์ฐ ๋ถ์ฐ ํธ๋์ญ์ ์คํ ๋ฉ์ปค๋์ฆ๊ณผ ํธ๋์ญ์ ์กฐ์ ์๊ฐ ํ์ฑํ๋์ด ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ฒฉ๋ฆฌ ๋ฐ ์ ๋ขฐ์ฑ)๋ฅผ ๋ณด์ฅํฉ๋๋ค.
๋ด๊ฒฐํจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ์ธ๊ทธ๋จผํธ๋ ์ต์ XNUMX๊ฐ์ ๋ ธ๋์ ๋ณต์ ๋ฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ ์ ์ฝํ๊ธฐ ์ํด ์ ์ฒด ๋ฐ์ดํฐ์๋ XNUMX๊ฐ์ ๋ณต์ ๋ณธ๋ง ํฌํจ๋๋ฉฐ, ๊ทธ ์ค ํ๋๋ WAL(ํ๊ธฐ์ ๋ก๊ทธ) ์ ์ฅ์ผ๋ก ์ ํ๋ฉ๋๋ค. ์ ์ฒด ๋ณต์ ๋ณธ์ด ์๋ ๋ ๋ ธ๋ ์ค ํ๋๊ฐ ๋ฆฌ๋๋ก ์ ์ถ๋์ด ์์ฒญ ์ฒ๋ฆฌ์ ์ฐธ์ฌํฉ๋๋ค. ๋ ๋ฒ์งธ ๋ ธ๋๋ ๋ฌธ์ ์ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋น ์ญํ ์ ํ๊ณ ์ธ ๋ฒ์งธ ๋ ธ๋๋ ์ ๋ ๋ ธ๋ ์ ํ์ ์ฐธ์ฌํ๋ฉฐ ์ ์ฒด ๋ณต์ ๋ณธ์ด ์๋ ๋ ๋ ธ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ ๋ณด๋ฅผ ๋ณต์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ ๋ ธ๋ ๊ฐ์ ๋ฐ์ดํฐ ๋ณต์ ๋ ์ ์ฌ์ ์ผ๋ก ์ ๋ขฐํ ์ ์๋ ๋ ธ๋๊ฐ ์๋ ๋คํธ์ํฌ์์ ์ผ๊ด๋ ํฉ์ ์ ์๋ฅผ ๋ณด์ฅํ๋ Paxos ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค.
PolarDB DBMS์ ์ ์ฒด ๊ธฐ๋ฅ์ ์ธ ๊ฐ์ง ๋ฆด๋ฆฌ์ค์ ๊ฑธ์ณ ๊ณต๊ฐ๋ ์์ ์
๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฒ์ ์์๋ ๋ณต์ , ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ํด๋ฌ์คํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๋๊ตฌ๊ฐ ๊ฒ์๋ ์์ ์
๋๋ค. ๋ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค์๋ ๋
ธ๋ ๊ฐ ACID ๋ฐ ๋ถ์ฐ SQL ์คํ์ ์ง์ํ๋ ๋ถ์ฐ ํธ๋์ญ์
์คํ ์์คํ
์ด ํฌํจ๋ฉ๋๋ค. ์ธ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค์๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํ ์ธ๊ทธ๋จผํธ์ ์ ์ํ ๋ฐฐ์น์ ์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ํ์ฅํ๋ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ๋
ธ๋ ๊ฐ ์ ์ฐํ ๋ฐ์ดํฐ ๋ฐฐํฌ๋ฅผ ์ํ ๋๊ตฌ์ PostgreSQL์ฉ ํ๋ฌ๊ทธ์ธ์ด ํฌํจ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru