λ°μ΄ν°λ² μ΄μ€κ° μ‘΄μ¬νκΈ° μ΄μ μλ νμΌ μμ€ν
μ μ΄μ©ν΄μ λ°μ΄ν°λ₯Ό κ΄λ¦¬νμλ€. νμ§λ§ νμΌμ κ΅¬μ‘°κ° μμ© νλ‘κ·Έλ¨μ λ°μλμ΄ μκΈ° λλ¬Έμ λ°μ΄ν°λ νλ‘κ·Έλ¨ μ€ νλκ° λ°λλ©΄ λ€λ₯Έ νλλ μμ ν΄μΌ νλ λ²κ±°λ‘μμ΄ μμλ€. λ νλ‘κ·Έλ¨λ§λ€ λ³λμ νμΌλ‘ κ΄λ¦¬ν΄μΌ νκΈ° λλ¬Έμ λ°μ΄ν°κ° μ€λ³΅λκ±°λ, νλμ νμΌμ μ¬λ¬ κ°μ μμ©νλ‘κ·Έλ¨μ΄ μ κ·Όνμ¬ μ¬μ©ν μκ° μμλ€. μ΄λ νλ‘κ·Έλ¨μ κ°λ°νκ±°λ μ μ§λ³΄μλ₯Ό ν λ λ¬Έμ κ° λμλ€.
κ·Έλ¬λ€κ° μ μ₯ν λ°μ΄ν°λ₯Ό μμ±νκ±°λ μμ , μμ , κ΄λ¦¬νκΈ° νΈνκ² νκ³ , νκ°λ μ¬μ©μλ λμμ μ μλ κ°λ₯νκ³ , 무μ보λ€λ λ°μ΄ν°κ° νλ‘κ·Έλ¨μ μ’
μμ μ΄μ§ μκ³ νλ‘κ·Έλ¨μ΄ μ’
λ£λλλΌλ μ¬λΌμ§μ§ μκ² ν μλ μμκΉ ν΄μ λ§λ€μ΄μ§ κ²μ΄ λ°μ΄ν°λ² μ΄μ€μ΄λ€.
λ°μ΄ν°λ² μ΄μ€(Database)λ μ¬λ¬ μ¬μ©μλ€μ΄ 곡μ νκ³ μ¬μ©ν λͺ©μ μΌλ‘ νμΌ ννλ‘ ν©μ΄μ Έ μλ λ°μ΄ν°λ€μ νλλ‘ λͺ¨μμ ν΅ν© κ΄λ¦¬λλ λ°μ΄ν°μ μ§ν©μ΄λ€. κ·Έλ¦¬κ³ μ΄ μ¬μ©μλ€μ΄ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μλλ‘ λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬νλ μννΈμ¨μ΄λ₯Ό DBMS(Database Management System)λΌκ³ νλ€.
DBμ νΉμ§
νμΌ μμ€ν μ νκ³λ₯Ό 극볡νκΈ° μν΄ λ§λ€μ΄μ§ κ²μΈλ§νΌ, λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ λ 립μ±, 무결μ±, 보μμ±, μ€λ³΅ μ΅μνλ₯Ό μ μ§νλ€λ νΉμ§μ κ°μ§κ³ μλ€.
λ°μ΄ν°μ λ
립μ±μ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰μ λ³νλ λ°μ΄ν°μ μ μ₯ μμΉ λ±μ΄ λ³ν΄λ μμ© νλ‘κ·Έλ¨μλ μλ¬΄λ° μν₯μ λ―ΈμΉμ§ μμμΌ νλ€λ κ²μ΄λ€. μ¦, νμΌμ μ κ·Όνλ λ°©μμ΄ μμ©νλ‘κ·Έλ¨ λ΄μ ννλμλ νμΌμμ€ν
κ³Όλ λ¬λ¦¬ μμ©νλ‘κ·Έλ¨μ΄ λ°μ΄ν°μ μ’
μλμ§ μλ κ²μ΄λ€.
λ°μ΄ν°μ 무결μ±μ λ°μ΄ν°μ μ€λ³΅μ΄λ λλ½μ΄ μκ³ , μμΈκ³Ό κ²°κ³Όμ μλ―Έκ° μ°μμ μΌλ‘ μΌκ΄μ μΈ μνλ₯Ό λ§νλ€.
λ°μ΄ν°μ 보μμ±μ νκ°λ μ¬μ©μλ§μ΄ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μλλ‘ νλ κ²μ΄κ³ , νμΌ μμ€ν
μ λ¬Έμ μλ κ² μ€ νλμΈ λ°μ΄ν°μ μ€λ³΅μ μ΅μνν μ μλ€.
DBμ μ’ λ₯
λ°μ΄ν°λ² μ΄μ€λ λ€μν μ’ λ₯κ° μλλ°, μ μΌ ννκ² μ¬μ©λλ λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(Relational Database, RDBMS)μ΄λ€. Oracle, MySQL, MariaDBλ±μ΄ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ€. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ ν μ΄λΈ(table)λ‘ λ°μ΄ν°λ₯Ό μ μ₯νκ³ , μλ€μνΌ ν μ΄λΈμ νλ μ΄μμ μ΄(column)κ³Ό ν(row)μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€. ν μ΄λΈμλ λͺ¨λ λ°μ΄ν°κ° κ° λ μ½λλ₯Ό λνν μ μλ κ³ μ κ°μΈ PK(Primary Key, κ³ μ ν€)κ° μ‘΄μ¬νλ€. μ°λ¦¬μ μ£Όλ―Όλ±λ‘λ²νΈλ λν νλ²λ PKλΌκ³ ν μ μλ€. μ΄ PKκ°μ μ°Έμ‘°ν΄μ λ€λ₯Έ ν μ΄λΈκ³Ό μλ‘ μ°κ²°ν μλ μλ€.
NoSQL(Non-relational SQL) λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ³΄λ€ λ μ νμ μ΄κ³ , keyμ valueκ° ννλ‘ μ μ₯νκ³ , keyλ₯Ό μ¬μ©ν΄ λ°μ΄ν° κ΄λ¦¬ λ° μ κ·Όμ νλ€.
κ³μΈ΅ν λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ κ΄κ³λ₯Ό νΈλ¦¬ κ΅¬μ‘°λ‘ μ μνκ³ , λΆλͺ¨/μμ ννλ₯Ό κ°λ ꡬ쑰μ΄λ€. νμ΄μ λ§νλ©΄ μμμ λ μ½λκ° λ³΅μμ νμ λ μ½λλ₯Ό κ°λ ꡬ쑰μ΄λ€. νμ§λ§ μ΄ λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°κ° μ€λ³΅λ μλ μλ€λ λ¨μ μ΄ μλ€.
λ€νΈμν¬ν λ°μ΄ν°λ² μ΄μ€λ κ³μΈ΅ν λ°μ΄ν°μ λ°μ΄ν° μ€λ³΅ λ¬Έμ λ₯Ό ν΄κ²°νκ³ , λ μ½λ κ°μ λ€μν κ΄κ³λ₯Ό λ€νΈμν¬κ°μ΄ κ·Έλ¬Ό ννλ‘ κ°λ ꡬ쑰μ΄λ€. νμ§λ§ 볡μ‘ν ꡬ쑰 λλ¬Έμ μΆνμ ꡬ쑰λ₯Ό λ³κ²½νλ€λ©΄ λ§μ μ΄λ €μμ΄ λ°λ₯Έλ€.
κ·Έ μΈμλ λ€μν λ°μ΄ν°λ² μ΄μ€κ° μλ€. κ·Έλν λ°μ΄ν°λ² μ΄μ€(Graph DB)λ κ΄κ³μ λ°©ν₯μ λνλΌ μ μκ³ , Document λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ³΄λ€ μ’ λ μμ λ‘κ³ μ κ·ν μμ΄ μ°κ³ λΆμ°μ²λ¦¬λ₯Ό μν΄μ€λ€. νμ§λ§ μ€λ³΅μ μμ μ§ μκΈ° λλ¬Έμ μ€λ₯κ° μ’ λ§κ³ λ°μ΄ν°λ² μ΄μ€κ° μΌκ΄μ±μ΄ λ¨μ΄μ§λ€λ λ¨μ μ΄ μλ€. Column-family λ°μ΄ν°λ² μ΄μ€λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ²λΌ table νμμΈλ° λ μμ λ‘λ€. λμ λ§μ°¬κ°μ§λ‘ μ€λ³΅μ²λ¦¬λ₯Ό νμ§ μμμ 볡μ μ λΆμ°μ μν΄μ£Όμ§λ§ λ°μ΄ν°μ μΌκ΄μ±μ΄ λΆμ‘±νλ€. Search Engineμ index 보κ΄μ νΉνλ DBMSμ΄λ€. μ€μκ° κ²μμ΄ μ°κ΄ κ²μμ΄ κ°μ λΉ λ₯Έ κ²μμ μ΅μ ν λμ΄μλ€.
λ°μ΄ν°λ² μ΄μ€λ μ’ λ₯κ° λ€μν΄μ μν©κ³Ό λͺ©μ μ λ§κ² μ¬λ°λ₯Έ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ νν μ μμ΄μΌ νλ€. μ€μ λ‘ μκ΅μμ κ±°μ 16,000건μ μ½λ‘λ μ¬λ‘κ° λ³΄κ³ λμ§ μμ μΌμ΄ μμλλ°, κ·Έ μ΄μ λ νμ§μ μ κ΄λ¦¬λ₯Ό 맑μ μμ΄μ μκ° μ μ DBMSλ₯Ό μ°μ§ μκ³ μμ μ μ¬μ©ν΄μμλ€. μμ μ λμ μ κ·Όμ΄ μλκ³ μ²λ¦¬ν μ μλ λ μ½λ μμ νκ³κ° μκΈ° λλ¬Έμ DBMSλ‘ λ³΄μ§λ μμ§λ§, λ°μ΄ν°μ μμ κ³ λ €νμ¬ μ ν©ν DBMSλ₯Ό μ ννλ€λ©΄ λ°μνμ§ μμ λ¬Έμ μλ€.
RDBMSμμ μ°λ μΈμ΄ SQL
RDBMSμμ, μ¦ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬νκ³ μ¬μ©ν λ μ¬μ©νλ μΈμ΄λ₯Ό SQL(Structured Query Language, ꡬ쑰μ μ§μ μΈμ΄)μ΄λΌκ³ νλ€. SQLμ κΈ°λ³Έμ μΌλ‘ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ§λ§, μ’ λ₯μ λ°λΌ λλ λ°μ΄ν°λ² μ΄μ€λ νλλͺ μ λν΄μλ λμλ¬Έμλ₯Ό ꡬλΆνκΈ°λ νλ€. SQL λͺ λ Ήμ λ°λμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλκ³ , κ³ μ κ°μ λ°μ΄ν(“)λ‘ κ°μΈμ€μΌ νλ€.
SQLμ λ°μ΄ν°λ₯Ό μ μ΄νλ DCL (Data Control Language)κ³Ό λ°μ΄ν°λ₯Ό μ μνλ DDL (Data Definition Language), κ·Έλ¦¬κ³ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ₯Ό μ‘°μνλ DML (Data Manipulation Language) μ΄ μλ€. DCLμλ grant(κΆν μ£ΌκΈ°), revoke(κΆν λ°ν), commit(νμ€ν μ€ν), rollback(μ볡) λ±μ΄ μκ³ , DDLμλ create, alter, drop, truncate λ±μ΄ μκ³ , DMLμλ select, insert, update, delete λ±μ΄ μλ€.
μ°μ μ μΌ λ¨Όμ ν΄μΌ νλ κ²μ λ°μ΄ν°λ² μ΄μ€ μμ±νκ³ μ¬μ©νλ κ²μ΄λ€. create database DBμ΄λ¦; μΌλ‘ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμ±ν΄μ£Όκ³ , use DBμ΄λ¦; λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλλ‘ ν΄μ€λ€.
κ·Έλ¦¬κ³ μ΄μ ν
μ΄λΈμ λ§λ€μ΄μΌ νλλ°, ν
μ΄λΈμ μμ±ν λλ create λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ λ§λ€μ΄μ£Όκ³ , κ·Έ μμλ μ΄μ΄λ¦κ³Ό λ°μ΄ν°νμ
, nullνμ©μ¬λΆ κ·Έλ¦¬κ³ κΈ°ν μμ±μ΄ μμΌλ©΄ μ°¨λ‘λ‘ μ
λ ₯ν΄μ£Όλ©΄ λλ€. λ§μ½ μ΄μ μ΄λ¦μ΄λ μμ±μ λ³κ²½νκ³ μΆλ€λ©΄ alter λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄ λ³κ²½νκ±°λ, drop λͺ
λ Ήμ΄λ‘ ν
μ΄λΈ μ체λ₯Ό μμ΄λ€κ° λ€μ λ§λ€ μλ μλ€.
ν
μ΄λΈμ λ§λ€μμΌλ©΄ μ΄μ ν
μ΄λΈ μμ λ°μ΄ν°λ₯Ό μ
λ ₯ν΄μ£Όλ©΄ λλλ°, λ°μ΄ν° μ
λ ₯μ insert into ν
μ΄λΈ μ΄λ¦ values (λ°μ΄ν°); λ‘ λ£μ΄μ£Όκ³ , μ
λ ₯ν λ°μ΄ν°λ₯Ό μμ νκ³ μΆλ€λ©΄ delete from ν
μ΄λΈμ΄λ¦ where PKκ°; μ μ¬μ©ν΄μ£Όλ©΄ λλ€.
PKλ Primary Key(κ³ μ ν€)λ‘, ν
μ΄λΈ νμ μ¬λ¬ μ λ³΄λ€ μ€μ νμ μλ³νκ³ λνν μ μλ κ°μ΄λ€. κ·Έλ κΈ° λλ¬Έμ λΉμ΄ μμ΄λ μ λκ³ μ€λ³΅λμ΄μλ μλλ€. PKλ₯Ό λ€λ₯Έ ν
μ΄λΈμ μ°Έμ‘°ν΄μ μ¬μ©ν μλ μλλ°, μ΄λ μ°Έμ‘° ν
μ΄λΈμμ μ°Έμ‘°λλ κ°μ FK(Foreign Key, μΈλν€)λΌκ³ νλ€. PKκ°μ μ¬μ©ν΄μΌ μνλ λ°μ΄ν°κ° λ± νλλ§ μμ λκΈ° λλ¬Έμ PKκ°μ μ¬μ©νλ κ²μ΄ μ’λ€. μ
λ ₯ν λ°μ΄ν°λ₯Ό μμ νκ³ μΆλ€λ©΄ update ν
μ΄λΈμ΄λ¦ set μμ νκ³ μΆμμ΄μ΄λ¦='μμ νλ°μ΄ν°' where μμ νκ³ μΆμμ΄μ΄λ¦='μμ μ λ°μ΄ν°'; λ‘ μμ ν μ μλ€.
λ§μ§λ§μΌλ‘ ν
μ΄λΈμμ λ°μ΄ν°λ₯Ό κ°μ Έμμ μ½λ λ²μ select λͺ
λ Ήμ΄λ₯Ό μ¬μ©νλ€ μνλ λ°μ΄ν°λ€μ μμ£Ό μ¬μ©νλ€λ©΄ viewλ₯Ό λ§λ€μ΄μ λ νΈνκ² λ°μ΄ν°λ₯Ό λΆλ¬μ¬ μλ μκ³ , joinμ ν΅ν΄ λ§μ λ°μ΄ν°λ€μ μ°κ΄ν΄μ λΆλ¬μ¬ μ μλ€.
SQLλ¬Έμ λ°μ΄ν°λ² μ΄μ€λ§λ€ μ‘°κΈμ© λ€λ₯΄λ€. νμ§λ§ νμ€ SQLμ κ°κΈ° λλ¬Έμ νλλ₯Ό μ΅νλλ©΄ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€μμλ λ¬Έλ² λ€λ₯Έ κ²λ§ μ£Όμν΄μ μ¬μ©νλ©΄ μ΄λ ΅μ§ μκ² μ¬μ©ν μ μλ€.