InterSystems IRIS DBMS๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ํฅ๋ฏธ๋ก์ด ๊ตฌ์กฐ์ธ ์ ์ญ์ ์ง์ํฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์ด๋ ํธ๋์ญ์ ํํ์ ๋ค์ํ ์ถ๊ฐ ๊ธฐ๋ฅ, ๋ฐ์ดํฐ ํธ๋ฆฌ ํ์์ ์ํ ๋น ๋ฅธ ๊ธฐ๋ฅ, ์ ๊ธ ๋ฐ ์์ฒด ObjectScript ์ธ์ด๊ฐ ํฌํจ๋ ๋ค์ค ๋ ๋ฒจ ํค์ ๋๋ค.
"์ ์ญ์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ๋ณด๋ฌผ๊ฒ์ ๋๋ค"๋ผ๋ ๊ธฐ์ฌ ์๋ฆฌ์ฆ์์ ์ ์ญ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
์ ๋ ๊ธ๋ก๋ฒ์์ ํธ๋์ญ์
์ด ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง, ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ๊ฒฐ๊ตญ ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ํ
์ด๋ธ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ๊ฐ ์์ ํ ๋ค๋ฆ
๋๋ค. ํจ์ฌ ๋ฎ์ ์์ค์
๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ก ์์ ์ ์ ์๋ฏ์ด ํธ๋์ญ์
์ ์ ๋๋ก ๊ตฌํํ๋ ค๋ฉด ๋ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
A - ์์์ฑ(์์์ฑ). ๊ฑฐ๋์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ก๋๊ฑฐ๋ ์ ํ ๊ธฐ๋ก๋์ง ์์ต๋๋ค.
C - ์ผ๊ด์ฑ. ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ํ๋ ๋ด๋ถ์ ์ผ๋ก ์ผ๊ด์ฑ์ด ์์ด์ผ ํฉ๋๋ค. ์ฌ๋ฌ ๋ฉด์์ ์ด ์๊ตฌ ์ฌํญ์ ํ๋ก๊ทธ๋๋จธ์ ๊ด๋ จ์ด ์์ง๋ง SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ์ธ๋ ํค์๋ ๊ด๋ จ๋ฉ๋๋ค.
๋ - ๊ฒฉ๋ฆฌํ๋ค. ๋ณ๋ ฌ๋ก ์คํ๋๋ ํธ๋์ญ์ ์ ์๋ก ์ํฅ์ ์ฃผ์ด์๋ ์ ๋ฉ๋๋ค.
D - ๋ด๊ตฌ์ฑ. ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ ๋ฎ์ ์์ค์ ๋ฌธ์ (์: ์ ์ )๊ฐ ํธ๋์ญ์ ์ ์ํด ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ์ ์ํฅ์ ์ฃผ์ด์๋ ์ ๋ฉ๋๋ค.
์ ์ญ์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค. ๋งค์ฐ ์ ํ๋ ํ๋์จ์ด์์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์คํ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ์ ์ญ์์ ํธ๋์ญ์
๊ตฌํ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
IRIS์์ ํธ๋์ญ์
์ ์ง์ํ๊ธฐ ์ํด ๋ค์ ๋ช
๋ น์ด ์ฌ์ฉ๋ฉ๋๋ค.
1. ์์์ฑ
ํ์ธํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์์์ฑ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ์์์ ํ์ธํฉ๋๋ค.
Kill ^a
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TCOMMIT
๊ทธ๋ฐ ๋ค์ ๊ฒฐ๋ก ์ ๋ด๋ฆฝ๋๋ค.
Write ^a(1), โ โ, ^a(2), โ โ, ^a(3)
์ฐ๋ฆฌ๋ ์ป๋๋ค :
1 2 3
๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ์์์ฑ์ ์ ์ง๋ฉ๋๋ค. ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ก๋ฉ๋๋ค.
์์ ์ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ , ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ณ , ํธ๋์ญ์ ์ด ๋ถ๋ถ์ ์ผ๋ก ๋๋ ์ ํ ์ ์ฅ๋์ง ์๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์์ฑ์ ๋ค์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
๊ทธ๋ฐ ๋ค์ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ ๋ก ์ค์งํ๊ณ ์คํํ ํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
docker kill my-iris
์ด ๋ช ๋ น์ ํ๋ก์ธ์ค๋ฅผ ์ฆ์ ์ค์งํ๊ธฐ ์ํด SIGKILL ์ ํธ๋ฅผ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ข ๋ฃ์ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
๊ฑฐ๋๊ฐ ๋ถ๋ถ์ ์ผ๋ก ์ ์ฅ๋์์ ์๋ ์๋์?
WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)
- ์๋์, ์ด์๋จ์ง ๋ชปํ์ต๋๋ค.
๋กค๋ฐฑ ๋ช ๋ น์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TROLLBACK
WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)
์๋ฌด๊ฒ๋ ์ด์๋จ์ง ๋ชปํ์ต๋๋ค.
2. ์ผ๊ด์ฑ
์ ์ญ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํค๋ ์ ์ญ์์ ์์ฑ๋๋ฏ๋ก(์ ์ญ์ ๊ด๊ณํ ํ ์ด๋ธ๋ณด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํ์ ์์ค ๊ตฌ์กฐ๋ผ๋ ์ ์ ์๊ธฐ์์ผ ์ฃผ์ธ์) ์ผ๊ด์ฑ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ค๋ฉด ํค์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ ์ญ ๋ณ๊ฒฝ๊ณผ ๋์ผํ ํธ๋์ญ์ ์์.
์๋ฅผ ๋ค์ด, ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ TIN์ ํค๋ก ์ฌ์ฉํ๋ ๊ธ๋ก๋ฒ ^์ฌ๋์ด ์์ต๋๋ค.
^person(1234567, โfirstnameโ) = โSergeyโ
^person(1234567, โlastnameโ) = โKamenevโ
^person(1234567, โphoneโ) = โ+74995555555
...
์ฑ๊ณผ ์ด๋ฆ์ผ๋ก ๋น ๋ฅธ ๊ฒ์์ ํ๊ธฐ ์ํด ^index ํค๋ฅผ ๋ง๋ค์์ต๋๋ค.
^index(โKamenevโ, โSergeyโ, 1234567) = 1
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฅด์๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
TSTART
^person(1234567, โfirstnameโ) = โSergeyโ
^person(1234567, โlastnameโ) = โKamenevโ
^person(1234567, โphoneโ) = โ+74995555555
^index(โKamenevโ, โSergeyโ, 1234567) = 1
TCOMMIT
๋ฐ๋ผ์ ์ญ์ ํ ๋ ํธ๋์ญ์ ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
TSTART
Kill ^person(1234567)
ZKill ^index(โKamenevโ, โSergeyโ, 1234567)
TCOMMIT
์ฆ, ์ผ๊ด์ฑ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ํ๋ก๊ทธ๋๋จธ์ ์ด๊นจ์ ๋ฌ๋ ค ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธ๋ก๋ฒ์ ๊ฒฝ์ฐ ๋ฎ์ ์์ค์ ํน์ฑ์ผ๋ก ์ธํด ์ด๋ ์ ์์ ์ธ ํ์์ ๋๋ค.
3. ๊ฒฉ๋ฆฌ
์ด๊ณณ์ด ์ผ์์ด ์์๋๋ ๊ณณ์ ๋๋ค. ๋ง์ ์ฌ์ฉ์๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์์ ์์ ํ์ฌ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์ํฉ์ ๋ง์ ์ฌ์ฉ์๊ฐ ๋์ผํ ์ฝ๋ ์ ์ฅ์๋ก ๋์์ ์์ ํ๊ณ ํ ๋ฒ์ ์ฌ๋ฌ ํ์ผ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋์์ ์ปค๋ฐํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์ ๋น์ทํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ชจ๋ ๊ฒ์ ์ค์๊ฐ์ผ๋ก ์ ๋ ฌํด์ผ ํฉ๋๋ค. ์ง์งํ ํ์ฌ์๋ ๋ฒ์ ๊ด๋ฆฌ(๋ธ๋์น ๋ณํฉ, ์ถฉ๋ ํด๊ฒฐ ๋ฑ)๋ฅผ ๋ด๋นํ๋ ํน๋ณํ ์ฌ๋๋ ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด ๋ชจ๋ ์์ ์ ์ค์๊ฐ์ผ๋ก ์ํํด์ผ ํ๋ฉฐ ์์ ์ ๋ณต์ก์ฑ๊ณผ ์ ํ์ฑ์ ๊ณ ๋ คํฉ๋๋ค. ์ด๋ฅผ ์ ๊ณตํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๋ฐ ์ฝ๋.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ์ฉ์๊ฐ ๋์ผํ ๋ฐ์ดํฐ์ ๋ํด ์์ ํ๋ ๊ฒฝ์ฐ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ํํ๋ ์์ ์ ์๋ฏธ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํธ๋์ญ์ ๊ณผ ์ถฉ๋ํ๋ ํธ๋์ญ์ ํ๋๋ง ์คํ ์ทจ์ํ๊ฑฐ๋ ์์ฐจ์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ํธ๋์ญ์ ์คํ ์ค(์ปค๋ฐ ์ ) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๊ฐ ์ผ๊ด๋์ง ์์ ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฌ์ฑ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด๋์ง ์์ ์ํ์ ์ก์ธ์คํ์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ค์ํ ๋ฐฉ๋ฒ: ์ค๋ ์ท ์์ฑ, ํ ๋ค์ค ๋ฒ์ ๊ด๋ฆฌ ๋ฑ
ํธ๋์ญ์ ์ ๋ณ๋ ฌ๋ก ์คํํ ๋ ์๋ก ๊ฐ์ญํ์ง ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ๊ณ ๋ฆฝ์ ์์ฑ์ด๋ค.
SQL์ 4๊ฐ์ง ๊ฒฉ๋ฆฌ ์์ค์ ์ ์ํฉ๋๋ค.
- ์ปค๋ฐ๋์ง ์์ ์ฝ๊ธฐ
- ์ปค๋ฐ ๋ ์ฝ๊ธฐ
- ๋ฐ๋ณต ์ฝ๊ธฐ
- ์ง๋ ฌํ ๊ฐ๋ฅ
๊ฐ ๋ ๋ฒจ์ ๊ฐ๋ณ์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ์์ค์ ๊ตฌํํ๋ ๋ฐ ๋๋ ๋น์ฉ์ ๊ฑฐ์ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
์ปค๋ฐ๋์ง ์์ ์ฝ๊ธฐ - ์ด๋ ๊ฐ์ฅ ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ด์ง๋ง ๋์์ ๊ฐ์ฅ ๋น ๋ฆ ๋๋ค. ํธ๋์ญ์ ์ ์๋ก ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค.
์ปค๋ฐ ๋ ์ฝ๊ธฐ ๊ฒฉ๋ฆฌ์ ๋ค์ ๋จ๊ณ์ธ ์ ์ถฉ์์ ๋๋ค. ํธ๋์ญ์ ์ ์ปค๋ฐ ์ ์๋ ์๋ก์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ์ ์ ์์ง๋ง ์ปค๋ฐ ํ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ์ ์ ์์ต๋๋ค.
T1๊ณผ ๋์ผํ ๋ฐ์ดํฐ๋ก ์์ ํ ํธ๋์ญ์ T2, T3 ... Tn์์ ์ปค๋ฐ์ด ๋ฐ์ํ ๊ธด ํธ๋์ญ์ T1์ด ์๋ ๊ฒฝ์ฐ T1์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ๋งค๋ฒ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ํ์์ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅ ์ฝ๊ธฐ๋ผ๊ณ ํฉ๋๋ค.
๋ฐ๋ณต ์ฝ๊ธฐ โ ์ด ๊ฒฉ๋ฆฌ ์์ค์์๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ ์์ฒญ์ด ์์ ๋๋ง๋ค ๊ฒฐ๊ณผ ๋ฐ์ดํฐ์ ์ค๋ ์ท์ด ์์ฑ๋๊ณ ๋์ผํ ํธ๋์ญ์ ์์ ์ฌ์ฌ์ฉ๋ ๋ ์ค๋ ์ท์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ฏ๋ก ๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ์ฝ๊ธฐ ํ์์ด ์์ต๋๋ค. ์ฌ์ฉ. ๊ทธ๋ฌ๋ ์ด ๊ฒฉ๋ฆฌ ์์ค์์๋ ํฌํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ด๋ ๋ณ๋ ฌ ์ปค๋ฐ๋ ํธ๋์ญ์ ์ ์ํด ์ถ๊ฐ๋ ์ ํ์ ์ฝ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ง๋ ฌํ ๊ฐ๋ฅ - ์ต๊ณ ์์ค์ ์ ์ฐ. ํธ๋์ญ์ ์์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ฌ์ฉ๋ ๋ฐ์ดํฐ(์ฝ๊ธฐ ๋๋ ๋ณ๊ฒฝ)๋ ์ฒซ ๋ฒ์งธ ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ์๋ง ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฌ์ฉํ ์ ์๋ค๋ ์ฌ์ค์ด ํน์ง์ ๋๋ค.
๋จผ์ , ํธ๋์ญ์ ์ ์์ ์ด ๋ฉ์ธ ์ค๋ ๋๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๋์ด ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. 2๊ฐ์ ํฐ๋ฏธ๋ ์ฐฝ์ ์ด์ด๋ณด๊ฒ ์ต๋๋ค.
Kill ^t
Write ^t(1)
2
TSTART
Set ^t(1)=2
๊ณ ๋ฆฝ์ ์์ต๋๋ค. ํ ์ค๋ ๋๋ ํธ๋์ญ์ ์ ์ฐ ๋ ๋ฒ์งธ ์ค๋ ๋๊ฐ ๋ฌด์์ ํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
์๋ก ๋ค๋ฅธ ์ค๋ ๋์ ํธ๋์ญ์ ์ด ๋ด๋ถ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
2๊ฐ์ ํฐ๋ฏธ๋ ์ฐฝ์ ์ด๊ณ 2๊ฐ์ ํธ๋์ญ์ ์ ๋ณ๋ ฌ๋ก ์ด์ด๋ณด๊ฒ ์ต๋๋ค.
kill ^t
TSTART
Write ^t(1)
3
TSTART
Set ^t(1)=3
๋ณ๋ ฌ ํธ๋์ญ์ ์ ์๋ก์ ๋ฐ์ดํฐ๋ฅผ ๋ด ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ฐ์ฅ ๊ฐ๋จํ๋ฉด์๋ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฉ๋ฆฌ ์์ค์ธ READ UNCOMMITED๋ฅผ ์ป์์ต๋๋ค.
์์น์ ์ผ๋ก ์ด๋ ํญ์ ์ฑ๋ฅ์ด ์ต์ฐ์ ์ธ ๊ธ๋ก๋ฒ ๊ธฐ์ ์์ ์์ํ ์ ์๋ ์ผ์ ๋๋ค.
์ ์ญ ์์ ์ ๋ ๋์ ์์ค์ ๊ฒฉ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ฌ๊ธฐ์์๋ ๊ฒฉ๋ฆฌ ์์ค์ด ํ์ํ ์ด์ ์ ์๋ ๋ฐฉ์์ ๋ํด ์๊ฐํด ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ๋์ ๊ฒฉ๋ฆฌ ์์ค์ธ SERIALIZE๋ ๋ณ๋ ฌ๋ก ์คํ๋ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ ์์ฐจ ์คํ๊ณผ ๋์ผํ์ฌ ์ถฉ๋์ด ์์์ ๋ณด์ฅํจ์ ์๋ฏธํฉ๋๋ค.
๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ObjectScript์ ์ค๋งํธ ์ ๊ธ์ ์ฌ์ฉํ์ฌ ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ, ์ฆ๋ถ, ๋ค์ค ์ ๊ธ์ ์ํํ ์ ์์ต๋๋ค.
๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ค๊ณ๋ ์ ์ถฉ์์ ๋๋ค.
์ ๊ธ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๊ฒฉ๋ฆฌ ์์ค์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ํ์ํ ๋ฐฐํ์ ์ ๊ธ๋ฟ๋ง ์๋๋ผ ์ฝ๊ธฐ ํ๋ก์ธ์ค ์ค์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๋ณ๊ฒฝ๋์ด์๋ ์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ ๋ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๋ณ๋ ฌ๋ก ์ฌ์ฉํ ์ ์๋ ์์ ๊ณต์ ์ ๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฌ์์์ด ๋ฐ ์์ด๋ก ๋ XNUMX๋จ๊ณ ์ฐจ๋จ ๋ฐฉ๋ฒ์ ๋ํ ์ถ๊ฐ ์ ๋ณด:
โ
โ
์ด๋ ค์ด ์ ์ ํธ๋์ญ์ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๊ฐ ์ผ๊ด๋์ง ์์ ์ ์์ง๋ง ์ด ์ผ๊ด๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํผํ๋ ๋ฐฉ๋ฒ?
์ ๊ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๊ฐ ์ผ๊ด๋๊ฒ ์ ์ง๋๋ ๊ฐ์์ฑ ์ฐฝ์ ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํฉ์๋ ์ํ์ ๊ณต๊ฐ ์ฐฝ์ ๋ํ ๋ชจ๋ ์ก์ธ์ค๋ ์ ๊ธ ์ฅ์น๋ก ์ ์ด๋ฉ๋๋ค.
๋์ผํ ๋ฐ์ดํฐ์ ๋ํ ๊ณต์ ์ ๊ธ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค์์ ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ ์ฐฝ์ ํ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐฐํ์ ์ ๊ธ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋จ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ด๋ฌํ ์ ๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐฐํ์ ์ ๊ธ์ ๋ค์ ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ฌด๋ฃ์ธ ๊ฒฝ์ฐ ๋ชจ๋ ํ๋ก์ธ์ค
- ์ด ๋ฐ์ดํฐ์ ๋ํ ๊ณต์ ์ ๊ธ์ด ์๊ณ ๋ฐฐํ์ ์ ๊ธ์ ๊ฐ์ฅ ๋จผ์ ์์ฒญํ ํ๋ก์ธ์ค๋ง ํด๋น๋ฉ๋๋ค.
๊ฐ์์ฑ ์ฐฝ์ด ์ข์์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ด๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์๊ฐ์ด ๊ธธ์ด์ง์ง๋ง ๊ทธ ์์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ ๋ ์ผ๊ด๋ ์ ์์ต๋๋ค.
READ_COMMITTED โ ์ด ์์ค์ ํต์ฌ์ ๋ค๋ฅธ ์ค๋ ๋์์ ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ๋ณผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๊ฐ ์์ง ์ปค๋ฐ๋์ง ์์ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ด ํ์๋ฉ๋๋ค.
์ด๋ฅผ ํตํด ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ ์ ๋ณ๋ ฌํํ ์ ์์ต๋๋ค.
ํน๋ณํ ํธ๋ฆญ์ด ์์ผ๋ฉด IRIS์์ ์ด์ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ผ๋ฏ๋ก ์ ๊ธ์ ์ค์ ํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ผ๊ด์ฑ์ด ์๋ ์๊ฐ์๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋๋ก ๊ณต์ ์ ๊ธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์๋ก ๋์ ์ด์ฒดํ๋ ์ฌ์ฉ์ ๊ธฐ๋ฐ ^์ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
123๋ฒ ์ฌ๋์์ 242๋ฒ ์ฌ๋์ผ๋ก ์ด๋ํ๋ ์๊ฐ:
LOCK +^person(123), +^person(242)
Set ^person(123, amount) = ^person(123, amount) - amount
Set ^person(242, amount) = ^person(242, amount) + amount
LOCK -^person(123), -^person(242)
์ธ์ถ ์ 123๋ฒ ์ฌ๋์๊ฒ ๊ธ์ก์ ์์ฒญํ๋ ์๊ฐ์๋ ์ ์ฉ ๋ธ๋ก์ด ๋๋ฐ๋์ด์ผ ํฉ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก).
LOCK +^person(123)
Write ^person(123)
๊ฐ์ธ ๊ณ์ ์ ๊ณ์ ์ํ๋ฅผ ํ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ณต์ ์ ๊ธ์ ์ฌ์ฉํ๊ฑฐ๋ ์ ํ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
LOCK +^person(123)#โSโ
Write ^person(123)
๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด ๊ฑฐ์ ์ฆ์ ์ํ๋๋ค๊ณ ๊ฐ์ ํ๋ฉด(์ ์ญ์ ๊ด๊ณํ ํ ์ด๋ธ๋ณด๋ค ํจ์ฌ ๋ฎ์ ์์ค์ ๊ตฌ์กฐ๋ผ๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค) ์ด ์์ค์ ๋ํ ํ์์ฑ์ด ์ค์ด๋ญ๋๋ค.
๋ฐ๋ณต ์ฝ๊ธฐ - ์ด ๊ฒฉ๋ฆฌ ์์ค์ ๋์ ํธ๋์ญ์ ์ ์ํด ์์ ๋ ์ ์๋ ๋ฐ์ดํฐ์ ๋ค์ค ์ฝ๊ธฐ๋ฅผ ํ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ๋ณ๊ฒฝํ๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ์๋ ๊ณต์ ์ ๊ธ์ ์ค์ ํ๊ณ ๋ณ๊ฒฝํ๋ ๋ฐ์ดํฐ์๋ ๋ฐฐํ์ ์ ๊ธ์ ์ค์ ํด์ผ ํฉ๋๋ค.
๋คํ์ค๋ฝ๊ฒ๋ LOCK ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ๋ชจ๋ ์ ๊ธ(๋ง์ ์ ์์)์ ํ๋์ ๋ช ๋ น๋ฌธ์ ์์ธํ ๋์ดํ ์ ์์ต๋๋ค.
LOCK +^person(123, amount)#โSโ
ััะตะฝะธะต ^person(123, amount)
๊ธฐํ ์์ (ํ์ฌ ๋ณ๋ ฌ ์ค๋ ๋๋ ^person(123, amount)์ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ณ๊ฒฝํ ์ ์์)
LOCK +^person(123, amount)
ะธะทะผะตะฝะตะฝะธะต ^person(123, amount)
LOCK -^person(123, amount)
ััะตะฝะธะต ^person(123, amount)
LOCK -^person(123, amount)#โSโ
์ผํ๋ก ๊ตฌ๋ถ๋ ์ ๊ธ์ ๋์ดํ๋ฉด ์์ฐจ์ ์ผ๋ก ์ฌ์ฉ๋์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
LOCK +(^person(123),^person(242))
๊ทธ๋ฐ ๋ค์ ์์์ ์ผ๋ก ํ ๋ฒ์ ๊ฐ์ ธ์ต๋๋ค.
์ง๋ ฌํ โ ๊ถ๊ทน์ ์ผ๋ก ๊ณตํต ๋ฐ์ดํฐ๊ฐ ์๋ ๋ชจ๋ ํธ๋์ญ์ ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋๋ก ์ ๊ธ์ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ์ ๊ธ์ ๋ฐฐํ์ ์ด์ด์ผ ํ๋ฉฐ ์ฑ๋ฅ์ ์ํด ์ ์ญ์ ๊ฐ์ฅ ์์ ์์ญ์์ ์ํ๋์ด์ผ ํฉ๋๋ค.
๊ธ๋ก๋ฒ ^์ฌ๋์ ์ฐจ๋ณ ์๊ธ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ๋์ ์๊ฒฉํ๊ฒ ์์ฐจ์ ์ผ๋ก ์ง์ถ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ SERIALIZE ๊ฒฉ๋ฆฌ ์์ค๋ง ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ ๊ธ์ก์ ์ฌ๋ฌ ๋ฒ ์ง์ถํ ์ ์์ต๋๋ค.
4. ๋ด๊ตฌ์ฑ
์ฉ๊ธฐ๋ฅผ ํ๋์ปทํ ํ์ฌ ํ ์คํธ๋ฅผ ์งํํ์ต๋๋ค.
docker kill my-iris
๊ธฐ์ง๋ ๊ทธ๋ค์ ์ ๊ฒฌ๋๋์ต๋๋ค. ์๋ฌด๋ฐ ๋ฌธ์ ๋ ํ์ธ๋์ง ์์์ต๋๋ค.
๊ฒฐ๋ก
๊ธ๋ก๋ฒ์ ๊ฒฝ์ฐ InterSystems IRIS๋ ํธ๋์ญ์ ์ ์ง์ํฉ๋๋ค. ๊ทธ๋ค์ ์ง์ ์ผ๋ก ์์์ ์ด๊ณ ์ ๋ขฐํ ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด ์ธ๋ ํค์ ๊ฐ์ ๋ณต์กํ ๋ด์ฅ ๊ตฌ์กฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์ ๋ ธ๋ ฅ๊ณผ ํธ๋์ญ์ ์ฌ์ฉ์ด ํ์ํฉ๋๋ค.
์ ๊ธ์ ์ฌ์ฉํ์ง ์๋ ์ ์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ READ UNCOMMITED์ด๋ฉฐ, ์ ๊ธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ SERIALIZE ์์ค๊น์ง ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ ์ญ ํธ๋์ญ์
์ ์ ํ์ฑ๊ณผ ์๋๋ ํ๋ก๊ทธ๋๋จธ์ ๊ธฐ์ ์ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค. ์ฝ์ ๋ ๋ ๋๋ฆฌ ๊ณต์ ๋ ์ ๊ธ์ ์ฌ์ฉํ ์๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง๊ณ , ๋ ์ข์ ๋ฒ์์ ๋ฐฐํ์ ์ ๊ธ์ ์ฌ์ฉํ ์๋ก ์ฑ๋ฅ์ด ๋ ๋นจ๋ผ์ง๋๋ค.
์ถ์ฒ : habr.com