λ°μ΄ν°λ² μ΄μ€ μμ - λ°μ΄ν°λ² μ΄μ€λ?
λ€μ΄κ°λ©°
λ°μ΄ν°λ² μ΄μ€κ° 무μμ΄κ³ μ΄λ€ νΉμ§μ΄ μλμ§ κ°λ¨ν μμλ³΄κ² μ΅λλ€. μ°μ μ κ° μκ³ μλ λ°μ΄ν°λ² μ΄μ€λ 'λ°μ΄ν°μ μ§ν©μ΄μ μ½κ³ λΉ λ₯΄κ² κ°κ³΅ν μ μλ λ¬Άμ'μ΄λΌκ³ μκ³ μμ΅λλ€. λ³΄ν΅ λ°μ΄ν°λ₯Ό μ½κ² κ΄λ¦¬ν μ μλλ‘ νλ DBMS(DataBase Management System)μ SQL(Structured Query Language)λ₯Ό ν΅ν΄ μνλ λ°μ΄ν°λ₯Ό μμ½κ² μ‘°ννκ±°λ, μ½μ /μμ /μμ ν μ μμ΅λλ€. λ°μ΄ν°λ² μ΄μ€μ λν μ€λͺ μ μ΄λ―Έ μΈν°λ·μ μκΈ° μ½κ² λμ μκΈ° λλ¬Έμ μΆμ²λ₯Ό λ°νκ³ μ€λͺ νκ² μ΅λλ€.
λ°μ΄ν°λ² μ΄μ€λ
λ°μ΄ν°λ² μ΄μ€(Database)λ 체κ³μ μΌλ‘ ꡬ쑰νλ λ°μ΄ν°μ λͺ¨μμ μ μ₯νκ³ κ΄λ¦¬νλ μμ€ν μ λλ€. μ΄λ λ°μ΄ν°μ ν¨μ¨μ μΈ μ μ₯, κ²μ, κ°±μ , μμ λ±μ μ§μνμ¬ μ¬λ¬ μ¬μ©μλ μ¬λ¬ μμ© νλ‘κ·Έλ¨μ΄ λμμ λ°μ΄ν°μ μ κ·Όν μ μκ² ν©λλ€. λ°μ΄ν°λ² μ΄μ€λ λ€μν ννμ μ©λλ‘ μ¬μ©λλ©°, κΈ°μ μ΄λ μ‘°μ§μμ μ€μν λΉμ¦λμ€ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ λ° μ¬μ©λ©λλ€.
μΌλ°μ μΌλ‘ μμ© νλ‘κ·Έλ¨κ³Όλ λ³κ°μ λ―Έλ€μ¨μ΄λ₯Ό ν΅ν΄μ κ΄λ¦¬λ©λλ€. λ°μ΄ν°λ² μ΄μ€ μ체λ§μΌλ‘λ κ±°μ μ무 κ²λ λͺ»νκΈ° λλ¬Έμ κ·Έκ±Έ κ΄λ¦¬νλ μμ€ν κ³Ό ν΅ν©λΌ μ 곡λλ©° λ°λΌμ μ νν λͺ μΉμ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (DBMS)μ΄ λ©λλ€. λ°μ΄ν°λ² μ΄μ€λ§ μ 곡λλ 건 CSVκ°μ΄ μμ£Ό λ¨μν λ°μ΄ν°μ κ΅νλλλ° μ΄κ±Έ μ§μ μ¬μ©νλ κ²½μ°λ λ§μ§ μκ³ μ΄λ° λ°μ΄ν°λ₯Ό RAWλ°μ΄ν°λ‘ κ°μ£Όν΄ λ€λ₯Έ DBMSμμ€ν μ μ μ¬νκ³ μ¬μ©νλ κ² μΌλ°μ μ λλ€.
κ°λ¨ν λΉμ νμλ©΄ λ°μ΄ν°λ² μ΄μ€ μ체λ νλ¬Ό(λ°μ΄ν°)μ μ μ₯ν μ μλ μ°½κ³ κ·Έ μ체μ μν λ§ μννκ³ , νλ¬Όμ μ μ¬νκ±°λ μ μ¬λ νλ¬Όμ μ²λ¦¬ν μ μλ λ₯λ ₯μ μμ΅λλ€. μ΄ λλ¬Έμ DBMSλΌλ κ΄λ¦¬μλ€μ κ³ μ©νμ¬ νλ¬Όμ μ μ¬νκ±°λ μ΄λμν€λ λ± ν¬λ μΈκ³Ό κ°μ μ¬λ¬κ°μ§ μ 무λ₯Ό μννλλ‘ νλ κ²μ λλ€.
λ°μ΄ν°λ² μ΄μ€μ μ£Όμ νΉμ§
1. λ°μ΄ν°μ ꡬ쑰ν: λ°μ΄ν°λ² μ΄μ€λ ꡬ쑰νλ ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ©°, λ°μ΄ν°μ μ νμ λ°λΌ ν
μ΄λΈ, μ΄, ν λ±μ ꡬ쑰λ₯Ό κ°μ§λλ€. μ΄λ λ°μ΄ν°μ μΌκ΄μ±κ³Ό μ νμ±μ μ μ§νλ λ° λμμ΄ λ©λλ€.
2. λ°μ΄ν°μ λ
립μ±: λ°μ΄ν°λ² μ΄μ€λ λ
Όλ¦¬μ λ°μ΄ν° λ
립μ±κ³Ό 물리μ λ°μ΄ν° λ
립μ±μ μ 곡ν©λλ€. λ
Όλ¦¬μ λ°μ΄ν° λ
립μ±μ λ°μ΄ν°μ λ
Όλ¦¬ κ΅¬μ‘°κ° λ³κ²½λμ΄λ μμ© νλ‘κ·Έλ¨μ μν₯μ λ―ΈμΉμ§ μλ κ²μ μλ―Ένλ©°, 물리μ λ°μ΄ν° λ
립μ±μ λ°μ΄ν°μ 물리μ μ μ₯ μμΉκ° λ³κ²½λμ΄λ λ
Όλ¦¬μ ꡬ쑰μ μν₯μ λ―ΈμΉμ§ μλ κ²μ μλ―Έν©λλ€.
3. λ°μ΄ν°μ 무결μ±: λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ 무결μ±μ μ μ§νκΈ° μν΄ μ μ½ μ‘°κ±΄(Constraints)μ μ€μ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ λ°μ΄ν°κ° μΌκ΄μ± μκ³ μ νν μνλ₯Ό μ μ§ν μ μμ΅λλ€.
4. λμμ± μ μ΄: μ¬λ¬ μ¬μ©μλ μμ© νλ‘κ·Έλ¨μ΄ λμμ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μλλ‘ νλλ°, μ΄λ₯Ό μν΄ λμμ± μ μ΄ λ©μ»€λμ¦μ΄ μ μ©λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν° μΌκ΄μ±μ΄ μ μ§λ©λλ€.
5. μμμ±: λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ μ μ₯νκ³ μ μ§νλ μμμ μΈ νΉμ±μ κ°μ§λλ€. μμ€ν
μ΄ μ’
λ£λκ±°λ μ¬μμλμ΄λ λ°μ΄ν°κ° μ μ§λ©λλ€.
λ°μ΄ν°λ² μ΄μ€ μ’ λ₯
1. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ (Relational Database)
- ν
μ΄λΈ ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯νκ³ , ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό μ΄μ©ν΄ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ λ°μ΄ν°λ² μ΄μ€μ
λλ€. κ°μ₯ λνμ μ΄λ©° λ§μ΄ μ°μ΄λ λ°μ΄ν°λ² μ΄μ€ ννμ
λλ€.
- μ°λ¦¬κ° μΉμν μμ
μ²λΌ νκ³Ό μ΄λ‘ ꡬμ±λ λ°μ΄ν° ννκ° λ°λ‘ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ
λλ€.
- λνμ μΈ μλ‘ MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server λ±μ΄ μμ΅λλ€.
2. NoSQL λ°μ΄ν°λ² μ΄μ€
- λΉκ΄κ³ν λ°μ΄ν° λͺ¨λΈμ κΈ°λ°μΌλ‘ νλ λ°μ΄ν°λ² μ΄μ€λ‘, μ€ν€λ§κ° κ³ μ λμ΄ μμ§ μμ μ μ°ν λ°μ΄ν° λͺ¨λΈμ μ§μν©λλ€.
- λ€μν μ νμΌλ‘ λλλ©°, λνμ μΌλ‘ MongoDB, Cassandra, Redis, CouchDB λ±μ΄ μμ΅λλ€.
3. Key-Value μ€ν μ΄
- κ°λ¨ν ν€μ κ°μ μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λ°μ΄ν°λ² μ΄μ€μ
λλ€.
- μλ‘λ Redis, DynamoDB λ±μ΄ μμ΅λλ€.
4. λ¬Έμ μ§ν₯ λ°μ΄ν°λ² μ΄μ€
- λ°μ΄ν°λ₯Ό λ¬Έμ(document) ννλ‘ μ μ₯νλ©°, κ° λ¬Έμλ νλμ κ°μ μμΌλ‘ ꡬμ±λ©λλ€.
- MongoDBκ° λνμ μΈ μμμ
λλ€.
5. κ·Έλν λ°μ΄ν°λ² μ΄μ€
- κ·Έλν μ΄λ‘ μ κΈ°λ°μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ λ°μ΄ν°λ² μ΄μ€λ‘, λ
Έλμ κ°μ μΌλ‘ μ΄λ£¨μ΄μ§ κ·Έλν ꡬ쑰λ₯Ό μ¬μ©ν©λλ€.
- Neo4jκ° κ·Έλν λ°μ΄ν°λ² μ΄μ€μ λνμ μΈ μμμ
λλ€.
6. μκ³μ΄ λ°μ΄ν°λ² μ΄μ€
- μκ°μ λ°λΌ λ³ννλ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μΏΌλ¦¬ν μ μλ λ°μ΄ν°λ² μ΄μ€μ
λλ€.
- InfluxDB, OpenTSDB λ±μ΄ μκ³μ΄ λ°μ΄ν°λ² μ΄μ€μ μμμ
λλ€.
7. λ©λͺ¨λ¦¬ λ°μ΄ν°λ² μ΄μ€
- μ£Όλ‘ λ©λͺ¨λ¦¬μ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ²λ¦¬νλ λ°μ΄ν°λ² μ΄μ€λ‘, λΉ λ₯Έ μλ΅ μκ°μ μ 곡ν©λλ€.
- Redisλ λ©λͺ¨λ¦¬ λ°μ΄ν°λ² μ΄μ€μ λνμ μΈ μμμ
λλ€.
8. λΆμ° λ°μ΄ν°λ² μ΄μ€
- μ¬λ¬ λμ μ»΄ν¨ν°μ λ°μ΄ν°λ₯Ό λΆμ°νμ¬ μ μ₯νκ³ μ²λ¦¬νλ λ°μ΄ν°λ² μ΄μ€μ
λλ€.
- Apache Hadoop, Amazon DynamoDB λ±μ΄ λΆμ° λ°μ΄ν°λ² μ΄μ€μ μν©λλ€.
κ° λ°μ΄ν°λ² μ΄μ€ μ νμ νΉμ ν μ¬μ© μ¬λ‘μ μ ν©νκ³ , λ°μ΄ν° λͺ¨λΈμ΄λ μ±λ₯ λ±μμ κ°κ°μ μ₯λ¨μ μ΄ μμ΅λλ€. μ νν λ°μ΄ν°λ² μ΄μ€λ νλ‘μ νΈμ λͺ©μ κ³Ό μꡬμ¬νμ κ³ λ €νμ¬ κ²°μ ν΄μΌ ν©λλ€.
λ°μ΄ν°λ² μ΄μ€μ 보μ
λ°μ΄ν°λ² μ΄μ€μ 보μμλ 3μμκ° μμ΅λλ€.
- 무결μ±(integrity): λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν λ €λ©΄ μλ£μ μ€λ₯κ° μμ΄μΌ νλ€. μ΅μ΄μ μ€λ₯κ° μλλΌλ μΆκ°,κ°±μ ,μμ λ±μΌλ‘ μ€λ₯κ° λ°μ κ°λ₯νλ°, κΆνμλ§ μλ£λ₯Ό μμ μ΄ κ°λ₯νλλ‘ ν΄μΌ ν©λλ€.
- κ°μ©μ±(availability): κΆνμ κ°μ§ μ¬μ©μκ° λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μλλ‘ νλ κ²μ λ§νλ€. μ¦, κΆνμμ μ κ·Όμ κ±°λΆνλ©΄ μλλ¨ λ»μ΄λ€. κ°μ©μ±μ΄ μμΌλ©΄ κΆνμλ νλ‘κ·Έλ¨μ΄ μλ£μ¬μ©μ΄ λΆκ°ν κ²½μ°κ° λ°μν©λ.
- κΈ°λ°μ±(confidentiality): DBMSκ° κΈ°μ μ μΌλ‘ μΈλΆμνμΌλ‘λΆν° μλ£ κΈ°λ°μ 보νΈν΄μΌ νλ€λ λ»μ΄λ€. κΈ°λ°μ±μ κΆνμλ μ¬μ©μμκ² μλ£λ
ΈμΆμ λ°©μ§νλ κΈ°λ₯μ
λλ€.
SQL (Structured Query Language)
SQLμ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν νμ€νλ μΈμ΄μ
λλ€. SQLμ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό 쿼리νκ³ μ‘°μνλλ° μ¬μ©λλ©°, λ€μν λ°μ΄ν°λ² μ΄μ€ μμ€ν
μμ μ§μλ©λλ€. SQLμ ν¬κ² μΈ κ°μ§ μ£Όμ λΆλΆμΌλ‘ λλ μ μμ΅λλ€:
1. DDL (Data Definition Language)
- λ°μ΄ν° μ μ μΈμ΄λ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰λ₯Ό μ μνκ³ κ΄λ¦¬νκΈ° μν λͺ
λ Ήμ΄λ₯Ό ν¬ν¨ν©λλ€.
- μ£Όμ λͺ
λ Ήμ΄: `CREATE` (ν
μ΄λΈ μμ±), `ALTER` (ν
μ΄λΈ μμ ), `DROP` (ν
μ΄λΈ μμ ) λ±.
CREATE TABLE Students (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT
);
2. DML (Data Manipulation Language)
- λ°μ΄ν° μ‘°μ μΈμ΄λ λ°μ΄ν°λ₯Ό κ²μ, μ½μ
, κ°±μ , μμ νλ λ° μ¬μ©λ©λλ€.
- μ£Όμ λͺ
λ Ήμ΄: `SELECT` (λ°μ΄ν° μ‘°ν), `INSERT` (λ°μ΄ν° μ½μ
), `UPDATE` (λ°μ΄ν° κ°±μ ), `DELETE` (λ°μ΄ν° μμ ) λ±.
-- λ°μ΄ν° μ‘°ν
SELECT * FROM Students;
-- λ°μ΄ν° μ½μ
INSERT INTO Students (ID, Name, Age) VALUES (1, 'John Doe', 25);
-- λ°μ΄ν° κ°±μ
UPDATE Students SET Age = 26 WHERE ID = 1;
-- λ°μ΄ν° μμ
DELETE FROM Students WHERE ID = 1;
3. DCL (Data Control Language)
- λ°μ΄ν° μ μ΄ μΈμ΄λ λ°μ΄ν°λ² μ΄μ€μ λν μ‘μΈμ€ κΆνμ κ΄λ¦¬νλ λ° μ¬μ©λ©λλ€.
- μ£Όμ λͺ
λ Ήμ΄: `GRANT` (κΆν λΆμ¬), `REVOKE` (κΆν μ·¨μ) λ±.
-- κΆν λΆμ¬
GRANT SELECT, INSERT ON Students TO user1;
-- κΆν μ·¨μ
REVOKE INSERT ON Students FROM user1;
SQL 쿼리λ λμλ¬Έμλ₯Ό κ°λ¦¬μ§ μμ΅λλ€. μ¦, `SELECT`μ `select`λ λμΌν μλ―Έμ
λλ€. SQLμ λ§€μ° μ§κ΄μ μ΄λ©° κ°λ ₯ν μΈμ΄λ‘, λ°μ΄ν°λ² μ΄μ€λ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νκ³ μ‘°μνλ λ° μ¬μ©λ©λλ€. SQLμ μ¬μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€μμ μνλ μ 보λ₯Ό μΆμΆνκ±°λ λ°μ΄ν°λ₯Ό μ‘°μνλ λ± λ€μν μμ
μ μνν μ μμ΅λλ€.
μΆμ²: λ무μν€, μ€λΌν΄, OpenAI