1. κ°λ
μ 리
π€ Database
μ»΄ν¨ν° μμ€ν
μ μ μ λ°©μμΌλ‘ μ μ₯λ ꡬ쑰νλ μ 보 λλ λ°μ΄ν°μ 체κ³μ μΈ μ§ν©
π€ DBMS(DataBase Management System)
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ μ, μμ±, μ μ§νλ νλ‘κ·Έλ¨λ€μ μ§ν©
π€ RDB(Relational DataBase)
ν
μ΄λΈ, ν, μ΄μ μ 보λ₯Ό 2μ°¨μ ν
μ΄λΈ ννλ‘ κ΅¬μ‘°ννλ λ°©μ.
- ν
μ΄λΈμ
Join
ν΄ μ 보 κ° κ΄κ³ λλ λ§ν¬λ₯Ό μ€μ ν μ μλ κΈ°λ₯μ΄ μλ€. μ¬λ¬ λ°μ΄ν° ν¬μΈνΈ κ°μ κ΄κ³λ₯Ό μ½κ² μ΄ν΄νκ³ μ 보λ₯Ό μ»μ μ μλ€.
- λΉμ¦λμ€μμ λ°μ΄ν°λ₯Ό ꡬμ±, κ΄λ¦¬, μ°κ²°νλ λ° λμμ΄ λλ μ€νλ λμνΈ νμΌ λͺ¨μμ΄λΌκ³ μκ°νλ©΄ λλ€.
π€ SQL(Strucured Query Language)
RDBMS
μ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν΄ μ€κ³λ νΉμ λͺ©μ νλ‘κ·Έλλ° μΈμ΄.
RDBMS
μμ
- μλ£μ κ²μκ³Ό κ΄λ¦¬,
- λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§ μμ±κ³Ό μμ ,
- λ°μ΄ν°λ² μ΄μ€ κ°μ²΄ μ κ·Ό μ‘°μ κ΄λ¦¬
λ₯Ό μν΄ κ³ μλμλ€.
π€ κ΄κ³(R)(Relational)
ν
μ΄λΈ κ°μ μνΈμμ©μ κΈ°λ°μΌλ‘ μ€μ λλ μ¬λ¬ ν
μ΄λΈ κ°μ λ
Όλ¦¬μ μ°κ²°
2. RDBMS πΎ
R
+ DBMS
: κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν
SQL
μ μν΄ μ μ₯λκ³ μμΌλ©° μ ν΄μ§ μ€ν€λ§μ λ°λΌ λ°μ΄ν°λ₯Ό μ μ₯ν΄μΌ νλ€.
- ν
μ΄λΈμ΄ λ€λ₯Έ ν
μ΄λΈλ€κ³Ό κ΄κ³λ₯Ό λ§Ίκ³ λͺ¨μ¬μλ μ§ν©μ²΄λ‘ μ΄ν΄ν μ μλ€.
- μ΄λ¬ν κ΄κ³λ₯Ό λνλ΄κΈ° μν΄ μΈλ ν€(
foreign key
)λΌλ κ²μ μ¬μ©νλ€.
- μΈλ ν€λ₯Ό μ΄μ©ν ν
μ΄λΈ κ°
Join
μ΄ κ°λ₯νλ€.
μμ
MySQL
, PostgreSQL
λ±
π μ₯μ
λ°μ΄ν° μΌκ΄μ±μ μ§ν¬ μ μλ€!
- μ ν΄μ§ μ€ν€λ§μ λ°λΌ λ°μ΄ν°λ₯Ό μ μ₯νμ¬μΌ νλ―λ‘ λͺ
νν λ°μ΄ν° ꡬ쑰λ₯Ό 보μ₯νκ³ μλ€.
- κ° λ°μ΄ν°λ₯Ό μ€λ³΅μμ΄ ν λ²λ§ μ μ₯ν μ μλ€.
π λ¨μ
- μμ€ν
μ΄ μ»€μ§ κ²½μ°
JOIN
λ¬Έμ΄ λ§μ 볡μ‘ν μΏΌλ¦¬κ° λ§λ€μ΄μ§ μ μλ€.
- μ±λ₯μ ν₯μμν€κΈ° μν΄μλ μ₯λΉκ° μ’μμΌ νλ€. (
Scale-Up
: μλ² κ·Έ μ체λ₯Ό μ
κ·Έλ μ΄λ ν¨) λΉμ©μ΄ κΈ°νκΈμμ μΌλ‘ μ¦κ°νλ€.
- μ€ν€λ§ λλ¬Έμ μ μ°ν λ°μ΄ν° κ΄λ¦¬κ° μ΄λ ΅λ€. μ€ν€λ§κ° λ³κ²½λ μ λ²κ±°λ‘λ€.
3. NoSQL(Not Only SQL) πΎ
μμμ μ€λͺ
ν RDBMS
κ° μλ, λ€λ₯Έ ννμ λ°μ΄ν° μ μ₯ κΈ°μ μ μλ―Ένλ€.
RDBMS
μλ λ¬λ¦¬ ν
μ΄λΈ κ° κ΄κ³λ₯Ό μ μνμ§ μλλ€!
- λ°μ΄ν° ν
μ΄λΈμ κ·Έλ₯ νλμ ν
μ΄λΈμΌ λΏμ΄λ€.
- ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό μ μνμ§ μμ μΌλ°μ μΌλ‘ ν
μ΄λΈ κ°
Join
λ λΆκ°λ₯νλ€.
μμ
MongoDB
, Redis
λ±
π μ¬μ© λͺ©μ
λΉ
λ°μ΄ν°κ° λ±μ₯νλ©΄μ, μ μ λ°μ΄ν°μ νΈλν½μ΄ κΈ°νκΈμμ μΌλ‘ μ¦κ°νλ μν©μμ κ³ μλμλ€.
π μ₯μ
μ μ°μ±
- μ€ν€λ§κ° μμ΄ μ μ°νκ³ μμ λ‘μ΄ λ°μ΄ν° ꡬ쑰λ₯Ό κ°μ§ μ μλ€. μΈμ λ μ μ₯λ λ°μ΄ν°λ₯Ό μ‘°μ νκ³ μλ‘μ΄ νλλ₯Ό μΆκ°ν μ μλ€.
- λ°μ΄ν° λΆμ°μ΄ μ©μ΄νλ€. μνμ νμ₯(
Scale-Out
: μλ² κ°μλ₯Ό λλ¦Ό)μ μ½κ² ν μ μλ€. λ°λΌμ λΉμ©μ΄ μ κ² λ λ€.
π λ¨μ
λ°μ΄ν° μΌκ΄μ±μ΄ μ§μΌμ§μ§ μλλ€.
- λ°μ΄ν° μ€λ³΅μ΄ λ°μνκ³ , ν΄λΉ λ°μ΄ν°κ° λ³κ²½λ μ λͺ¨λ 컬λ μ
μμ μμ ν΄μΌ νλ€.
- μ€ν€λ§κ° μμΌλ λͺ
νν λ°μ΄ν° ꡬ쑰λ₯Ό 보μ₯νμ§ μλλ€. λ°μ΄ν° ꡬ쑰 κ²°μ μμ²΄κ° μ΄λ ΅λ€.
π§· μ’
λ₯
Key-Value Database
Redis
, Riak
, Amazon Dynamo DB
λ±μ΄ μλ€.
λ°μ΄ν°κ° Key
μ Value
μ μμΌλ‘ μ μ₯λλ€.
Key
λ Value
μ μ κ·ΌνκΈ° μν μ©λλ‘ μ¬μ©λλ©°, κ°μ μ΄λ ν ννμ λ°μ΄ν°λΌλ λ΄μ μ μλ€. μ¬μ§μ΄λ μ΄λ―Έμ§λ λΉλμ€λ κ°λ₯νλ€.
- κ²μμ μ΅μ νλμ΄ μλ€. μ§μμ μλκ° λ§€μ° λΉ λ₯΄λ€.
Document Database
MongoDB
, CouchDB
λ±μ΄ μλ€.
λ°μ΄ν°κ° Key
μ Document
μ ννλ‘ μ μ₯λλ€.
Key-Value
λͺ¨λΈκ³Ό λ¬λ¦¬ Value
κ° κ³μΈ΅μ μΈ ννμΈ Document
λ‘ μ μ₯λλ€. κ°μ²΄μ§ν₯μμμ κ°μ²΄μ μ μ¬νλ©°, μ΄λ€μ νλμ λ¨μλ‘ μ·¨κΈλμ΄ μ μ₯λλ€. μ¦, νλμ κ°μ²΄λ₯Ό μ¬λ¬ κ°μ
ν
μ΄λΈμ λλ μ μ₯ν νμκ° μμ΄μ§λ€.
- κ°μ²΄-κ΄κ³ 맀νμ΄ νμνμ§ μλ€. κ°μ²΄λ₯Ό
Document
μ ννλ‘ λ°λ‘ μ μ₯ κ°λ₯νκΈ° λλ¬Έμ΄λ€.
- κ²μμ μ΅μ νλμ΄ μλ€.
Key-Value
λͺ¨λΈμ νΉμ§κ³Ό λμΌνλ€.
λ¨μ
- μ¬μ©μ΄ λ²κ±°λ‘κ³ μΏΌλ¦¬κ° SQLκ³Όλ λ€λ₯΄λ€.
- λνλ¨ΌνΈ λͺ¨λΈμμλ μ§μμ κ²°κ³Όκ°
JSON
μ΄λ xml
ννλ‘ μΆλ ₯λκΈ° λλ¬Έμ κ·Έ μ¬μ© λ°©λ²μ΄ RDBMS
μμμ μ§μ κ²°κ³Όλ₯Ό μ¬μ©νλ λ°©λ²κ³Ό λ€λ₯΄λ€.
Wide Column Database
HBase
, Hypertable
λ±μ΄ μλ€.
Column-family Model
κΈ°λ°μ Database
.
- νΉμ΄νκ²λ μ΄ λͺ¨λΈμ ν€μμ νλλ₯Ό κ²°μ νλ€.
- ν€λ
Row
(ν€ κ°)μ Column-family
, Column-name
μ κ°μ§λ€. μ°κ΄λ λ°μ΄ν°λ€μ κ°μ Column-family
μμ μν΄ μμΌλ©°, κ°μμ Column-name
μ κ°μ§λ€.
κ΄κ³ν λͺ¨λΈλ‘ μ€λͺ
νμλ©΄ μμ±μ΄ κ³μΈ΅μ μΈ κ΅¬μ‘°λ₯Ό κ°μ§κ³ μλ μ
μ΄λ€.
- μ μ₯λ λ°μ΄ν°λ νλμ 컀λ€λ ν
μ΄λΈλ‘ ννμ΄ κ°λ₯νλ©°, μ§μλ
Row
, Column-family
, Column-name
μ ν΅ν΄ μνλλ€.
Graph Database
λ°μ΄ν°λ₯Ό Node
μ Edge
, Property
μ ν¨κ» κ·Έλν ꡬ쑰λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό νννκ³ μ μ₯νλ Database
.
- κ°μ²΄μ κ΄κ³λ₯Ό κ·Έλν ννλ‘ ννν κ²μ΄λ―λ‘ κ΄κ³ν λͺ¨λΈμ΄λΌκ³ ν μ μλ€.
- λ°μ΄ν° κ°μ κ΄κ³κ° νμμ ν€μΌ κ²½μ°μ μ ν©νλ€.
- νμ΄μ€λΆμ΄λ νΈμν° κ°μ μμ
λ€νΈμν¬μμ(λ΄ μΉκ΅¬μ μΉκ΅¬λ₯Ό μ°Ύλ μ§μ λ±) μ ν©νκ³ , μ°κ΄λ λ°μ΄ν°λ₯Ό μΆμ²ν΄μ£Όλ μΆμ² μμ§μ΄λ ν¨ν΄ μΈμ λ±μ λ°μ΄ν°λ² μ΄μ€λ‘λ μ ν©νλ€.
4. μΈμ μ°μ§? π§
πΎ RDBMS
- λ°μ΄ν° κ΅¬μ‘°κ° λͺ
ννλ©° λ³κ²½ λ μ¬μ§κ° μμΌλ©° λͺ
νν μ€ν€λ§κ° μ€μν κ²½μ° μ¬μ©νλ κ²μ΄ μ’λ€.
- λν μ€λ³΅λ λ°μ΄ν°κ° μμ΄(λ°μ΄ν° 무결μ±) λ³κ²½μ΄ μ©μ΄νκΈ° λλ¬Έμ κ΄κ³λ₯Ό λ§Ίκ³ μλ λ°μ΄ν°κ° μμ£Ό λ³κ²½μ΄ μ΄λ£¨μ΄μ§λ μμ€ν
μ μ ν©νλ€.
πΎ NoSQL
- μ νν λ°μ΄ν° ꡬ쑰λ₯Ό μ μ μκ³ λ°μ΄ν°κ° λ³κ²½/νμ₯μ΄ λ μ μλ κ²½μ°μ μ¬μ©νλ κ²μ΄ μ’λ€.
- μμ μ΄ λ³λ‘ μλ μμ€ν
μ΄ μ’λ€. λ°μ΄ν° μ€λ³΅μ΄ λ°μν μ μμΌλ©° μ€λ³΅λ λ°μ΄ν°κ° λ³κ²½λ μμλ λͺ¨λ 컬λ μ
μμ μμ μ ν΄μΌ νκΈ° λλ¬Έμ΄λ€.
Scale-out
μ΄ κ°λ₯νλ―λ‘ λ§λν λ°μ΄ν°λ₯Ό μ μ₯ν΄μΌ νλ μμ€ν
μ μ ν©νλ€.
μ°Έκ³ μλ£
https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/
https://cloud.google.com/learn/what-is-a-relational-database?hl=ko#:~:text=κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν
https://khj93.tistory.com/entry/Database-RDBMSμ-NOSQL-μ°¨μ΄μ