๐ก ๋ณธ ๋ฌธ์๋ ๋ํ์ ์ธ NoSQL ์ค ํ๋์ธ 'Apache Cassandra(์ดํ Cassandra)'์ ๋ํ ๊ฐ๋ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
ํ์์ NoSQL์ ๊ด์ฌ์ด ์๊ฑฐ๋ Cassandra๋ฅผ ์ ๋ฌธํ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
1. Cassandra ์๊ฐ
1.1 Cassandra ๊ฐ์
Cassandra๋ NoSQL DBMS์ ํ๋๋ก, ๋จ์ผ ์ฅ์ ์์ด ๊ณ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉด์ ์๋ง์ ์๋ฒ ๊ฐ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ์ง์ํ๋ฉฐ ๋ง์คํฐ๋ฆฌ์ค(masterless) ๋น๋๊ธฐ ๋ ํ๋ฆฌ์ผ์ด์ ์ ํตํด ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๋ฎ์ ๋ ์ดํด์ ์ด์์ ํ์ฉํ๋ฉฐ ์ฑ๋ฅ ๋ฉด์์ ๋์ ๊ฐ์น๋ฅผ ๋ณด์ ๋๋ค.
์ฒ์์ Staged event-driven architecture(SEDA)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Facebook์์ ์ค๊ณํ์์ผ๋ฉฐ, Amazon์ Dynamo ๋ถ์ฐ ์คํ ๋ฆฌ์ง ๋ฐ ๋ณต์ ๊ธฐ์ ๊ณผ Google์ Bigtable ๋ฐ์ดํฐ ๋ฐ ์คํ ๋ฆฌ์ง ์์ง ๋ชจ๋ธ์ด ๊ฒฐํฉ๋ ๋ชจ๋ธ์ ๋๋ค.
- Amazon Dynamo: https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
- Google Bigtable: https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
์ถ๊ฐ๋ก, DB-Engines Ranking ๊ธฐ์ค์ผ๋ก ํ์กดํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ์ธ์ง๋ 4์, ์ ์ฒด DB ์ธ์ง๋ 11์๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค.
1.2 Cassandra ํน์ง: NoSQL (Wide column store)
Name | CassandraDB |
Description | Wide-column store based on ideas of BigTable and DynamoDB |
Primary database model | Wide column store |
Technical documentation | cassandra.apache.org/doc/latest |
Developer | Apache Software Foundation |
Initial release | 2008 |
Current release | 4.0.7, October 2022 |
License | Open Source (Lisence: Apache v2.0) Pricing for commercial distributions provided by DataStax and available upon request. |
Cloud-based only | no |
DBaaS offerings (sponsored links) |
|
Data scheme | schema-free |
Typing | yes (https://cassandra.apache.org/doc/latest/cassandra/cql/types.html) |
SQL | SQL-like SELECT, DML and DDL statements (CQL, Cassandra Query Language) |
Replication methods | selectable replication factor |
3rd parties | Elassandra: Elassandra closely integrates Elasticsearch in Cassandra. CData: Connect to Big Data & NoSQL through standard Drivers. » more Instaclustr: Hosted & Managed Apache Cassandra as a Service » more DataStax Cassandra: Cassandra Day + Wakanda Forever » more Aiven for Apache Cassandra: A truly distributed database that can handle large volumes of writes. » more |
Typical application scenarios | Internet of Things (IOT), fraud detection applications, recommendation engines, product catalogs and playlists and messaging applications. |
- ๋์ฑ ์์ธํ ๋ด์ฉ์ DB-Engines Ranking: Cassandra ๋ถ๋ถ์ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
2. Cassandra ๊ตฌ์กฐ
2.1 Cassandra ์ ์ฅ ๊ตฌ์กฐ
Cassandra๋ Wide-Column(Column Family) ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก Schema-less ํ Column ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋๋ค.
์์ ๊ฐ์ด ์นด์ฐ๋๋ผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ์ต์์์ ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ(Data) ์ ์ฅ์์ธ ํค ์คํ์ด์ค(Key space)๊ฐ ์๊ณ , ํค ์คํ์ด์ค ์๋์๋ ํ ์ด๋ธ(Table)์ด ์กด์ฌํฉ๋๋ค. Table์ ๋ค์์ ๋ก์ฐ๋ค๋ก ๊ตฌ์ฑ๋์ด์์ผ๋ฉฐ ๊ฐ ๋ก์ฐ๋ ํค ๊ฐ(Key Value)์ผ๋ก ์ด๋ฃจ์ด์ง ์นผ๋ผ๋ค๋ก ๊ตฌ์ฑ๋๋ค. RDB ํํ์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ํ๊ณ ์๋ค๋ ๊ฑธ ์ ์ ์์ต๋๋ค.
Table์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ ํํํ๋ฉด?
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
2.2 Cassandra ์ ์ฅ ๊ตฌ์กฐ (RDB์ ๋น๊ต)
๊ธฐ์กด์ RDB์๋ ์ ์ฌํ ์ ์ฅ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง
RDB | Database | Table | Row | Column | schema |
Cassandra | Keyspace | Table | Row | Column Name, Value |
- Keyspace : ๋ฐ์ดํฐ์ ์ด ๋ฐ์ดํฐ์ผํฐ์ ์ด๋ป๊ฒ ๋ณต์ ๋ ๊ฒ์ธ์ง ์ง์ ํ ์ ์์ผ๋ฉฐ, ๋ณต์ ๊ฐ์๋งํผ ํด๋ฌ์คํฐ์ ๋ณต์ ๋์ด ์ ์ฅ๋ฉ๋๋ค. ํค์คํ์ด์ค๋ ํ ์ด๋ธ์ ํฌํจํ๋ ๊ฐ๋ ์ ๋๋ค.
- Table : ํํฐ์ ๋ณ ์ฝ๋์ ์ ๋ํ ์คํค๋ง๋ฅผ ์ง์ ํฉ๋๋ค. ํ ์ด๋ธ์ ํํฐ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ก์ฐ์ ์ปฌ๋ผ์ ํฌํจํ๊ณ ์์ต๋๋ค. ์นด์ฐ๋๋ผ ํ ์ด๋ธ์ ์๋ก์ด ์ปฌ๋ผ์ ๋ค์ดํ์ ์์ด ์ถ๊ฐํ ์ ์์ต๋๋ค.
- Partition : ์นด์ฐ๋๋ผ์ ์ ์ฅ๋๋ ๋ก์ฐ์ ๋ ธ๋๋ฅผ ์๋ณํ๊ธฐ ์ํ ํค๊ฐ ํํฐ์ ์ ๋๋ค. ์ฆ ๊ธฐ๋ณธํค๋ฅผ ์๋ฏธํ๋ฉฐ, ํํฐ์ ํค๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ๋๋์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋๋ค.
- Row : ํํฐ์ ํค์ ์ ํ์ ์ผ๋ก ํด๋ฌ์คํฐ๋ง ํค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ์ ๋๋ค. ์ฌ๋ฌ ์ปฌ๋ผ์ ํฌํจํ๋ ๊ฐ๋ ์ ๋๋ค.
- Column : ํด๋น ์ปฌ๋ ์ (ํ ์ด๋ธ)์์ ๋ก์ฐ์ ์ํ ๋จ์ผ ๋ฐ์ดํฐ(์ด)๋ฅผ ๋งํฉ๋๋ค.
2.3 Cassandra ์ํคํ ์ณ ํน์ง
์นด์ฐ๋๋ผ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง(Ring) ๊ตฌ์กฐ๋ฅผ ๋ ๊ณ ์์ผ๋ฉฐ, ๋ง์ ๊ตฌ์ฑํ๋ ๊ฐ ๋ ธ๋์ ๋ฐ์ดํฐ(Data)๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํฉ๋๋ค. ์ด๋ ํํฐ์ ํค๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ์ ํด์(hash) ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ๊ฒ ๋๋ฉฐ, ๊ฐ ๋ ธ๋๋ ์นด์ฐ๋๋ผ์ conf/cassandra.yaml์ ์ ์๋ ์ค์ ์ ํตํ์ฌ ๋ ธ๋๋ง๋ค ๊ณ ์ ์ ํด์ ๊ฐ ๋ฒ์์ ๋ฐ๋ผ ๋ถ์ฐ๋ฉ๋๋ค.
2.4 Cassandra ์ด์ ๋ฐฉ๋ฒ
์ํ์น ์นด์ฐ๋๋ผ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์ค์ ์ cassandra.yaml ํ์ผ์ ํตํด ์งํํ๋ฉฐ ์๋ ๋๋ ๊ด๋ จ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ์ ์์ต๋๋ค. ์ผ๋ถ ์ค์ ์ ๋ค์ดํ์ ์์ด ์ํํ ์ ์์ง๋ง ์ผ๋ถ ์ต์ ์ ์นด์ฐ๋๋ผ๋ฅผ ์์ ํ ์ข ๋ฃํด์ผ ํฉ๋๋ค.
์นด์ฐ๋๋ผ๋ ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ์ธ nodetool, fqltool๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ง์ํฉ๋๋ค. ๋ํ ์นด์ฐ๋๋ผ๋ ์นด์ฐ๋๋ผ ๋ฐ์ดํฐ์ ์์ ์ค๋ ์ท์ ์ ๊ณตํ๋ ์ํ ๋ฏน ์ค๋ ์ท์ ์ง์ํ๋ฉฐ ๋ฐฑ์ ๋๊ตฌ์ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. ์นด์ฐ๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋๋ ๋๋ก ๋ฐฑ์ ํ ์ ์๋ ์ฆ๋ถ ๋ฐฑ์ (incremental backup)๋ ์ ๊ณตํฉ๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ํ์น ์นด์ฐ๋๋ผ 4.0๋ถํฐ๋ ์๋ฐ 11 ์ง์, ๊ฐ์ ํ ์ด๋ธ, audit ๋ก๊น ๋ฑ์ ์ถ๊ฐ๋ก ์ง์ํ๊ฒ ๋์์ต๋๋ค.
3. Cassandra ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ฅ๋จ์
3.1 Cassandra ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ฅ์
3.1.1 Masterless
Mater-Slave
- ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ถ๋ถ์ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ๋ผ๊ณ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์
- ์ด๋ฌํ ๊ตฌ์ฑ์์๋ ๋จ์ผ ๋ ธ๋๊ฐ ๋ง์คํฐ๋ก ์ง์ ๋์ด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ํํ ์ ์๊ณ ๋๋จธ์ง ๋ ธ๋๋ ์ฌ๋ ์ด๋ธ ์ญํ ์ ํ๋ฉฐ ์ฝ๊ธฐ ์์ ๋ง ์ํํ ์ ์์
- ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋จ์
- ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ฅํด์ผ ํ ๊ฒฝ์ฐ ๋น์ฉ์ด ํฌ๊ฒ ์์นํ ์ ์์
- ๊ฐ์ฉ์ฑ๋ง์ ์ ํ๋ ์ ์์
- ๋ง์คํฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ด๋ฆฌ์๊ฐ ์ ๋ง์คํฐ๋ฅผ ์ง์ ํ ๋๊น์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด ์ค์ง๋ ์ ์์
- ์ง์ฐ์ผ๋ก ์ธํ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
Masterless
- ๋ง์คํฐ๋ฆฌ์ค ์ํคํ ์ฒ๋ก ๊ตฌ์ถ๋ Apache Cassandra๋ ์์ ๊ฐ์ ๋จ์ ์ด ์์
- ๋ฐ์ดํฐ ๋ณต์ ๋ฅผ ๋ด๋นํ๋ ๋จ์ผ ๋ ธ๋๊ฐ ์๊ณ ๋ชจ๋ ๋ ธ๋๊ฐ ๋์ผํจ
- ๋ง ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ๋
ธ๋์ ์๋์ผ๋ก ๋ฐ์ดํฐ ๋ถ์ฐ
- ๋ฐ์ดํฐ๋ ๋ชจ๋ ๋ ธ๋์์ ํฌ๋ช ํ๊ฒ ๋ถํ ๋๋ฏ๋ก ๊ฐ๋ฐ์๋ ๊ด๋ฆฌ์๊ฐ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด ํ๋ก๊ทธ๋๋ฐํ์ง ์์๋ ๋จ
- ๋์ ๋ชจ๋ ๋ ธ๋๊ฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ํ
- ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์๋ ฅ์ด ์ถ๊ฐ๋จ
3.1.2 ํ์ฅ์ฑ ๋ฐ ๊ณ ์ฑ๋ฅ
๊ธฐ์กด ํ๊ฒฝ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ฅ์ ๋๊ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ๋น์ฉ์ด ๋ง์ด ๋๋ ํ๋ก์ธ์ค์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ์ฅ์ ํตํด ์ํ๋ฉ๋๋ค.
- ์์ง ํ์ฅ: ๋จ์ํ ๊ธฐ์กด ๋จธ์ ์ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋์จ์ด ์ฉ๋์ ์ถ๊ฐํด์ ํ์ฅ์ฑ์ ์ป์.
- ์ํ ํ์ฅ: ๋ฐ์ดํฐ ์ ์ฒด๋ ์ผ๋ถ๋ฅผ ๊ฐ๋ ๋จธ์ ์ ์ถ๊ฐํด์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๋จธ์ ์ด ๋๋ ๊ฐ๋ ๋ฐฉ๋ฒ.
- ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ ค๋ฉด ํด๋ฌ์คํฐ์ ์๋ ๋ค๋ฅธ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ ์ ์งํ๋ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ด ํ์ํจ.
๋ฐ๋ฉด Cassandra๋ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด,ํด๋ฌ์คํฐ์ ์ค๋จ ์์ด ์๋ก ์ถ๊ฐ๋ ๋ ธ๋์ ์์ ์ ํ ๋น(๋ก๋ ๋ฐธ๋ฐ์ฑ)ํ์ฌ ์ฉ๋์ ์ ํ์ผ๋ก ๋๋ฆด ์ ์์ต๋๋ค(๋ฌผ๋ก , ๊ท๋ชจ๋ฅผ ์ถ์ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง). ์๋ฅผ ๋ค์ด, 2๊ฐ์ ๋ ธ๋๊ฐ ์ด๋น 100,000๊ฐ์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ 8๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑํ๋ฉด ์ด๋น 400,000๊ฐ์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ ์ โโ์์ต๋๋ค.
3.1.3 ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ๋ด ๊ฒฐํจ์ฑ
๋ชจ๋ Cassandra ๋ ธ๋๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ํํ ์ ์์ผ๋ฏ๋ก ํด๋ฌ์คํฐ ๋ฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ๋ ธ๋๋ก ์๋ ๋ผ์ฐํ ๋ฉ๋๋ค. ๋ํ ํด๋ฌ์คํฐ์์ ์์คํ ์ ์ค๋จํ์ง ์๊ณ ์ฅ์ ๊ฐ ๋ฐ์ํ ๋ ธ๋๋ฅผ ๊ต์ฒดํ ์ ์๊ณ , ๋ค์ค ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด ๋ก์ปฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ผ๋ฉฐ, ํ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ํ์ฌ๋ ํ์ ๊ฐ์ ์น๋ช ์ ์ธ ์ฌ์์ ๋นํ๋๋ผ๋ ๋ค์ค ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํด์ ์๋น์ค ์ค๋จ์ ์๋ฐฉํ ์ ์์ต๋๋ค.
3.1.4 CQL(Cassandra Query Language)
์นด์ฐ๋๋ผ๋ CQL(Cassandra Query Language)๋ฅผ ์ง์ํฉ๋๋ค. SQL๊ณผ ์ ์ฌํ๊ฒ ์๊ธด ์ธ์ด๋ก์ ์นด์ฐ๋๋ผ์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ฝ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. CQL์ ์๋ง์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- ๋จ์ผ ํํฐ์ ๊ธฐ์ค์ผ๋ก atomic compare๊ณผ set semantic ํธ๋์ ์ ์ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ํ์ ๊ณผ ํจ์, ์ง๊ณ๋ฅผ ์ง์ํฉ๋๋ค.
- ๋ก์ปฌ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ง์ํฉ๋๋ค.
3.2 Cassandra ๋จ์
3.2.1 ๋์ ์ง์ ์ฅ๋ฒฝ
- ์นผ๋ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ก์ฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ RDB์๋ ๋ค๋ฅธ ์์ํ ๊ฐ๋ ์ด๋ผ ์ง์ ์ฅ๋ฒฝ์ด ๋์ต๋๋ค.
3.2.2 ๋ฐ์ดํฐ ์ ๋ ฅ ์ ์๋ํ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ ์์๋ ์๋ํํ ์ฒ๋ฆฌ๊ฐ ์ด๋ ต์ต๋๋ค.
- ๋ฐ์ดํฐ์ ๋ํ ๋ฝ์ ์ฌ์ฉํ๋ ค๋ฉด Zookeeper์ ๊ฐ์ ์ ์ฒด ๋ถ์ฐ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํด์ ๋ณ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- Transaction์ ์ง์ํ์ง ์์ ๋ฐ์ดํฐ์ ๋ํ ๋์ ๊ฐฑ์ ์์ฒญ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ฑฐ๋ ์๋ํํ ํธ๋์ญ์ ์ด ํ์ํ ์๋น์ค์์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
3.2.3 ๋ณต์กํ ์กฐ๊ฑด์ ๊ฒ์ ๋ถ๊ฐ
- ๋ง์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์๋น์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ ํ์๋ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Join๊ณผ ๊ฐ์ ๋ณต์กํ ์กฐ๊ฑด์ ๊ฒ์์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ ๋ก์ฐ ํค์ ์นผ๋ผ ๋ ๊ฐ์ง์ ๋ํ ์ธ๋ฑ์ค๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ ๋๋์ด์ง๋ง ๊ฒ์ ์กฐ๊ฑด์ ๋จ์ํ ์๋น์ค์ ์ ํฉํฉ๋๋ค.
- ์ํผ ์นผ๋ผ ๊ตฌ์ฑ(Super Column family)์ ํ์ ์นผ๋ผ์ ๋ํ ์ธ๋ฑ์ฑ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ํค ๊ฐ์ ํตํ ๋ฒ์ ๊ฒ์์ ๋ฐ์ดํฐ ๋ถ์ฐ ๋ฐฉ์์ ์ค๋ํ๋ ์คํํฐ์ ๋(OrderPresservingPartitioner)๋ก ์ค์ ํ์ฌ ํค ๊ฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๋ถ๋ฐฐํ์ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค.
3.2.4 ์ฌ๋ฌ ํํฐ์ ์ ๊ฑธ์น ์์ ์ ์ง์ํ์ง ์์
์นด์ฐ๋๋ผ๋ ์๋๊ฐ ๋๋ฆฌ๊ณ ๊ฐ์ฉ์ฑ์ด ๋์ ๊ธ๋ก๋ฒ ์๋ฉํฑ์ ์ง์ํ์ง ์์ต๋๋ค. ์ฆ, ์ฌ๋ฌ ํํฐ์ ์ ๊ฑธ์น ๋ค์๊ณผ ๊ฐ์ ์์ ๋ค์ ์ง์ํ์ง ์์ต๋๋ค.
- ํํฐ์ ๊ฐ ํธ๋์ญ์
- ๋ถ์ฐ ์กฐ์ธ
- ์ธ๋ถ ํค ๋๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ
์ด ์ธ์๋ RDBMS์ ๊ฐ์ Paging์ ๊ตฌํํ๋ ๊ฒ์ด ํ๋ค๊ณ Keyspace๋ Table ๋ฑ์ ๊ณผ๋ํ๊ฒ ์์ฑํ ๊ฒฝ์ฐ Memory Overflow๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
4. RDB vs Cassandra
RDBMS | Cassandra | |
์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ | ์ ๋นํ ์์ ๋ฐ์ดํฐ ์๋ ์ฒ๋ฆฌ | ๋์ ์์ ๋ฐ์ดํฐ ์๋ ์ฒ๋ฆฌ |
ํธ๋์ญ์ | ๋ณต์กํ๊ณ ์ค์ฒฉ๋ ์ฟผ๋ฆฌ ์ง์ | ๊ฐ๋จํ ์ฟผ๋ฆฌ ์ง์ |
์ฅ์ ์กฐ์น | ์ฅ์ ์กฐ์น๋ฅผ ํตํ ๋จ์ผ ์ฅ์ ์ง์ ๋ฐ์ | ๋จ์ผ ์คํจ ์ง์ ์ด ์๊ณ ์ง์์ ์ธ ๊ฐ๋ ์๊ฐ(Failover) |
๋ฐ์ดํฐ ์ฌ์ด์ฆ | ์ค๊ฐ ๊ท๋ชจ์ ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ง์ | ๋งค์ฐ ๋์ ๋ฐ์ดํฐ ๋ณผ๋ฅจ ์ง์ |
์ค์์ง์ค / ๋ถ์ฐ | ์ค์ ์ง์ค์ | ๋ถ์ฐ ๋ฐฐ์น: ์ฌ๋ฌ ์์น์์ ์์ฑ๋ ๋ฐ์ดํฐ |
ํ์ฅ์ฑ | ์ฝ๊ธฐ ํ์ฅ์ฑ ์ง์ | ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ํ์ฅ์ฑ ์ง์ |
ํ์ฅ ๋ฐฉ์ | ์์ง ํ์ฅ ๋ฐฉ์์ผ๋ก ๋ฐฐํฌ | ์ํ ํ์ฅ ๋ฐฉ์์ผ๋ก ๋ฐฐํฌ |
5. ๋ง๋ฌด๋ฆฌ
- ์ํ์น ์นด์ฐ๋๋ผ๋ ๋ค์ด ํ์ ์์ด ์ง์์ ์ธ ๊ฐ์ฉ์ฑ๊ณผ ๊ณ ์ฑ๋ฅ ๋ฐ ์ ํ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ผํฐ์ ์ง์ญ์ ๊ฑธ์ณ ๋จ์ํ๊ณ ์์ฌ์ด ๋ณต์ , ํํ ๋ฐ์ดํธ ๊ท๋ชจ์ ์ ๋ณด์ ์ด๋น ์์ฒ ๊ฑด์ ๋์ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ ์นด์ฐ๋๋ผ๋ ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ฑ๋ฅ ์ ํ ์์ด ํ์ฅ์ฑ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ด ํ์ํ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋จ์ผ ์ฅ์ ์ง์ ์์ด ๋ง์ ์์ฉ ์๋ฒ์์ ์ง์์ ์ธ ๊ฐ์ฉ์ฑ ๋ฐ ์ด์ ๋จ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ก๊ทธ ๊ตฌ์กฐ ์ ๋ฐ์ดํธ์ ์ฑ๋ฅ, ๋น์ ๊ทํ ๋ฐ ๊ตฌ์ฒดํ๋ ๋ทฐ์ ๋ํ ๊ฐ๋ ฅํ ์ง์ ๋ฐ ๊ฐ๋ ฅํ ๋ด์ฅ ์บ์ฑ์ ํตํด ์ปฌ๋ผ ์ธ๋ฑ์ค์ ํธ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ฐธ๊ณ
- [DB Engines Ranking] Cassandra: https://db-engines.com/en/system/Cassandra
- [Cassandra] Official Docs(Apache Cassandra): https://cassandra.apache.org/doc/latest/cassandra/architecture/overview.html
- [Blog] ์ํ์น ์นด์ฐ๋๋ผ๋?: https://goyunji.tistory.com/95
- [Blog] Apache Cassandra์ ๋ํด ์์๋ณด์: https://baek.dev/post/23/