πΎ [CS] Databaseλ?
λ°μ΄ν°λ² μ΄μ€(Database) λ λ°μ΄ν°λ₯Ό ꡬ쑰μ μ΄κ³ 체κ³μ μΌλ‘ μ μ₯νκ³ κ΄λ¦¬νλ μμ€ν
μ
λλ€.
λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ₯Ό μ½κ² μ μ₯νκ³ , κ²μνκ³ , μμ νκ³ , μμ ν μ μλλ‘ μ€κ³λ μννΈμ¨μ΄ μμ€ν
μ
λλ€.
μ£Όλ‘ λ€μμ μ¬μ©μ λλ μ ν리μΌμ΄μ
μ΄ λμμ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μλλ‘ μ§μν©λλ€.
1οΈβ£ λ°μ΄ν°λ² μ΄μ€μ μ£Όμ νΉμ§.
1. λ°μ΄ν° μ μ₯.
- λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ₯Ό ν μ΄λΈ νμμΌλ‘ ꡬ쑰ννμ¬ μ μ₯ν©λλ€.
- ν μ΄λΈμ ν(row), μ΄(column)λ‘ κ΅¬μ±λλ©°, κ° νμ λ°μ΄ν°μ ν λ μ½λλ₯Ό λνλ΄κ³ , μ΄μ λ°μ΄ν°μ μμ±μ λνλ λλ€.
2. λ°μ΄ν° κ΄λ¦¬.
- λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ₯Ό μ½μ
, μμ , μμ , κ²μνλ κΈ°λ₯μ μ 곡ν©λλ€.
- μ΄ κ³Όμ μμ λ°μ΄ν°μ μΌκ΄μ±, 무결μ±, 보μμ΄ λ³΄μ₯λλλ‘ κ΄λ¦¬λ©λλ€.
3. λ°μ΄ν° 무결μ±
- λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ μ νμ±κ³Ό μΌκ΄μ± μ μ μ§νκΈ° μν λ€μν κ·μΉκ³Ό μ μ½ μ‘°κ±΄μ μ§μν©λλ€.
- μλ₯Ό λ€μ΄, μ€λ³΅λμ§ μλ λ°μ΄ν°λ₯Ό 보μ₯νκ±°λ, μΈλΆ ν μ΄λΈκ³Όμ μ°Έμ‘° κ΄κ³λ₯Ό μ μ§ν μ μμ΅λλ€.
4. λμμ± μ μ΄.
- μ¬λ¬ μ¬μ©μκ° λμμ λ°μ΄ν°μ μ κ·Όν λ, λ°μ΄ν°λ² μ΄μ€λ λμμ± μ μ΄ κΈ°λ₯μ ν΅ν΄ μ¬λ¬ μ¬μ©μκ° λ°μ΄ν°λ₯Ό μμ νκ² μ½κ³ μΈ μ μλλ‘ ν©λλ€.
5. λ°μ΄ν° 보μ.
- λ°μ΄ν°λ² μ΄μ€λ μ¬μ©μκ° νΉμ λ°μ΄ν°μ μ κ·Όνκ±°λ μμ ν μ μλ κΆνμ μ€μ νμ¬ λ°μ΄ν°λ₯Ό 보νΈν©λλ€.
- μ΄λ₯Ό ν΅ν΄ λ―Όκ°ν μ 보λ νκ°λ μ¬μ©μλ§ μ κ·Όν μ μλλ‘ ν μ μμ΅λλ€.
6. λ°±μ λ° λ³΅κ΅¬.
- λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν° μμ€μ λ°©μ§νκΈ° μν΄ λ°±μ λ° λ³΅κ΅¬ κΈ°λ₯μ μ§μν©λλ€.
- μμ€ν μ₯μ λ μ€λ₯κ° λ°μνλλΌλ λ°μ΄ν°κ° 볡ꡬλ μ μλλ‘ μ€κ³λ©λλ€.
2οΈβ£ λ°μ΄ν°λ² μ΄μ€μ μ’ λ₯.
1. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(Relational Database, RDBMS)
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ₯Ό ν
μ΄λΈ ννλ‘ μ μ₯νλ©°, ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό μ€μ ν μ μλ λ°μ΄ν°λ² μ΄μ€μ
λλ€.
κ° ν
μ΄λΈμ κ³ μ ν Primary Key(κΈ°λ³Έ ν€) λ₯Ό ν΅ν΄ λ€λ₯Έ ν
μ΄λΈκ³Ό μ°κ²°λ©λλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμλ SQL(Structured Query Language) λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
- μμ: MySQL, PostgreSQL, Oracle, Microsoft SQL Server, SQLite λ±
- νΉμ§
- λ°μ΄ν°λ₯Ό ν μ΄λΈ ννλ‘ μ μ₯νλ©°, ν(row) κ³Ό μ΄(cloumn) λ‘ κ΅¬μ±λ©λλ€.
- SQLμ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ‘°ννκ³ μ‘°μν©λλ€.
- λ°μ΄ν° 무결μ±μ 보μ₯νκΈ° μν μ μ½ μ‘°κ±΄(Primary Key, Foreign Key λ±)μ μ§μν©λλ€.
- μμ:
CREATE TABLE User ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) UNIQUE ); INSERT INTO Users (id, name, email) VALUES (1, 'Kobe', 'kobe@example.com'); SELECT * FROM Users;
2. NoSQL λ°μ΄ν°λ² μ΄μ€ (Not Only SQL)
NoSQL λ°μ΄ν°λ² μ΄μ€λ λΉμ ν λ°μ΄ν° λλ λ°μ ν λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ ν©ν λ°μ΄ν°λ² μ΄μ€λ‘, μ μ°ν μ€ν€λ§μ νμ₯μ±μ κ°μ‘°ν©λλ€.
NoSQL λ°μ΄ν°λ² μ΄μ€λ λ€μν μ νμ λ°μ΄ν° λͺ¨λΈ(λ¬Έμ, ν€-κ° κ·Έλν λ±)μ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€.
- μμ: MongoDB, Cassandra, Redis, Couchbase, Neo4j λ±
- νΉμ§
- λΉμ ν λ°μ΄ν°λ λκ·λͺ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° μ ν©ν©λλ€.
- λ°μ΄ν° μ€ν€λ§κ° κ³ μ λμ§ μμ μ μ°ν λ°μ΄ν° ꡬ쑰λ₯Ό μ§μν©λλ€.
- κ³ μ μ½κΈ°/μ°κΈ°μ λμ νμ₯μ±μ μ 곡ν©λλ€.
-
λ¬Έμν λ°μ΄ν°λ² μ΄μ€(MongoDB μμ)
{ "_id": 1, "name": "Kobe", "email": "kobe@example.com" }
-
ν€-κ° λ°μ΄ν°λ² μ΄μ€ (Redis μμ)
SET "name" "Kobe" GET "name"
3. ν΄λΌμ°λ λ°μ΄ν°λ² μ΄μ€
ν΄λΌμ°λ λ°μ΄ν°λ² μ΄μ€λ ν΄λΌμ°λ νκ²½μμ νΈμ€ν λλ λ°μ΄ν°λ² μ΄μ€λ‘, μ¬μ©μκ° μ§μ νλμ¨μ΄λ₯Ό κ΄λ¦¬ν νμ μμ΄ ν΄λΌμ°λ μλΉμ€ μ 곡μκ° λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬ν©λλ€.
ν΄λΌμ°λ λ°μ΄ν°λ² μ΄μ€λ νμμ λ°λΌ μμμ νμ₯ν μ μκ³ , λμ κ°μ©μ±κ³Ό μλ λ°±μ λ±μ μ₯μ μ μ 곡ν©λλ€.
- μμ: Amazon RDS, Google Clould SQL, Microsoft Azure SQL Database, MongoDB Atlas λ±
4. κ·Έλν λ°μ΄ν°λ² μ΄μ€
κ·Έλν λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν° κ°μ κ΄κ³λ₯Ό λ
ΈνΈ(Node)μ μ£μ§(Edge)λ‘ νννμ¬ μ μ₯νλ λ°μ΄ν°λ² μ΄μ€μ
λλ€.
볡μ‘ν κ΄κ³λ₯Ό ν¨μ¨μ μΌλ‘ νννκ³ νμν μ μκΈ° λλ¬Έμ, μμ
λ€νΈμν¬, μΆμ² μμ€ν
λ±μμ μμ£Ό μ¬μ©λ©λλ€.
- μμ: Neo4j, ArangoDB, Amazon Neptune
- νΉμ§
- λ°μ΄ν°λ₯Ό κ·Έλν κ΅¬μ‘°λ‘ νννμ¬ λ³΅μ‘ν κ΄κ³λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν©λλ€.
- λ°μ΄ν° κ°μ κ΄κ³λ₯Ό μ€μ μ μΌλ‘ μ²λ¦¬νλ λ° μ 리ν©λλ€.
3οΈβ£ λ°μ΄ν°λ² μ΄μ€μ κΈ°λ³Έ κ°λ .
1. ν μ΄λΈ(Table)
- κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό μ μ₯νλ κΈ°λ³Έ λ¨μμ λλ€.
- ν μ΄λΈμ ν(row)κ³Ό μ΄(column)λ‘ κ΅¬μ±λλ©°, κ° νμ κ°λ³ λ°μ΄ν° λ μ½λλ₯Ό λνλ΄κ³ , μ΄μ λ°μ΄ν°μ μμ±μ λνλ λλ€.
2. μ΄(Column)
- ν
μ΄λΈμμ κ° μ΄μ λ°μ΄ν°λ₯Ό μ€λͺ
νλ μμ±μ
λλ€.
- μλ₯Ό λ€μ΄, μ¬μ©μ ν μ΄λΈμμ μ΄μ μ΄λ¦(name), μ΄λ©μΌ(email) κ°μ μμ±μΌ μ μμ΅λλ€.
3. ν(Row)
- ν
μ΄λΈμμ κ° νμ λ°μ΄ν°μ ν λ μ½λ(μΈμ€ν΄μ€)λ₯Ό λνλ
λλ€.
- μλ₯Ό λ€μ΄, μ¬μ©μ ν μ΄λΈμμ νμ κ°λ³ μ¬μ©μ μ 보λ₯Ό λνλ λλ€.
4. κΈ°λ³Έ ν€(Primary Key)
- ν μ΄λΈμμ κ° νμ κ³ μ νκ² μλ³ν μ μλ κ°μ λλ€.
- Primary Keyλ ν μ΄λΈμμ μ€λ³΅λμ§ μλ κ°μ κ°μ ΈμΌ νλ©°, κ° λ μ½λκ° κ³ μ νκ² κ΅¬λΆλ μ μλλ‘ ν©λλ€.
5. μΈλ ν€(Foreign Key)
- ν μ΄λΈ κ°μ κ΄κ³λ₯Ό μ μν λ μ¬μ©λλ ν€μ λλ€.
- ν ν μ΄λΈμ μ΄μ΄ λ€λ₯Έ ν μ΄λΈμ κΈ°λ³Έ ν€λ₯Ό μ°Έμ‘°νλ λ°©μμΌλ‘ λ ν μ΄λΈμ μ°κ²°ν©λλ€.
6. SQL(Structured Query Language)
- κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό μ μ₯, μ‘°ν, μμ , μμ νκΈ° μν΄ μ¬μ©νλ νμ€ μΈμ΄μ λλ€.
- SQLμ μ¬μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€μ λͺ λ Ήμ μ λ¬νμ¬ μνλ μμ μ μνν μ μμ΅λλ€.
SQLμ μ£Όμ λͺ λ Ήμ΄
- SELECT: λ°μ΄ν°λ₯Ό μ‘°νν©λλ€.
SELECT * FROM Users;
- INSERT: λ°μ΄ν°λ₯Ό μ½μ ν©λλ€.
INSERT INTO Users (name, email) VALUES ('Kobe', 'kobe@example.com');
- UPDATE: λ°μ΄ν°λ₯Ό μμ ν©λλ€.
UPDATE Users SET email = 'new_email@example.com' WHERE id = 1;
- DELETE: λ°μ΄ν°λ₯Ό μμ ν©λλ€.
DELETE FROM Users WHERE id = 1;
4οΈβ£ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (DBMS)
DBMS(Database Management System) λ λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬νκ³ , λ°μ΄ν°μ μ μ₯, μμ , μμ , κ²μμ μ§μνλ μννΈμ¨μ΄ μμ€ν μ λλ€.
DBMSλ λ°μ΄ν°μ 무결μ±, 보μ, λμμ± μ μ΄λ₯Ό 보μ₯νκ³ , λ€μμ μ¬μ©μκ° ν¨μ¨μ μΌλ‘ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν μ μλλ‘ λμμ€λλ€.
DBMSμ μν .
1. λ°μ΄ν° μ μ₯ λ° κ΄λ¦¬.
- λ°μ΄ν°λ₯Ό 체κ³μ μΌλ‘ μ μ₯νκ³ , κ΄λ¦¬νλ©°, νμν λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² κ²μν μ μμ΅λλ€.
2. λ°μ΄ν° λ¬΄κ²°μ± λ³΄μ₯.
- λ°μ΄ν°μ μ νμ±κ³Ό μΌκ΄μ±μ μ μ§ν©λλ€.
- μ€λ³΅ λ°μ΄ν° λ°©μ§, μΈλ ν€ μ μ½ λ±μ μ¬μ©νμ¬ λ°μ΄ν°μ 무결μ±μ 보μ₯ν©λλ€.
3. 보μ κ΄λ¦¬.
- μ¬μ©μλ³λ‘ μ κ·Ό κΆνμ λΆμ¬νκ³ , λ°μ΄ν° μ κ·Όμ μ μ΄ν©λλ€.
4. λμμ± μ μ΄.
- μ¬λ¬ μ¬μ©μκ° λμμ λ°μ΄ν°μ μ κ·Όν λ, λ°μ΄ν°μ μΌκ΄μ±μ μ μ§νλ©΄μ λμμ±μ κ΄λ¦¬ν©λλ€.
5. νΈλμμ κ΄λ¦¬.
- νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λ λλ§ λ°μ΄ν°λ₯Ό λ°μνκ³ , μ€ν¨ν κ²½μ° λ°μ΄ν°λ₯Ό μλ μνλ‘ λ³΅κ΅¬ν©λλ€.
5οΈβ£ λ°μ΄ν°λ² μ΄μ€μ νμ© μ¬λ‘.
1. μΉ μ ν리μΌμ΄μ .
- μ¬μ©μ μ 보, μ ν μ 보, κ²μκΈ λ±μ μ μ₯νλ λ° μ¬μ©ν©λλ€.
- μλ₯Ό λ€μ΄, μ μμκ±°λ μ¬μ΄νΈμμ μν μ 보μ μ£Όλ¬Έ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ΄λ¦¬ν©λλ€.
2. μν μμ€ν .
- κΈμ΅ κ±°λ λ°μ΄ν°λ₯Ό μμ νκ² μ μ₯νκ³ κ΄λ¦¬νλ©°, νΈλμμ μ ν΅ν΄ μ νμ±μ 보μ₯ν©λλ€.
3. λ³μ μ 보 μμ€ν .
- νμ μ 보, μ§λ£ κΈ°λ‘, μ²λ°©μ μ μ μ₯νκ³ κ΄λ¦¬νλ λ° μ¬μ©λ©λλ€.
4. μμ λ€νΈμν¬.
μ¬μ©μ κ°μ κ΄κ³λ₯Ό μ μ₯νκ³ , λ΄μ€νΌλ, λ©μμ§ λ±μ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
6οΈβ£ μμ½.
- λ°μ΄ν°λ² μ΄μ€(Database) λ λ°μ΄ν°λ₯Ό 체κ³μ μΌλ‘ μ μ₯νκ³ κ΄λ¦¬νλ μμ€ν μ λλ€.
- λ°μ΄ν°λ₯Ό μ μ₯νκ³ , κ²μνκ³ , μμ νκ³ , μμ νλ κΈ°λ₯μ μ 곡νλ©°, μ£Όλ‘ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(RDBMS)μ NoSQL λ°μ΄ν°λ² μ΄μ€λ‘ ꡬλΆλ©λλ€.
- λ°μ΄ν°λ² μ΄μ€λ ν¨μ¨μ μΈ λ°μ΄ν° κ΄λ¦¬, λ°μ΄ν° 무결μ±, λμμ± μ μ΄, 보μ λ±μ κΈ°λ₯μ μ 곡νλ©°, λ€μν μ ν리μΌμ΄μ μμ ν΅μ¬μ μΌλ‘ μ¬μ©λ©λλ€.