์ต๊ทผ๊น์ง Odnoklassniki๋ SQL Server์์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋ ์ฝ 50TB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ต๋๋ค. ์ด๋ฌํ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ SQL DBMS๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ๋ฐ์ดํฐ ์ผํฐ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๊ฒฝ์ฐ NoSQL ์คํ ๋ฆฌ์ง ์ค ํ๋๊ฐ ์ฌ์ฉ๋์ง๋ง ๋ชจ๋ ๊ฒ์ด NoSQL๋ก ์ ์ก๋ ์๋ ์์ต๋๋ค. ์ผ๋ถ ์ํฐํฐ์๋ ACID ํธ๋์ญ์
๋ณด์ฅ์ด ํ์ํฉ๋๋ค.
์ด๋ก ์ธํด ์ฐ๋ฆฌ๋ NoSQL ์์คํ ์ ๋ด๊ฒฐํจ์ฑ, ํ์ฅ์ฑ ๋ฐ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉด์๋ ๋์์ ACID๋ฅผ ์ ์งํ๋ฉด ๊ธฐ์กด ์์คํ ์ ์น์ํ DBMS์ธ NewSQL ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ์ด ์๋ก์ด ๋ฑ๊ธ์ ์ฐ์ ์์คํ ์ ๊ฑฐ์ ์๋ํ์ง ์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์์คํ ์ ์ง์ ๊ตฌํํ์ฌ ์์ ์ด์์ ํฌ์ ํ์ต๋๋ค.
์๋ ๋ฐฉ์๊ณผ ๋ฐ์ํ ์ผ - ์ปท ์๋๋ฅผ ์ฝ์ด๋ณด์ธ์.
ํ์ฌ Odnoklassniki์ ์๊ฐ ๋
์ ์๋ 70์ฒ๋ง ๋ช
์ด ๋๋ ์ ๋ฐฉ๋ฌธ์์
๋๋ค. ์ฐ๋ฆฌ
์ฐ๋ฆฌ๋ 2010๋ ๋ถํฐ ๋ฒ์ 0.6๋ถํฐ Cassandra๋ฅผ ์ฌ์ฉํด ์์ต๋๋ค. ํ์ฌ ์์ญ ๊ฐ์ ํด๋ฌ์คํฐ๊ฐ ์ด์๋๊ณ ์์ต๋๋ค. ๊ฐ์ฅ ๋น ๋ฅธ ํด๋ฌ์คํฐ๋ ์ด๋น 4๋ง ๊ฐ ์ด์์ ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ ๊ฐ์ฅ ํฐ ์ ์ฅ ๊ณต๊ฐ์ 260TB์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ค์ ๋ชจ๋ ์ ์ฅ์ฉ์ผ๋ก ์ฌ์ฉ๋๋ ์ผ๋ฐ์ ์ธ NoSQL ํด๋ฌ์คํฐ์ด๋ค.
SQL Server ๋
ธ๋ ์ ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์์ง ๋ฐ ์ํ์ ๋ชจ๋ ์ฌ์ฉํ์ต๋๋ค.
์ค๋ฉ ๋๋ถ์ SQL ์๋๊ฐ ํฅ์๋์์ต๋๋ค.
- ์ค๋ฉํ ๋ ์ํฐํฐ ID๊ฐ ๋ค๋ฅธ ์๋ฒ์ ์์ ์ ์์ผ๋ฏ๋ก ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- DBMS CPU์ ์ถ๊ฐ ๋ถํ๋ก ์ธํด ์ ์ฅ ํ๋ก์์ ๋ฐ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ์์ ๋ชจ๋ ์ฌํญ๊ณผ ๋์คํฌ์์ ๋ฌด์์ ์ฝ๊ธฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ JOIN์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ํธ๋์ญ์ ์ธ๋ถ์์๋ ๊ต์ฐฉ ์ํ๋ฅผ ์ค์ด๊ธฐ ์ํด Read Uncommitted ๊ฒฉ๋ฆฌ ์์ค์ ์ฌ์ฉํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ์งง์ ํธ๋์ญ์ (ํ๊ท 100ms ๋ฏธ๋ง)๋ง ์ํํฉ๋๋ค.
- ๊ต์ฐฉ ์ํ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋ค์ค ํ UPDATE ๋ฐ DELETE๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ํ ๋ฒ์ ํ๋์ ๋ ์ฝ๋๋ง ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ํญ์ ์ธ๋ฑ์ค์ ๋ํด์๋ง ์ฟผ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ์ ์ฒด ํ ์ด๋ธ ์ค์บ ๊ณํ์ด ์๋ ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ ค ์คํจ๋ฅผ ์ด๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฌํ ๋จ๊ณ๋ฅผ ํตํด ์ฐ๋ฆฌ๋ SQL ์๋ฒ์ ์ฑ๋ฅ์ ๊ฑฐ์ ์ต๋ํํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ์ ์ ๋ ๋ง์์ก์ต๋๋ค. ๊ทธ๋ค์ ์ดํด๋ณด์.
SQL ๋ฌธ์
- ์์ฒด ์์ฑ ์ค๋ฉ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์ค๋ ์ถ๊ฐ๋ ๊ด๋ฆฌ์๊ฐ ์๋์ผ๋ก ์ํํ์ต๋๋ค. ๊ทธ๋์ ํ์ฅ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ๋ณต์ ๋ณธ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํ์ต๋๋ค.
- ํ ์ด๋ธ์ ๋ ์ฝ๋ ์๊ฐ ๋์ด๋ ์๋ก ์ฝ์ ๋ฐ ์์ ์๋๊ฐ ๋๋ ค์ง๊ณ , ๊ธฐ์กด ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ ๋๋ ์๋๊ฐ ๋ช ๋ฐฐ๋ก ๋จ์ด์ง๋ฉฐ, ์ธ๋ฑ์ค ์์ฑ ๋ฐ ์ฌ์์ฑ์ ๋ค์ดํ์๊ณผ ํจ๊ป ๋ฐ์ํฉ๋๋ค.
- ํ๋ก๋์ ํ๊ฒฝ์ SQL Server์ฉ Windows๊ฐ ์๋ ์์ผ๋ฉด ์ธํ๋ผ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋๋ค.
ํ์ง๋ง ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋
๊ฒฐํจ ํ์ฉ
ํด๋์ SQL ์๋ฒ๋ ๋ด๊ฒฐํจ์ฑ์ด ๋ฎ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ํ๋๋ง ์๊ณ 20๋ ์ ํ ๋ฒ์ฉ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ์๊ฐ ๋์ ์ฌ์ดํธ๋ 64๋ถ ๋์ ๋ค์ด๋๋๋ฐ, ์ด๋ ํ์ฉ๋๋ ์๊ฐ์ ๋๋ค. ์๋ฒ๊ฐ 200๊ฐ๋ผ๋ฉด ์ฌ์ดํธ๋ XNUMX์ฃผ์ ํ ๋ฒ์ฉ ๋ค์ด๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ๊ฐ XNUMX๊ฐ๋ผ๋ฉด ์ฌ์ดํธ๊ฐ ๋งค์ฃผ ์๋ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ์์.
SQL Server์ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋ฌด์์ ํ ์ ์์ต๋๊น? Wikipedia๋ ์ฐ๋ฆฌ๋ฅผ ๋น๋ํ๋๋ก ์ด๋ํฉ๋๋ค.
์ด๋ฅผ ์ํด์๋ ๊ฐ๋น์ผ ์ฅ๋น๊ฐ ํ์ํฉ๋๋ค. ์๋ง์ ๋ณต์ , ๊ด์ฌ์ , ๊ณต์ ์คํ ๋ฆฌ์ง ๋ฐ ์๋น ํฌํจ์ด ์์ ์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค. ์ค์์นญ์ ์ฝ 10%๋ ๋ฉ์ธ ๋ ธ๋ ๋ค์ ์ด์ฐจ์ฒ๋ผ ๋ฐฑ์ ๋ ธ๋์ ์ค๋ฅ๋ก ๋๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ณ ๊ฐ์ฉ์ฑ ํด๋ฌ์คํฐ์ ์ฃผ์ ๋จ์ ์ ํด๋น ํด๋ฌ์คํฐ๊ฐ ์์นํ ๋ฐ์ดํฐ ์ผํฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๊ฐ์ฉ์ฑ์ด ์ ํ ์๋ค๋ ๊ฒ์ ๋๋ค. Odnoklassniki์๋ XNUMX๊ฐ์ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ์์ผ๋ฉฐ, ๊ทธ ์ค ํ๋์ ์์ ํ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ์ด์์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค
์ด ๋ชจ๋ ๋ฌธ์ ์๋ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ํ์ํ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์์ธํ ๋ถ์ํ๊ธฐ ์์ํ์ต๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ SQL Server๊ฐ ์ฃผ๋ก ์ํํ๋ ์์ ์ธ ํธ๋์ญ์ ์ ๋ํด ์์์ผ ํฉ๋๋ค.
๋จ์๊ฑฐ๋
์์ฉ SQL ํ๋ก๊ทธ๋๋จธ์ ๊ด์ ์์ ๊ฐ์ฅ ๊ฐ๋จํ ํธ๋์ญ์ ์ธ ์จ๋ฒ์ ์ฌ์ง์ ์ถ๊ฐํ๋ ์์ ์ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์จ๋ฒ๊ณผ ์ฌ์ง์ ์๋ก ๋ค๋ฅธ ์ ์์ ์ ์ฅ๋ฉ๋๋ค. ์จ๋ฒ์๋ ๊ณต๊ฐ ์ฌ์ง ์นด์ดํฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ๊ฑฐ๋๋ ๋ค์ ๋จ๊ณ๋ก ๋๋ฉ๋๋ค.
- ์ด์ ๋ก ์จ๋ฒ์ ์ ๊ธ๋๋ค.
- ์ฌ์ง ํ ์ด๋ธ์ ํญ๋ชฉ์ ๋ง๋ญ๋๋ค.
- ์ฌ์ง์ด ๊ณต๊ฐ ์ํ์ธ ๊ฒฝ์ฐ ์จ๋ฒ์ ๊ณต๊ฐ ์ฌ์ง ์นด์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ๊ธฐ๋ก์ ์ ๋ฐ์ดํธํ๊ณ ๊ฑฐ๋๋ฅผ ์ปค๋ฐํฉ๋๋ค.
๋๋ ์์ฌ์ฝ๋์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
TX.start("Albums", id);
Album album = albums.lock(id);
Photo photo = photos.create(โฆ);
if (photo.status == PUBLIC ) {
album.incPublicPhotosCount();
}
album.update();
TX.commit();
๋น์ฆ๋์ค ํธ๋์ญ์ ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ๊ณ , ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ , ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ํธ๋์ญ์ ์์๋ ์ฌ๋ฌ ์ํฐํฐ, ์ฌ๋ฌ ํ ์ด๋ธ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ํธ๋์ญ์
์ ์คํํ ๋ ๋ค๋ฅธ ์์คํ
์ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ๋์์ ์์ ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ํฐ์คํธ์ ์ฌ์ฉ์๊ฐ ์ด๋ค ์์ผ๋ก๋ ์์ฌ์ค๋ฌ์์ ์ฌ์ฉ์์ ๋ชจ๋ ์ฌ์ง์ด ๋ ์ด์ ๊ณต๊ฐ๋์ด์๋ ์ ๋๋ฉฐ ์กฐ์ ์ ์ํด ์ฌ์ง์ ๋ณด๋ด์ผ ํ๋ค๊ณ ํ๋จํ ์ ์์ต๋๋ค. ์ด๋ photo.status๋ฅผ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํด๋น ์นด์ดํฐ๋ฅผ ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ถ๋ช
ํ, ์ด ์์
์ด ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉ์ ์์์ฑ๊ณผ ๊ฒฝ์ ์์ ์ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํ์ง ์๊ณ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
ํ๋์ ํธ๋์ญ์
๋ด์์ ๋ค์ํ ๋น์ฆ๋์ค ์ํฐํฐ๋ฅผ ์กฐ์ํ๋ ์ ์ฌํ ์ฝ๋๊ฐ Odnoklassniki ์ ์ฒด์ ๊ฑธ์ณ ์์ฑ๋์์ต๋๋ค. NoSQL๋ก์ ๋ง์ด๊ทธ๋ ์ด์
๊ฒฝํ์ ๋ฐํ์ผ๋ก
๊ทธ๋ค์ง ์ค์ํ์ง ์์ ๊ธฐํ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฐ์ดํฐ ์ผํฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ ์คํ ๋ฆฌ์ง์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ์ ์งํฉ๋๋ค. ์ฆ, ์ ์ ์ฅ์๋ก ์์ ํ ๋ ์ฝ๋์ ์์ ๊ฑฐ์ ๋์ผํด์ผ ํ๋ฉฐ, ์ ์ฅ์์ ์๋ฌด๊ฒ๋ ์ถ๊ฐํ ํ์๊ฐ ์๊ณ , ์ถฉ๋ ํด๊ฒฐ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ๊ณ , ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฑ์ ์์ ์ด ์์ด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋์ ํธ๋์ญ์
์ ์ฒ๋ฆฌํ ๋ ๋ชจ๋ ์๋ก์ด ์คํ ๋ฆฌ์ง์ ์๋๋ ์๋นํ ๋์์ผ ํ์ต๋๋ค. ์ด๋ ํ๋ฌธ์ ์ผ๋ก ์๊ฒฉํ๊ณ ๋ณดํธ์ ์ด์ง๋ง ๋๋ฆฐ ์๋ฃจ์
(์: ์๋ฅผ ๋ค์ด)์ ์ ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
XNUMX๋จ๊ณ ์ปค๋ฐ . - ์๋ ์ฆ์ ํ์ฅ.
- ์ด๊ตญ์ ์ธ ํ๋์จ์ด๋ฅผ ๊ตฌ์ ํ ํ์ ์์ด ์ ๋ ดํ ์ผ๋ฐ ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํ์ฌ ๊ฐ๋ฐ์์ ์คํ ๋ฆฌ์ง ๊ฐ๋ฐ ๊ฐ๋ฅ์ฑ. ์ฆ, ๋ ์ ๋๋ ์คํ ์์ค ์๋ฃจ์ , ๊ฐ๊ธ์ ์ด๋ฉด Java์ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ก์ต๋๋ค.
๊ฒฐ์ , ๊ฒฐ์
๊ฐ๋ฅํ ์๋ฃจ์ ์ ๋ถ์ํ ๊ฒฐ๊ณผ ๋ ๊ฐ์ง ๊ฐ๋ฅํ ์ํคํ ์ฒ ์ ํ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ SQL ์๋ฒ๋ฅผ ๊ฐ์ ธ์ ํ์ํ ๋ด๊ฒฐํจ์ฑ, ํ์ฅ ๋ฉ์ปค๋์ฆ, ์ฅ์ ์กฐ์น ํด๋ฌ์คํฐ, ์ถฉ๋ ํด๊ฒฐ ๋ฐ ๋ถ์ฐ๋๊ณ ์์ ์ ์ด๋ฉฐ ๋น ๋ฅธ ACID ํธ๋์ญ์ ์ ๊ตฌํํ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ต์ ์ ๋งค์ฐ ์ฌ์ํ์ง ์๊ณ ๋ ธ๋ ์ง์ฝ์ ์ด๋ผ๊ณ ํ๊ฐํ์ต๋๋ค.
๋ ๋ฒ์งธ ์ต์
์ ํ์ฅ, ์ฅ์ ์กฐ์น ํด๋ฌ์คํฐ, ์ถฉ๋ ํด๊ฒฐ์ด ๊ตฌํ๋ ๊ธฐ์ฑ NoSQL ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๊ณ ํธ๋์ญ์
๋ฐ SQL์ ์ง์ ๊ตฌํํ๋ ๊ฒ์
๋๋ค. ์ผํ ๋ณด๋ฉด ACID ํธ๋์ญ์
์ ๋งํ ๊ฒ๋ ์๊ณ SQL์ ๊ตฌํํ๋ ์์
์กฐ์ฐจ ์๋
์ด ๊ฑธ๋ฆด ์์
์ฒ๋ผ ๋ณด์
๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ SQL ๊ธฐ๋ฅ ์ธํธ๋ ANSI SQL๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
์นด์ฐ๋๋ผ์ CQL
๊ทธ๋ ๋ค๋ฉด Cassandra์ ํฅ๋ฏธ๋ก์ด ์ ์ ๋ฌด์์ด๋ฉฐ ์ด๋ค ๊ธฐ๋ฅ์ด ์์ต๋๊น?
์ฒซ์งธ, ์ฌ๊ธฐ์์๋ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํ๋ ํ ์ด๋ธ์ ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ ํค์ ๋ํด SELECT ๋๋ UPDATE๋ฅผ ์ํํ ์ ์์ต๋๋ค.
CREATE TABLE photos (id bigint KEY, owner bigint,โฆ);
SELECT * FROM photos WHERE id=?;
UPDATE photos SET โฆ WHERE id=?;
๋ณต์ ๋ณธ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด Cassandra๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
XNUMX๊ฐ์ ๋
ธ๋์ ์ ์ํ๊ณ XNUMX๊ฐ์ ๋
ธ๋๋ก๋ถํฐ ์๋ต์ ๋ฐ๋ ์ ๊ทผ ๋ฐฉ์์ ํธ์ถํฉ๋๋ค.
Cassandra์ ๋ ๋ค๋ฅธ ์ด์ ์ ์ผ๊ด ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ํ ์ ์ฉ๋๊ฑฐ๋ ์ ํ ์ ์ฉ๋์ง ์๋๋ก ๋ณด์ฅํ๋ ๋ฉ์ปค๋์ฆ์ธ Batchlog์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ACID์ A(์์์ฑ)๋ฅผ ์ฆ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
Cassandra์์ ํธ๋์ญ์
์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ ์์ "
Cassandra์์ ์ฐ๋ฆฌ๊ฐ ๋์น ๊ฒ
๊ทธ๋์ ์ฐ๋ฆฌ๋ Cassandra์์ ์ค์ ACID ํธ๋์ญ์ ์ ๊ตฌํํด์ผ ํ์ต๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด DBMS์ ๋ค๋ฅธ ๋ ๊ฐ์ง ํธ๋ฆฌํ ๊ธฐ๋ฅ, ์ฆ ๊ธฐ๋ณธ ํค๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ ์ ํ์ ์ํํ ์ ์๋ ์ผ๊ด๋๊ณ ๋น ๋ฅธ ์ธ๋ฑ์ค์ ๋จ์กฐ๋ก์ด ์๋ ์ฆ๊ฐ ID์ ์ผ๋ฐ ์์ฑ๊ธฐ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
์๋ฟ
๊ทธ๋ฆฌํ์ฌ ์๋ก์ด DBMS๊ฐ ํ์ํ์ต๋๋ค. ์๋ฟ, ์ธ ๊ฐ์ง ์ ํ์ ์๋ฒ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์คํ ๋ฆฌ์ง โ ๋ก์ปฌ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ญํ ์ ํ๋ (๊ฑฐ์) ํ์ค Cassandra ์๋ฒ์ ๋๋ค. ๋ฐ์ดํฐ์ ๋ก๋์ ์์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ทธ ์์ ์ฝ๊ฒ ์์ญ, ์๋ฐฑ์ผ๋ก ํ์ฅ๋ ์ ์์ต๋๋ค.
- ํธ๋์ญ์ ์ฝ๋๋ค์ดํฐ - ํธ๋์ญ์ ์คํ์ ๋ณด์ฅํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋น์ฆ๋์ค ์ด์์ ๊ตฌํํ๊ณ ํธ๋์ญ์ ์ ์์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋๋ค. ๊ทธ๋ฌํ ํด๋ผ์ด์ธํธ๋ ์์ฒ ๋ช ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ชจ๋ ์ ํ์ ์๋ฒ๋ ๊ณตํต ํด๋ฌ์คํฐ์ ์ผ๋ถ์ด๋ฉฐ ๋ด๋ถ Cassandra ๋ฉ์์ง ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํ๊ณ
ํด๋ผ์ด์ธํธ
ํ์ค ๋๋ผ์ด๋ฒ ๋์ Fat Client ๋ชจ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ๋
ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ง๋ง ์์ฒญ ์คํ์ ์ํ ์กฐ์ ์ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ ์์ฒด๊ฐ ์์ฒญ์ ์กฐ์ ์ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์ฆ, ์คํ ๋ฆฌ์ง ๋ณต์ ๋ณธ์ ์ฟผ๋ฆฌํ๊ณ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค. ์ด๋ ์๊ฒฉ ์กฐ์ ์์์ ํต์ ์ด ํ์ํ ํ์ค ๋๋ผ์ด๋ฒ๋ณด๋ค ๋ ์์ ์ ์ด๊ณ ๋น ๋ฅผ ๋ฟ๋ง ์๋๋ผ ์์ฒญ ์ ์ก์ ์ ์ดํ ์๋ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ์์ ์ด๋ฆฐ ํธ๋์ญ์
์ธ๋ถ์์๋ ์์ฒญ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ ์ก๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํธ๋์ญ์
์ ์ด๋ฉด ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์์ฒญ์ด ํธ๋์ญ์
์กฐ์ ์์๊ฒ ์ ์ก๋ฉ๋๋ค.
C*One ๊ฑฐ๋ ์ฝ๋๋ค์ดํฐ
์ฝ๋๋ค์ดํฐ๋ C*One์ ์ํด ์ฒ์๋ถํฐ ๊ตฌํํ ๊ฒ์ ๋๋ค. ํธ๋์ญ์ , ์ ๊ธ ๋ฐ ํธ๋์ญ์ ์ ์ฉ ์์๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
๊ฐ ์๋น์ค๋ ํธ๋์ญ์
์ ๋ํด ์ฝ๋๋ค์ดํฐ๋ ํ์์คํฌํ๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ ํ์ ํธ๋์ญ์
์ ์ด์ ํธ๋์ญ์
๋ณด๋ค ํฝ๋๋ค. Cassandra์ ์ถฉ๋ ํด๊ฒฐ ์์คํ
์ ํ์์คํฌํ(์ถฉ๋ํ๋ ๋ ๋ ์ฝ๋ ์ค ์ต์ ํ์์คํฌํ๊ฐ ์๋ ๋ ์ฝ๋๊ฐ ํ์ฌ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋จ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ถฉ๋์ ํญ์ ํ์ ํธ๋์ญ์
์ ์ํด ํด๊ฒฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ตฌํํ์ต๋๋ค.
์๋ฌผ์
๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ ์ฝ๋์ ๊ธฐ๋ณธ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋น๊ด์ ์ ๊ธ์ด๋ผ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ฆ, ํธ๋์ญ์ ์์ ๋ ์ฝ๋๋ฅผ ๋จผ์ ์ ๊ทผ ๋ค์ ์ฝ๊ธฐ, ์์ ๋ฐ ์ ์ฅํด์ผ ํฉ๋๋ค. ์ฑ๊ณต์ ์ธ ์ปค๋ฐ ํ์๋ง ๋ ์ฝ๋์ ์ ๊ธ์ด ํด์ ๋์ด ๊ฒฝ์ ํธ๋์ญ์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋น๋ถ์ฐ ํ๊ฒฝ์์๋ ์ด๋ฌํ ์ ๊ธ์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค. ๋ถ์ฐ ์์คํ ์๋ ๋ ๊ฐ์ง ์ฃผ์ ์ต์ ์ด ์์ต๋๋ค. ํด๋ฌ์คํฐ์ ๋ถ์ฐ ์ ๊ธ์ ๊ตฌํํ๊ฑฐ๋ ๋์ผํ ๋ ์ฝ๋์ ๊ด๋ จ๋ ํธ๋์ญ์ ์ด ํญ์ ๋์ผํ ์ฝ๋๋ค์ดํฐ์ ์ํด ์๋น์ค๋๋๋ก ํธ๋์ญ์ ์ ๋ถ์ฐํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ์ด๋ฏธ SQL์ ๋ก์ปฌ ํธ๋์ญ์ ๊ทธ๋ฃน์ ๋ถ์ฐ๋์ด ์์ผ๋ฏ๋ก ๋ก์ปฌ ํธ๋์ญ์ ๊ทธ๋ฃน์ ์ฝ๋๋ค์ดํฐ์๊ฒ ํ ๋นํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํ ์ฝ๋๋ค์ดํฐ๋ 0์์ 9๊น์ง์ ํ ํฐ์ผ๋ก ๋ชจ๋ ํธ๋์ญ์ ์ ์ํํ๊ณ ๋ ๋ฒ์งธ ์ฝ๋๋ค์ดํฐ๋ 10์์ 19๊น์ง์ ํ ํฐ์ผ๋ก ๋ชจ๋ ํธ๋์ญ์ ์ ์ํํฉ๋๋ค. ๋ฑ๋ฑ. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ์ฝ๋๋ค์ดํฐ ์ธ์คํด์ค๋ ํธ๋์ญ์ ๊ทธ๋ฃน์ ๋ง์คํฐ๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ค์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฒํ HashMap ํํ๋ก ์ ๊ธ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ฝ๋๋ค์ดํฐ ์ค๋ฅ
ํ๋์ ์ฝ๋๋ค์ดํฐ๊ฐ ํธ๋์ญ์ ๊ทธ๋ฃน์ ๋ ์ ์ ์ผ๋ก ์๋น์คํ๊ธฐ ๋๋ฌธ์ ๋ ๋ฒ์งธ ํธ๋์ญ์ ์คํ ์๋๊ฐ ์๊ฐ ์ด๊ณผ๋๋๋ก ์คํจ ์ฌ์ค์ ์ ์ํ๊ฒ ํ์ธํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฅผ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์ํํ๊ธฐ ์ํด ์์ ํ ์ฐ๊ฒฐ๋ ์ฟผ๋ผ ํํธ๋นํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ต๋๋ค.
๊ฐ ๋ฐ์ดํฐ ์ผํฐ๋ ์ต์ XNUMX๊ฐ์ ์ฝ๋๋ค์ดํฐ ๋ ธ๋๋ฅผ ํธ์คํ ํฉ๋๋ค. ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ ์ฝ๋๋ค์ดํฐ๋ ๋ค๋ฅธ ์ฝ๋๋ค์ดํฐ์๊ฒ ํํธ๋นํธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ๊ธฐ๋ฅ๊ณผ ๋ง์ง๋ง์ผ๋ก ํด๋ฌ์คํฐ์ ์ด๋ ์ฝ๋๋ค์ดํฐ๋ก๋ถํฐ ์ด๋ค ํํธ๋นํธ ๋ฉ์์ง๋ฅผ ๋ฐ์๋์ง ์๋ ค์ค๋๋ค.
ํํธ๋นํธ ๋ฉ์์ง์ ์ผ๋ถ๋ก ๋ค๋ฅธ ์ฌ๋์ผ๋ก๋ถํฐ ์ ์ฌํ ์ ๋ณด๋ฅผ ์์ ํ ๊ฐ ์ฝ๋๋ค์ดํฐ๋ ์ฟผ๋ผ ์์น์ ๋ฐ๋ผ ์ด๋ค ํด๋ฌ์คํฐ ๋
ธ๋๊ฐ ์๋ํ๊ณ ์๋ํ์ง ์๋์ง ์ค์ค๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ฆ, ๋
ธ๋ X๊ฐ ํด๋ฌ์คํฐ์ ๋๋ค์ ๋
ธ๋๋ก๋ถํฐ ์ ์ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ ๋
ธ๋ Y๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ์์ ํ๋ฉด Y๊ฐ ์๋ํฉ๋๋ค. ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋๋ค์๊ฐ ๋
ธ๋ Y์์ ๋๋ฝ๋ ๋ฉ์์ง๋ฅผ ๋ณด๊ณ ํ์๋ง์ Y๋ ๊ฑฐ๋ถํ์ต๋๋ค. ์ฟผ๋ผ์ด ๋
ธ๋ X์ ๋ ์ด์ ๋ฉ์์ง๋ฅผ ์์ ํ์ง ์๋๋ค๊ณ ์๋ฆฌ๋ฉด ๋
ธ๋ X ์์ฒด๊ฐ ์คํจํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค๋ ์ ์ด ๊ถ๊ธํฉ๋๋ค.
ํํธ๋นํธ ๋ฉ์์ง๋ 20ms ์ฃผ๊ธฐ๋ก ์ด๋น ์ฝ 50ํ ๋์ ๋น๋๋ก ์ ์ก๋ฉ๋๋ค. Java์์๋ ๊ฐ๋น์ง ์์ง๊ธฐ๋ก ์ธํ ์ผ์ ์ค์ง ์๊ฐ์ด ๋น์ทํ๊ธฐ ๋๋ฌธ์ 50ms ์ด๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ต์ ๋ณด์ฅํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ฐ๋ฆฌ๋ GC ์ผ์ ์ค์ง ๊ธฐ๊ฐ์ ๋ํ ๋ชฉํ๋ฅผ ์ง์ ํ ์ ์๋ G1 ๊ฐ๋น์ง ์์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์๋ต ์๊ฐ์ ๋ฌ์ฑํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋งค์ฐ ๋๋ฌผ๊ฒ ์์ง๊ธฐ ์ผ์ ์ค์ง๊ฐ 50ms๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์๋ชป๋ ์ค๋ฅ ๊ฐ์ง๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฝ๋๋ค์ดํฐ๋ ์๊ฒฉ ๋ ธ๋์ ์ฒซ ๋ฒ์งธ ํํธ๋นํธ ๋ฉ์์ง๊ฐ ์ฌ๋ผ์ง ๋ ์ฌ๋ฌ ๊ฐ๊ฐ ์ฐ์์ผ๋ก ์ฌ๋ผ์ง ๊ฒฝ์ฐ์๋ง ์๊ฒฉ ๋ ธ๋์ ์คํจ๋ฅผ ๋ณด๊ณ ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ 200์์ ์ฝ๋๋ค์ดํฐ ๋ ธ๋์ ์คํจ๋ฅผ ๊ฐ์งํ ์ ์์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ms.
ํ์ง๋ง ์ด๋ค ๋ ธ๋๊ฐ ์๋์ ๋ฉ์ท๋์ง ๋น ๋ฅด๊ฒ ์ดํดํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ด์ ๋ํด ๋ญ๊ฐ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
ํ์ด์ง
๊ณ ์ ์ ์ธ ๊ณํ์๋ ๋ง์คํฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ์ ์์ํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
๊ทธ๋ฃน 50์์ ํธ๋์ญ์
์ ์คํํ๋ค๊ณ ํด๋ณด์. ๊ต์ฒด ๋ฐฉ์, ์ฆ ๋ฉ์ธ ์ฝ๋๋ค์ดํฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ด๋ ๋
ธ๋๊ฐ ๊ทธ๋ฃน 50์์ ํธ๋์ญ์
์ ์คํํ ์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํด๋ณด์. ์ฐ๋ฆฌ์ ๋ชฉํ๋ ๋ฐ์ดํฐ ์ผํฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์์คํ
๊ธฐ๋ฅ์ ์ ์งํ๋ ๊ฒ์
๋๋ค. ์ฒซ ๋ฒ์งธ ์์ฝ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ผํฐ์ ๋
ธ๋๊ฐ ๋๊ณ ๋ ๋ฒ์งธ ์์ฝ์ ์ธ ๋ฒ์งธ ๋
ธ๋๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฒฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ตฌ์ฑํ๋ ํ ๋ฒ ์ ํ๋๋ฉด ํด๋ฌ์คํฐ์ ํ ํด๋ก์ง๊ฐ ๋ณ๊ฒฝ๋ ๋๊น์ง, ์ฆ ์ ๋
ธ๋๊ฐ ํฌํจ๋ ๋๊น์ง ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค(๋งค์ฐ ๋๋ฌผ๊ฒ ๋ฐ์ํจ). ์ด์ ๋ง์คํฐ๊ฐ ์คํจํ๋ ๊ฒฝ์ฐ ์ ํ์ฑ ๋ง์คํฐ๋ฅผ ์ ํํ๋ ์ ์ฐจ๋ ํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์๋น๊ฐ ํ์ฑ ๋ง์คํฐ๊ฐ ๋๊ณ , ์๋์ด ์ค์ง๋๋ฉด ๋ ๋ฒ์งธ ์๋น๊ฐ ํ์ฑ ๋ง์คํฐ๊ฐ ๋ฉ๋๋ค.
์ด ์ฒด๊ณ๋ ์ ๋ง์คํฐ๋ฅผ ํ์ฑํํ๋ ค๋ฉด ์ด์ ๋ง์คํฐ์ ์ค๋ฅ๋ฅผ ํ์ธํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ฏ๋ก ๋ฒ์ฉ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ ์์ ์ ์ ๋๋ค.
๊ทธ๋ฌ๋ ๊ณ ๊ฐ์ ํ์ฌ ์ด๋ค ๋ง์คํฐ๊ฐ ์์ ์ค์ธ์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? 50ms ์์ ์์ฒ ๋ช ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ณด๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํธ๋์ญ์ ์ด๊ธฐ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ด ๋ง์คํฐ๊ฐ ๋ ์ด์ ์๋ํ์ง ์๋๋ค๋ ์ฌ์ค์ ์์ง ๋ชจ๋ฅด๊ณ ์์ฒญ์ด ์๊ฐ ์ด๊ณผ๋๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ณ ๊ฐ์ ๊ทธ๋ฃน ๋ง์คํฐ์ ๊ทธ์ ๋ณด์ ๊ธ ๋ชจ๋์ ๋์์ ํธ๋์ญ์ ์ ๊ฐ์คํ๋ผ๋ ์์ฒญ์ ์ถ์ธก์ ์ผ๋ก ๋ณด๋ด์ง๋ง ํ์ฌ ํ์ฑ ๋ง์คํฐ์ธ ์ฌ๋๋ง์ด ์ด ์์ฒญ์ ์๋ตํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ํธ๋์ญ์ ๋ด์์ ํ์ฑ ๋ง์คํฐ์์ ๋ชจ๋ ํ์ ํต์ ์ ์ํํฉ๋๋ค.
๋ฐฑ์ ๋ง์คํฐ๋ ์์ ์ ๊ฒ์ด ์๋ ํธ๋์ญ์ ์ ๋ํด ์์ ๋ ์์ฒญ์ ์์ง ์์ฑ๋์ง ์์ ํธ๋์ญ์ ์ ๋๊ธฐ์ด์ ๋ฐฐ์นํ๊ณ ํด๋น ์์ฒญ์ ํ๋์ ์ ์ฅ๋ฉ๋๋ค. ํ์ฑ ๋ง์คํฐ๊ฐ ์ข ๋ฃ๋๋ฉด ์ ๋ง์คํฐ๋ ๋๊ธฐ์ด์์ ํธ๋์ญ์ ์ด๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ตํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ์ด์ ๋ง์คํฐ์์ ํธ๋์ญ์ ์ ์ฐ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ์๋ต์ ๋ฌด์๋ฉ๋๋ค(๋ฌผ๋ก ์ด๋ฌํ ํธ๋์ญ์ ์ ์๋ฃ๋์ง ์๊ณ ํด๋ผ์ด์ธํธ์ ์ํด ๋ฐ๋ณต๋ฉ๋๋ค).
๊ฑฐ๋ ๋ฐฉ์
ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ํฐํฐ์ ๋ํ ํธ๋์ญ์ ์ ์ด๋๋ก ์ฝ๋๋ค์ดํฐ์๊ฒ ์์ฒญ์ ๋ณด๋๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ฝ๋๋ค์ดํฐ๋ ์ด ์ํฐํฐ๋ฅผ ์ ๊ทธ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ธ ํ ์ด๋ธ์ ๋ฐฐ์นํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ฝ๋๋ค์ดํฐ๋ ์ ์ฅ์์์ ์ด ์ํฐํฐ๋ฅผ ์ฝ๊ณ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค์ดํฐ ๋ฉ๋ชจ๋ฆฌ์ ํธ๋์ญ์ ์ํ๋ก ์ ์ฅํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ์ฝ๋๋ค์ดํฐ์๊ฒ ์ํฐํฐ ์์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์ฝ๋๋ค์ดํฐ๋ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํธ๋์ญ์
์ํ ํ
์ด๋ธ์ ๋ฐฐ์นํฉ๋๋ค. ์ด๊ฒ์ผ๋ก ๋
น์์ด ์๋ฃ๋ฉ๋๋ค. ์ ์ฅ์์ ๋
น์์ด ์ด๋ฃจ์ด์ง์ง ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ํ์ฑ ํธ๋์ญ์
์ ์ผ๋ถ๋ก ๋ณ๊ฒฝ๋ ์์ฒด ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์ฝ๋๋ค์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
- ID๊ฐ ์ด๋ฏธ ํธ๋์ญ์ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ID๊ฐ ์์ผ๋ฉด ์คํ ๋ฆฌ์ง ๋ ธ๋์์ ๋๋ฝ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ์ ๊ฒฐํฉํ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ์์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ์ ์ ์์ง๋ง ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๋๋ค์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ์๋ง ์ ์ฅ๋๊ณ ์์ง Cassandra ๋ ธ๋์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ปค๋ฐ์ ๋ณด๋ด๋ฉด ์๋น์ค ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ํ๊ฐ ์ฝ๋๋ค์ดํฐ์ ์ํด ๊ธฐ๋ก๋ ๋ฐฐ์น๋ก ์ ์ฅ๋๊ณ ๊ธฐ๋ก๋ ๋ฐฐ์น๋ก Cassandra ์ ์ฅ์์ ์ ์ก๋ฉ๋๋ค. ์ ์ฅ์๋ ์ด ํจํค์ง๊ฐ ์์์ ์ผ๋ก(์์ ํ) ์ ์ฉ๋๋๋ก ํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ์์
์ ์ํํ๊ณ ์ฝ๋๋ค์ดํฐ์๊ฒ ์๋ต์ ๋ฐํํฉ๋๋ค. ์ฝ๋๋ค์ดํฐ๋ ์ ๊ธ์ ํด์ ํ๊ณ ํด๋ผ์ด์ธํธ์ ๋ํ ํธ๋์ญ์
์ฑ๊ณต์ ํ์ธํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋กค๋ฐฑํ๋ ค๋ฉด ์ฝ๋๋ค์ดํฐ๋ ํธ๋์ญ์
์ํ๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ง ํด์ ํ๋ฉด ๋ฉ๋๋ค.
์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ก ์ฐ๋ฆฌ๋ ACID ์์น์ ๊ตฌํํ์ต๋๋ค.
- ์์์ฑ. ์ด๋ ํธ๋์ญ์ ์ด ์์คํ ์ ๋ถ๋ถ์ ์ผ๋ก ๊ธฐ๋ก๋์ง ์๊ณ ๋ชจ๋ ํ์ ์์ ์ด ์๋ฃ๋๊ฑฐ๋ ์๋ฌด๊ฒ๋ ์๋ฃ๋์ง ์์์ ๋ณด์ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ Cassandra์ ๋ก๊ทธ๋ ๋ฐฐ์น๋ฅผ ํตํด ์ด ์์น์ ๊ณ ์ํฉ๋๋ค.
- ์ผ๊ด์ฑ. ๊ฐ๊ฐ์ ์ฑ๊ณต์ ์ธ ํธ๋์ญ์ ์ ์ ์์ ๋ฐ๋ผ ์ ํจํ ๊ฒฐ๊ณผ๋ง ๊ธฐ๋กํฉ๋๋ค. ํธ๋์ญ์ ์ ์ด๊ณ ์ผ๋ถ ์์ ์ ์ํํ ํ ๊ฒฐ๊ณผ๊ฐ ์ ํจํ์ง ์์ ๊ฒ์ผ๋ก ํ์ธ๋๋ฉด ๋กค๋ฐฑ์ด ์ํ๋ฉ๋๋ค.
- ๊ฒฉ๋ฆฌ. ํธ๋์ญ์ ์ด ์คํ๋ ๋ ๋์ ํธ๋์ญ์ ์ด ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ์ด์๋ ์ ๋ฉ๋๋ค. ๊ฒฝ์ํ๋ ํธ๋์ญ์ ์ ์ฝ๋๋ค์ดํฐ์ ๋น๊ด์ ์ ๊ธ์ ์ฌ์ฉํ์ฌ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. ํธ๋์ญ์ ์ธ๋ถ ์ฝ๊ธฐ์ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์ปค๋ฐ ์์ค์์ ๊ฒฉ๋ฆฌ ์์น์ด ์ค์๋ฉ๋๋ค.
- ์์ . ์์คํ ์ ์ , ํ๋์จ์ด ์ค๋ฅ ๋ฑ ํ์ ์์ค์ ๋ฌธ์ ์ ๊ด๊ณ์์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํธ๋์ญ์ ์ผ๋ก ์ธํ ๋ณ๊ฒฝ ์ฌํญ์ ์์ ์ด ์ฌ๊ฐ๋ ๋ ์ ์ง๋์ด์ผ ํฉ๋๋ค.
์ธ๋ฑ์ค๋ก ์ฝ๊ธฐ
๊ฐ๋จํ ํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
CREATE TABLE photos (
id bigint primary key,
owner bigint,
modified timestamp,
โฆ)
ID(๊ธฐ๋ณธ ํค), ์์ ์ ๋ฐ ์์ ๋ ์ง๊ฐ ์์ต๋๋ค. ๋งค์ฐ ๊ฐ๋จํ ์์ฒญ์ ํด์ผ ํฉ๋๋ค. ๋ณ๊ฒฝ ๋ ์ง๊ฐ "๋ง์ง๋ง ๋ "์ธ ์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ์ธ์.
SELECT *
WHERE owner=?
AND modified>?
์ด๋ฌํ ์ฟผ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ค๋ฉด ๊ธฐ์กด SQL DBMS์์๋ ์ด(์์ ์, ์์ )๋ณ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ถํด์ผ ํฉ๋๋ค. ์ด์ ACID ๋ณด์ฅ์ด ์์ผ๋ฏ๋ก ์ด ์์ ์ ๋งค์ฐ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค!
C*One์ ์ธ๋ฑ์ค
๋ ์ฝ๋ ID๊ฐ ๊ธฐ๋ณธ ํค์ธ ์ฌ์ง์ด ํฌํจ๋ ์์ค ํ ์ด๋ธ์ด ์์ต๋๋ค.
์ธ๋ฑ์ค์ ๊ฒฝ์ฐ C*One์ ์๋ณธ์ ๋ณต์ฌ๋ณธ์ธ ์ ํ
์ด๋ธ์ ์์ฑํฉ๋๋ค. ํค๋ ์ธ๋ฑ์ค ํํ์๊ณผ ๋์ผํ๋ฉฐ ์์ค ํ
์ด๋ธ ๋ ์ฝ๋์ ๊ธฐ๋ณธ ํค๋ ํฌํจํฉ๋๋ค.
์ด์ "๋ง์ง๋ง ๋ ์์ ์"์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ๋ค๋ฅธ ํ
์ด๋ธ์์ ์ ํํ์ฌ ๋ค์ ์์ฑํ ์ ์์ต๋๋ค.
SELECT * FROM i1_test
WHERE owner=?
AND modified>?
์๋ณธ ํ ์ด๋ธ ์ฌ์ง๊ณผ ์ธ๋ฑ์ค ํ ์ด๋ธ i1์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ฝ๋๋ค์ดํฐ์ ์ํด ์๋์ผ๋ก ์ ์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ ์คํค๋ง๋ง์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ๋๋ฉด ์ฝ๋๋ค์ดํฐ๋ ๋ฉ์ธ ํ ์ด๋ธ๋ฟ๋ง ์๋๋ผ ๋ณต์ฌ๋ณธ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฑํ์ฌ ์ ์ฅํฉ๋๋ค. ์ธ๋ฑ์ค ํ ์ด๋ธ์ ๋ํด์๋ ์ถ๊ฐ ์์ ์ด ์ํ๋์ง ์๊ณ , ๋ก๊ทธ๊ฐ ์ฝํ์ง ์์ผ๋ฉฐ, ์ ๊ธ์ด ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฆ, ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฆฌ์์ค๊ฐ ๊ฑฐ์ ์๋ชจ๋์ง ์์ผ๋ฉฐ ์์ ์ฌํญ ์ ์ฉ ์๋์ ๊ฑฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
ACID๋ฅผ ์ฌ์ฉํ์ฌ SQL๊ณผ ์ ์ฌํ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํํ ์ ์์์ต๋๋ค. ์ผ๊ด๋๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋น ๋ฅด๊ณ ๊ตฌ์ฑ ๊ฐ๋ฅํ๋ฉฐ CQL ์ฟผ๋ฆฌ ์ธ์ด์ ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด SQL๋งํผ ๊ฐ๋จํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ์ ์ ์ธ๋ฑ์ค๊ฐ ์๋ณธ ํธ๋์ญ์ ํ ์ด๋ธ ์์ ์คํ ์๋์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ป๊ฒ ๋ ๊ฑฐ์์
์ฐ๋ฆฌ๋ XNUMX๋ ์ ์ C*One์ ๊ฐ๋ฐํ์ฌ ์์ฉํ์ ์ฐฉ์ํ์ต๋๋ค.
๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ๋ฌด์์ ์ป์์ต๋๊น? ์์ ๋คํธ์ํฌ์์ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ ์ ํ ์ค ํ๋์ธ ์ฌ์ง ์ฒ๋ฆฌ ๋ฐ ์ ์ฅ ํ์ ์์คํ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ง ์์ฒด์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ์ข ๋ฅ์ ๋ฉํ ์ ๋ณด์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ด์ Odnoklassniki์๋ ์ฝ 20์ต ๊ฐ์ ๊ธฐ๋ก์ด ์์ผ๋ฉฐ, ์์คํ ์ ์ด๋น 80๋ง ๊ฑด์ ์ฝ๊ธฐ ์์ฒญ, ๋ฐ์ดํฐ ์์ ๊ณผ ๊ด๋ จ๋ ์ด๋น ์ต๋ 8๊ฑด์ ACID ํธ๋์ญ์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ณต์ ์ธ์ = 1(๊ทธ๋ฌ๋ RAID 10)๋ก SQL์ ์ฌ์ฉํ์ ๋ ์ฌ์ง ๋ฉํ ์ ๋ณด๋ Microsoft SQL Server(32๊ฐ ๋ฐฑ์ ํฌํจ)๋ฅผ ์คํํ๋ 11๊ฐ ์์คํ ์ ๊ณ ๊ฐ์ฉ์ฑ ํด๋ฌ์คํฐ์ ์ ์ฅ๋์์ต๋๋ค. ๋ฐฑ์ ์ ์ฅ์ ์ํด 10๊ฐ์ ์๋ฒ๋ ํ ๋น๋์์ต๋๋ค. ์ด 50๋์ ๊ณ ๊ฐ ์๋์ฐจ. ๋์์ ์์คํ ์ ์๋น ์์ด ์ ๊ฒฉ ๋ถํ์์ ์๋ํ์ต๋๋ค.
์ ์์คํ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ํ ๋ณต์ ์ธ์ = 3(๊ฐ ๋ฐ์ดํฐ ์ผํฐ์ ๋ณต์ฌ๋ณธ)์ ๋ฐ์์ต๋๋ค. ์์คํ ์ 63๊ฐ์ Cassandra ์คํ ๋ฆฌ์ง ๋ ธ๋์ 6๊ฐ์ ์ฝ๋๋ค์ดํฐ ๋จธ์ , ์ด 69๊ฐ์ ์๋ฒ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์์คํ ์ ํจ์ฌ ์ ๋ ดํ๋ฉฐ ์ด ๋น์ฉ์ SQL ์์คํ ๋น์ฉ์ ์ฝ 30%์ ๋๋ค. ๋์์ ๋ถํ๋ 30%๋ก ์ ์ง๋ฉ๋๋ค.
C*One์ ๋์ ์ผ๋ก ๋๊ธฐ ์๊ฐ๋ ๊ฐ์ํ์ต๋๋ค. SQL์์๋ ์ฐ๊ธฐ ์์ ์ ์ฝ 4,5ms๊ฐ ๊ฑธ๋ ธ์ต๋๋ค. C*One์์ - ์ฝ 1,6ms. ํธ๋์ญ์ ๊ธฐ๊ฐ์ ํ๊ท 40ms ๋ฏธ๋ง์ด๊ณ ์ปค๋ฐ์ 2ms ์์ ์๋ฃ๋๋ฉฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๊ธฐ๊ฐ์ ํ๊ท 2ms์ ๋๋ค. 99๋ฒ์งธ ๋ฐฑ๋ถ์์ - ๋จ 3~3,1ms์ ๋ถ๊ณผํ๋ฉฐ ์๊ฐ ์ด๊ณผ ํ์๊ฐ 100๋ฐฐ ๊ฐ์ํ์ต๋๋ค. ์ด๋ ๋ชจ๋ ์ถ์ธก์ด ๋๋ฆฌ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ฌ ๋๋ถ๋ถ์ SQL Server ๋
ธ๋๋ ํ๊ธฐ๋์์ผ๋ฉฐ C*One๋ง์ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ ํ์ด ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ํด๋ผ์ฐ๋์์ ์๋ํ๋๋ก C*One์ ์กฐ์ ํ์ต๋๋ค.
์ด์ ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์คํ ๋ฆฌ์ง ์์ค์ ํด๋ผ์ฐ๋๋ก ์ด์ ํ๋ ์์
์ ์งํํ๊ณ ์์ง๋ง ์ด๋ ์์ ํ ๋ค๋ฅธ ์ด์ผ๊ธฐ์
๋๋ค.
์ถ์ฒ : habr.com