ํค์ด ํ๋ธ๋ฅด.
์ ์ด๋ฆ์ Misha Butrimov์ ๋๋ค. Cassandra์ ๋ํด ์กฐ๊ธ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ๋ด ์ด์ผ๊ธฐ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํด ๋ณธ ์ ์ด ์๋ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ ๊ฒ์ ๋๋ค. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ฌ๋ฌ๋ถ์ด ์์์ผ ํ ๋ง์ ๊ตฌํ ๊ธฐ๋ฅ๊ณผ ํจ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Oracle์ด๋ ๋ค๋ฅธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ ๋ค๋ฅธ ๊ฒ์ ๋ณธ ์ ์ด ์๋ค๋ฉด ์ด๋ฌํ ๊ฒ๋ค์ด ๋น์ ์ ์๋ช ์ ๊ตฌํ ๊ฒ์ ๋๋ค.
์นด์ฐ๋๋ผ์ ์ข์ ์ ์ ๋ฌด์์ ๋๊น? ๋จ์ผ ์ฅ์ ์ง์ ์์ด ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋๋ก ์ค๊ณ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ช ํ ๋ผ๋ฐ์ดํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋จํ ๋ง์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ๋ค๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ํ์ฅํ์๊ฒ ์ต๋๊น? ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฒ๋ฆฌ๋ RPS๋ฅผ ๋๋ฆฌ์๊ฒ ์ต๋๊น? ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก๋ ์๋ํฉ๋๋ค.
๊ทธ ์ฌ๋์ด ๋ ์ํ๋ ๊ฒ ๋ญ์ผ? ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ด๋ ์ผ๋ง์ธ๊ฐ์? ์ด๋น 10, 20, 30, 40๊ฐ์ ์์ฒญ์ ๋ง์ง ์์ต๋๋ค. ๋ น์ ์์ฒญ๋ ์ด๋น 100๋ง ๊ฑด์ ๋๋ค. ์ด๋น 2๋ง ๊ฑด์ ์์ฒญ์ ๋ณด๊ดํ๋ค๊ณ ํ๋ ํ์ฌ๊ฐ ์์ต๋๋ค. ๊ทธ๋ค์ ์๋ง๋ ๊ทธ๊ฒ์ ๋ฏฟ์ด์ผ ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์น์ ์ผ๋ก Cassandra๋ ๊ด๊ณํ ๋ฐ์ดํฐ์ ํ ๊ฐ์ง ํฐ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์ ํ ์ ์ฌํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋์ผํด ๋ณด์ธ๋ค๊ณ ๋ชจ๋ ๋์ผํ๊ฒ ์๋ํ๋ ๊ฒ์ ์๋๋๋ค.
ํ๋ฒ์ ๋๋ฃ๊ฐ ๋์๊ฒ ์์ ์ด๋ ๊ฒ ๋ฌผ์์ต๋๋ค. โ์ฌ๊ธฐ CQL Cassandra ์ฟผ๋ฆฌ ์ธ์ด๊ฐ ์๋๋ฐ ์ฌ๊ธฐ์๋ select ๋ฌธ์ด ์๊ณ where, and๊ฐ ์์ต๋๋ค. ํธ์ง๋ฅผ ์ฐ๋๋ฐ ์ ์ ๋ผ์. ์?". Cassandra๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ์ทจ๊ธํ๋ ๊ฒ์ ํญ๋ ฅ์ ์ธ ์์ด์ ์ ์ง๋ฅด๋ ์๋ฒฝํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ๋ ๊ทธ๊ฒ์ ํ๋ณดํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ฌ์์์์๋ ๊ธ์ง๋์ด ์์ต๋๋ค. ๋น์ ์ ๋ญ๊ฐ ์๋ชป๋ ๊ฒ์ ๋์์ธํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ณ ๊ฐ์ด ์ฐ๋ฆฌ์๊ฒ ์์ ์ด๋ ๊ฒ ๋งํฉ๋๋ค. โTV ์๋ฆฌ์ฆ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ์ํผ ๋๋ ํ ๋ฆฌ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ์. ๊ฑฐ๊ธฐ์๋ ์์ ์๋ฆฌ๋ TV ์๋ฆฌ์ฆ์ ๋ฐฐ์ฐ ๋ชฉ๋ก์ด ์์ ๊ฑฐ์์.โ ์ฐ๋ฆฌ๋ ๊ธฐ์ ๋ง์์ผ๋ก โ๊ฐ์!โ๋ผ๊ณ ๋งํฉ๋๋ค. XNUMX๋ฐ์ดํธ์ ๋ช ๊ฐ์ ๊ธฐํธ๋ง ์ ์กํ๋ฉด ์๋ฃ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ฐ์ด ์์ ์ฃผ๋ถ๋ค๋ ๋ฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๋ค๊ณ ๋งํ ๋๊น์ง๋ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ค์ ์ ํ ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์๊ณ ์ด๋ค ์๋ฆฌ๋ฅผ ์๋ฆฌํ๊ณ ์ถ์์ง ์๊ณ ์ถ์ดํฉ๋๋ค. ๋น์ ์ ์ฃฝ์.
์ด๋ Cassandra๊ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์์ ํค ๊ฐ์ ์ ๊ณตํ๊ณ ๋์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. Java ๋๋ Kotlin์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ ์ ์์ต๋๋ค.
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
์ฆ, ์ ๋ ฌ๋ ์ง๋๋ ํฌํจํ๋ ์ง๋์ ๋๋ค. ์ด ๋งต์ ์ฒซ ๋ฒ์งธ ํค๋ ๋ถํ ํค์ธ ํ ํค ๋๋ ํํฐ์ ํค์ ๋๋ค. ์ด๋ฏธ ์ ๋ ฌ๋ ๋งต์ ํค์ธ ๋ ๋ฒ์งธ ํค๋ ํด๋ฌ์คํฐ๋ง ํค์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํฌ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ธ ๊ฐ์ ๋ ธ๋๋ฅผ ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค. ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋๋ก ๋ถํดํ๋ ๋ฐฉ๋ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๊ฒ์ ํ๋๋ก ๋ฌถ๋๋ค๋ฉด (๊ทธ๋ฐ๋ฐ ์ฒ, ์ด์ฒ, ๋ค์ฏ์ด ๋ ์ ์์ต๋๋ค - ์ํ๋๋งํผ) ์ด๊ฒ์ ์ค์ ๋ก ๋ฐฐํฌ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ๋ฐ๋ผ์ ์ซ์๋ฅผ ๋ฐํํ๋ ์ํ ํจ์๊ฐ ํ์ํฉ๋๋ค. ๋จ์ง ์ซ์, ์ด๋ค ๋ฒ์์ ์ํ๋ ๊ธด int์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํ๋์ ๋ฒ์๋ฅผ ๋ด๋นํ๋ ํ๋์ ๋ ธ๋๋ฅผ ๊ฐ๊ฒ ๋๋ฉฐ, ๋ ๋ฒ์งธ๋ ๋ ๋ฒ์งธ, n๋ฒ์งธ๋ n๋ฒ์งธ๋ฅผ ๋ด๋นํ๊ฒ ๋ฉ๋๋ค.
์ด ์ซ์๋ ํํฐ์
ํค๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ์ ์ฉ๋๋ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ Primary key ์ง์๋ฌธ์ ์ง์ ๋๋ ์ด์ด๋ฉฐ, ๋งต์ ์ฒซ ๋ฒ์งธ์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํค๊ฐ ๋ ์ด์
๋๋ค. ์ด๋ค ๋
ธ๋๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ง ๊ฒฐ์ ํฉ๋๋ค. SQL๊ณผ ๊ฑฐ์ ๋์ผํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ Cassandra์์ ํ
์ด๋ธ์ด ์์ฑ๋ฉ๋๋ค.
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
์ด ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํค๋ ํ๋์ ์ด๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ถํ ํค์ด๊ธฐ๋ ํฉ๋๋ค.
์ฌ์ฉ์์ ์ฑ๊ณผ๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ผ๋ถ๋ ํ ๋ ธ๋๋ก ์ด๋ํ๊ณ , ์ผ๋ถ๋ ๋ค๋ฅธ ๋ ธ๋๋ก, ์ผ๋ถ๋ ์ธ ๋ฒ์งธ ๋ ธ๋๋ก ์ด๋ํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๋งต์ด๋ผ๊ณ ๋ ์๋ ค์ง ์ผ๋ฐ ํด์ ํ ์ด๋ธ, Python์์๋ ์ฌ์ ์ด๋ผ๊ณ ๋ ์๋ ค์ ธ ์๊ฑฐ๋ ๋ชจ๋ ๊ฐ์ ์ฝ๊ณ ํค๋ก ์ฝ๊ณ ์ธ ์ ์๋ ๊ฐ๋จํ Key ๊ฐ ๊ตฌ์กฐ์ ๋๋ค.
์ ํ: ํ์ฉ ํํฐ๋ง์ด ์ ์ฒด ๊ฒ์ฌ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ ๋๋ ํ์ง ๋ง์์ผ ํ ์ฌํญ
๋ช ๊ฐ์ง ์ ํ ๋ฌธ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. select * from users where, userid =
. ์ด๋ Oracle๊ณผ ๊ฐ์ต๋๋ค. select๋ฅผ ์์ฑํ๊ณ ์กฐ๊ฑด์ ์ง์ ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ป์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฅผ ๋ค์ด ํน์ ์ฐ๋์ ์ฌ์ฉ์๋ฅผ ์ ํํ๋ฉด Cassandra๋ ์์ฒญ์ ์ดํํ ์ ์๋ค๊ณ ๋ถํํฉ๋๋ค. ๊ทธ๋
๋ ์ถ์ ์ฐ๋์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ฐฐํฌํ๋์ง ์ ํ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ํค๋ก ํ์๋ ์ด์ด ํ๋๋ง ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ๋
๋ โ์ข์์. ์์ง ์ด ์์ฒญ์ ์ดํํ ์ ์์ด์. ํ์ฉ ํํฐ๋ง์ ์ถ๊ฐํ์ธ์." ์ง์๋ฌธ์ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๊ฐ ๋์ฐํ ์ผ์ด ์ผ์ด๋ฉ๋๋ค.
ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ์๋ฅผ ๋ค์ด 4๋ง ๊ฐ์ ๋ ์ฝ๋๊ฐ ์๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ข์ง ์์ต๋๋ค. ํ์ฉ ํํฐ๋ง์ Cassandra๊ฐ ๋ชจ๋ ๋ ธ๋, ๋ชจ๋ ๋ฐ์ดํฐ ์ผํฐ(์ด ํด๋ฌ์คํฐ์ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ)์์ ์ด ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ ๋ค์ ํํฐ๋งํ ์ ์๋๋ก ํ์ฉํ๋ ์ง์์ด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ ์ ์ฒด ์ค์บ๊ณผ ์ ์ฌํ๋ฉฐ ๊ฑฐ์ ๋ง์กฑํ์ง ์์ต๋๋ค.
ID๋ณ๋ก ์ฌ์ฉ์๋ง ํ์ํ๋ค๋ฉด ์ด๊ฒ์ผ๋ก๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ก๋ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ ํ์ ๋ค๋ฅธ ์ ํ์ ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ๋ชจ๋ ๋ถํ ํค๊ฐ ์๋ ๋งต์ด์ง๋ง ๊ทธ ๋ด๋ถ์๋ ์ ๋ ฌ๋ ๋งต์ด ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ํด๋ฌ์คํฐ๋ง ํค๋ผ๊ณ ๋ถ๋ฅด๋ ํค๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ํค๋ ์ฐ๋ฆฌ๊ฐ ์ ํํ ์ด๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ด๋ฅผ ํตํด Cassandra๋ ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋๊ณ ๊ฐ ๋ ธ๋์ ์์นํ๋ ๋ฐฉ์์ ์ดํดํฉ๋๋ค. ์ฆ, ์ผ๋ถ ํํฐ์ ํค์ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๋ง ํค๋ ๋ฐ์ดํฐ๋ฅผ ์ด ํธ๋ฆฌ์ ํธ์ํ๋ ๋ฐฉ๋ฒ๊ณผ ํธ๋ฆฌ์์ ์ด๋ค ์์น๋ฅผ ์ฐจ์งํ ์ง ์ ํํ๊ฒ ์๋ ค์ค๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ํธ๋ฆฌ์ด๋ฉฐ, ๋น๊ต๊ธฐ๋ ๊ฐ๋จํ ํธ์ถ๋์ด ๊ฐ์ฒด ํํ๋ก ํน์ ์ด ์งํฉ์ ์ ๋ฌํ๊ณ ์ด ๋ชฉ๋ก์ผ๋ก๋ ์ง์ ๋ฉ๋๋ค.
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
๊ธฐ๋ณธ ํค ์ง์๋ฌธ์ ์ฃผ์ํ์ธ์. ์ฒซ ๋ฒ์งธ ์ธ์(์ด ๊ฒฝ์ฐ ์ฐ๋)๋ ํญ์ ํํฐ์ ํค์ ๋๋ค. ํ๋ ์ด์์ ์ด๋ก ๊ตฌ์ฑ๋ ์ ์์ง๋ง ์ค์ํ์ง ์์ต๋๋ค. ์ฌ๋ฌ ์ด์ด ์๋ ๊ฒฝ์ฐ ์ธ์ด ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ด๊ฒ์ด ๊ธฐ๋ณธ ํค์ด๊ณ ๊ทธ ๋ค์ ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ด์ ํด๋ฌ์คํฐ๋ง ํค์์ ์ดํดํ ์ ์๋๋ก ๋๊ดํธ๋ก ๋ค์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ํ์๋ ์์๋๋ก ๋น๊ต๊ธฐ์์ ์ ์ก๋ฉ๋๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ ์ด์ ๋ ์ค์ํ๊ณ ๋ ๋ฒ์งธ ์ด์ ๋ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ฑ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ํด๋์ค์ ํ๋์ ๊ฐ์ต๋๋ค. ํ๋๋ฅผ ๋์ดํ๊ณ ํด๋น ํ๋์ ๋ํด ์ด๋ ๊ฒ์ด ๋ ํฌ๊ณ ์ด๋ ๊ฒ์ด ๋ ์์์ง ๊ธฐ๋กํฉ๋๋ค. Cassandra์์ ์ด๋ ์๋์ ์ผ๋ก ๋งํ๋ฉด ๋ฐ์ดํฐ ํด๋์ค์ ํ๋์ด๋ฉฐ ์ด์ ๋ํด ์์ฑ๋ ๋๋ฑ ํญ๋ชฉ์ด ์ ์ฉ๋ฉ๋๋ค.
์ ๋ ฌ์ ์ค์ ํ๊ณ ์ ํ์ ์ ์ฉํฉ๋๋ค.
์ ๋ ฌ ์์(๋ด๋ฆผ์ฐจ์, ์ค๋ฆ์ฐจ์ ๋ฑ)๋ ํค๊ฐ ์์ฑ๋๋ ๋์์ ์ค์ ๋๋ฉฐ ๋์ค์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ๋ ฌ ๋ฐฉ๋ฒ๊ณผ ์ ์ฅ ๋ฐฉ๋ฒ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค. ํด๋ฌ์คํฐ๋ง ํค๋ ์ ๋ ฌ ์์๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ํ ์ด๋ธ์ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ๋ก ์ ์กํด์ผ ํฉ๋๋ค. ๊ธฐ์กด ํญ๋ชฉ์์๋ ์๋ํ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ
์ด๋ธ์ ์ฌ์ฉ์๋ก ์ฑ์ ๊ณ ๊ทธ๋ค์ด ์ฒ์์๋ ์๋
์์ผ๋ณ๋ก ๋ง์ ๋ค์ด๊ฐ ๋ค์ ๊ธ์ฌ์ ์ฌ์ฉ์ ID๋ณ๋ก ๊ฐ ๋
ธ๋์ ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ด์ ์ ํ์ ์ ์ฉํ์ฌ ์ ํํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ผํ๋ ์ฌ๋์ด ๋ค์ ๋ํ๋ฉ๋๋ค where, and
, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ฅผ ํ๋ณดํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ค์ ์ ์์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํด๋ฌ์คํฐ๋ง ํค์ ์ผ๋ถ์ ๋ ์ค์ํ ํค๋ง ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด Cassandra๋ ๋งต์์ null ๋น๊ต๊ธฐ์ ๋ํ ํ๋๊ฐ ์๋ ์ด ๊ฐ์ฒด๊ฐ ์๋ ์์น๋ฅผ ์ฐพ์ ์ ์๋ค๊ณ ์ฆ์ ๋ถํํ ๊ฒ์
๋๋ค. ๊ทธ๊ฑด ๋ฐฉ๊ธ ์ ํด์ก์ด - ๊ทธ๊ฐ ๋์ ์๋ ๊ณณ์ด์. ์ด ๋
ธ๋์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ ธ์์ ํํฐ๋งํด์ผ ํฉ๋๋ค. ์ด๋ ๋
ธ๋ ๋ด ์ ์ฒด ๊ฒ์๊ณผ ์ ์ฌํ๋ฉฐ ์ด๋ ์ข์ง ์์ต๋๋ค.
๋ถํ์คํ ์ํฉ์์๋ ์ ํ ์ด๋ธ์ ๋ง๋ญ๋๋ค.
ID๋ณ, ์ฐ๋ น๋ณ, ๊ธ์ฌ๋ณ ํ๊ฒํ ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์๋ฌด๊ฒ๋ ์๋. ํ ์ด๋ธ 10๊ฐ๋ง ์ฌ์ฉํ์ธ์. ์ธ ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ ์ธ ๊ฐ์ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋์ฌ ๊ณต๊ฐ์ ์ ์ฝํ๋ ์์ ์ ์ง๋๊ฐ์ต๋๋ค. ์ด๊ฒ์ ๊ฐ์ฅ ์ ๋ ดํ ์์์ ๋๋ค. ์๋ต ์๊ฐ๋ณด๋ค ๋น์ฉ์ด ํจ์ฌ ์ ๊ฒ ๋ค๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ ํด๋ก์ธ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ XNUMX๋ถ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐ๋ ๊ฒ๋ณด๋ค XNUMX์ด ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฆ๊ฒ์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ์ฅ์ด ์๋๊ณ ์์ ์ ์ผ๋ก ์๋ํ ์ ์๋ ๋ฅ๋ ฅ์ ์ํด ๋ถํ์ํ ๊ณต๊ฐ๊ณผ ๋น์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํฉ๋๋ค. ๊ฒฐ๊ตญ, ์ค์ ๋ก XNUMX๊ฐ์ ๋ฐ์ดํฐ ์ผํฐ๋ก ๊ตฌ์ฑ๋๊ณ ๊ฐ ๋ฐ์ดํฐ ์ผํฐ์๋ XNUMX๊ฐ์ ๋ ธ๋๊ฐ ์์ผ๋ฉฐ ํ์ฉ ๊ฐ๋ฅํ ์์ค์ ๋ฐ์ดํฐ ๋ณด์กด(์๋ฌด ๊ฒ๋ ์์ค๋์ง ์๋ ๊ฒฝ์ฐ)์ ๊ฐ์ถ ํด๋ฌ์คํฐ๋ ํ๋์ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ์ข ๋ฃ๋๋๋ผ๋ ์์ ํ ์ด์๋จ์ ์ ์์ต๋๋ค. ๋๋จธ์ง ๋ ๊ฐ์๋ ๊ฐ๊ฐ ๋ ๊ฐ์ ๋ ธ๋๊ฐ ๋ ์์ต๋๋ค. ๊ทธ ํ์์ผ ๋ฌธ์ ๊ฐ ์์๋ฉ๋๋ค. ์ด๋ ๊ฝค ์ข์ ์ค๋ณต์ฑ์ด๋ฏ๋ก SSD ๋๋ผ์ด๋ธ์ ํ๋ก์ธ์๋ฅผ ์ถ๊ฐ๋ก ์ถ๊ฐํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฒฐ์ฝ SQL์ด ์๋ ๊ด๊ณ, ์ธ๋ํค๊ฐ ์๋ ์นด์ฐ๋๋ผ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ฐ๋จํ ๊ท์น์ ์์์ผ ํ๋ค.
์ฐ๋ฆฌ๋ ๊ทํ์ ์์ฒญ์ ๋ฐ๋ผ ๋ชจ๋ ๊ฒ์ ๋์์ธํฉ๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ ํด์ผ ํ๊ฑฐ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ๋ฆฌํ ๋ฐฉ์์ผ๋ก ๋ฐฐ์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์ฒด ์ค์บ์ด ์คํจํ๊ณ Cassandra๋ ์ฐ๋ฆฌ์๊ฒ ์ด๋ค ์ด์ ๋ ์ฃผ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋น์ ๊ทํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๊ท ํ์์ ์์ด๋ฒ๋ฆฌ๊ณ ๋ ์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๊ณ ์์ง ์์ต๋๋ค. 100๋ฒ ๋ฌผ๊ฑด์ ๋ด๋ ค๋์ผ๋ฉด 100๋ฒ ๋์ ์๊ฒ ๋ฉ๋๋ค. ๋ฉ์ถ๋ ๊ฒ๋ณด๋ค ์ฌ์ ํ ์ ๋ ดํฉ๋๋ค.
ํํฐ์ ๋์ฉ ํค๋ฅผ ์ ํํ์ฌ ์ ์์ ์ผ๋ก ๋ฐฐํฌ๋๋๋ก ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํค์ ํด์๊ฐ ํ๋์ ์ข์ ๋ฒ์์ ๋ค์ด๊ฐ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ์ฆ, ์ ์์์ ํ์ด๋ ์ฐ๋๋ ๋์ ์์ด๋ค. ๋ ์ ํํ๊ฒ ๋งํ๋ฉด, ์ฌ์ฉ์๊ฐ ์ถ์์ฐ๋๋ณ๋ก ์ ๊ท ๋ถํฌ๋์ด ์์ผ๋ฉด ์ข๊ณ , 5ํ๋ ํ์์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ์ข์ง ์์ต๋๋ค. ํํฐ์ ๋์ด ๊ทธ๋ฆฌ ์ข์ง ์์ ๊ฒ์ ๋๋ค.
Clustering Key ์์ฑ ๋จ๊ณ์์ Sorting์ XNUMXํ ์ ํํฉ๋๋ค. ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ํ ์ด๋ธ์ ๋ค๋ฅธ ํค๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ์ ์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ 100๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ํด์ผ ํ๋ค๋ฉด 100๊ฐ์ ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ฐ๊ฒ ๋๋ค๋ ๊ฒ์
๋๋ค.
์ถ์ฒ : habr.com