[취업을 위한 CS 지식] 34강. 데이터베이스의 큰 그림
- 데이터베이스(DB)는 원하는 기능을 동작시키기 위해 저장해야 하는 정보의 집합이며, DBMS는 이를 관리하는 프로그램입니다. 🗄️
- DBMS는 관계형 데이터베이스(RDBMS)와 NoSQL 데이터베이스로 크게 나뉘며, RDBMS가 오늘날 가장 대중적으로 사용됩니다. 📊
- 개발자들은 주로 MySQL, MariaDB와 같은 RDBMS를 다루며, DBMS는 응용 프로그램과 클라이언트-서버 통신을 통해 상호작용합니다. 💻
- DBMS에 보내는 요청을 쿼리(Query)라고 하며, RDBMS에서는 SQL(Structured Query Language)을 표준 언어로 사용합니다. 💬
- SQL은 데이터 정의(DDL), 조작(DML), 제어(DCL), 트랜잭션 제어(TCL)의 네 가지 주요 유형으로 나뉩니다. 🛠️
- 파일 대신 데이터베이스를 사용하는 이유는 데이터 일관성/무결성, 중복 저장 방지, 연관 데이터 변경 용이성, 정교한 검색, 백업/복구의 이점 때문입니다. ✅
- 데이터베이스는 독립적인 객체인 엔티티(Entity)와 그 특성인 속성(Attribute)을 기반으로 데이터를 저장합니다. 🧩
- RDBMS는 엔티티 집합을 테이블(릴레이션) 형태로, 개별 엔티티를 레코드(행)로, 속성 값을 필드(열)로 표현합니다. 📝
- NoSQL은 엔티티 집합을 컬렉션으로, 개별 엔티티를 JSON 형태의 도큐먼트로 표현하며, RDBMS보다 유연한 구조를 가집니다. 📜
- 스키마(Schema)는 데이터베이스 레코드의 구조와 제약 조건을 정의하며, RDBMS는 명확한 스키마를, NoSQL은 스키마리스(Schema-less) 특징을 가집니다. 🏗️
- 트랜잭션(Transaction)은 데이터베이스와의 논리적 상호작용 단위로, 여러 쿼리를 포함할 수 있으며, TPS(초당 트랜잭션)로 성능을 측정합니다. 🔄
- 트랜잭션은 반드시 ACID(원자성, 일관성, 격리성, 지속성) 속성을 지켜야 합니다. 🛡️
- 원자성(Atomicity)은 트랜잭션의 모든 작업이 성공하거나 모두 실패해야 함을 의미하며, 커밋(Commit)과 롤백(Rollback)으로 관리됩니다. ⚛️
- 일관성(Consistency)은 트랜잭션 전후 데이터베이스가 정의된 규칙과 제약 조건을 항상 유지해야 함을 뜻합니다. ⚖️
- 격리성(Isolation)은 동시 실행되는 트랜잭션들이 서로 간섭하지 않고 독립적으로 실행되는 것처럼 보이게 합니다. 🔒
- 지속성(Durability)은 트랜잭션이 성공적으로 완료(커밋)되면 그 결과가 영구적으로 저장되어 시스템 장애에도 보존됨을 보장합니다. 💾