데이터베이스
데이터베이스가 데이터를 담고 찾고 지키는 원리와, 종류별 대표 오픈 소스·클라우드 서비스가 그 원리를 어떻게 다르게 구현했는지 정리했다.
원리
어떻게 담고, 찾고, 동시에 고치고, 여러 대로 늘리나
- 관계형 모델과 트랜잭션표로 데이터를 담고 SQL로 묻는 방법, 겹침 없이 나누는 정규화, 여러 변경을 한 덩어리로 다루는 트랜잭션과 ACID다.관계형 모델 · 키와 제약 조건 · 관계 대수 · 선언형 SQL · 조인의 종류 · NULL과 3값 논리 · 함수 종속 · 정규화 · 트랜잭션 · ACID · 비정규화
- 저장 엔진의 내부데이터베이스가 디스크에 데이터를 담는 방식이다. 페이지와 버퍼 풀, B+트리, 먼저 적어 두는 로그(WAL), 쓰기에 강한 LSM 트리를 다룬다.페이지와 버퍼 풀 · B+ 트리 · WAL · LSM 트리 · 슬롯 페이지 · 체크포인트 · ARIES 복구 · compaction · 쓰기·읽기·공간 증폭
- 인덱스와 쿼리 실행SQL 한 줄이 실행 계획이 되어 돌기까지의 과정이다. 인덱스, 옵티마이저의 비용 계산, 조인 알고리즘을 다룬다.인덱스 · 옵티마이저 · 조인 알고리즘 · EXPLAIN · 반복자 모델 · 커버링 인덱스 · 복합 인덱스 · 선택도 · 통계와 히스토그램 · N+1 질의
- 동시성과 격리 수준여러 트랜잭션이 동시에 같은 데이터를 만질 때 생기는 일과, 락·MVCC로 막는 방법, 격리 수준마다 허용하는 이상 현상이다.락 · MVCC · 격리 수준 · 이상 현상 · 2단계 잠금 · 교착 · 스냅숏 격리 · SSI · PostgreSQL·MySQL 기본값 · 낙관적·비관적 잠금
- 복제·샤딩·합의데이터베이스를 여러 대로 늘리는 방법이다. 복제로 버티고, 샤딩으로 나누고, Raft 같은 합의로 한 목소리를 낸다.복제 · 샤딩 · Raft · CAP·PACELC · 복제 지연과 장애 조치 · 다중 리더 복제 · 정족수 · 일관된 해싱 · 2단계 커밋
종류별 오픈 소스
데이터 모양과 질문에 따라 갈라진 데이터베이스들과 대표 엔진의 내부 구조
- 관계형: PostgreSQL·MySQL·SQLite가장 널리 쓰는 오픈 소스 관계형 데이터베이스 세 가지가 같은 SQL을 서로 다른 내부 구조로 처리하는 방식이다.PostgreSQL · MySQL InnoDB · SQLite · 프로세스·스레드 모델 · 힙과 MVCC 튜플 · VACUUM · WAL과 스트리밍 복제 · 확장 · 클러스터드 인덱스 · undo·redo·binlog · 롤백 저널과 WAL 모드
- 키-값: Redis·RocksDB·etcd키로 값을 바로 찾는 단순한 모델이다. 메모리 캐시, 임베디드 저장 엔진, 합의 기반 설정 저장소로 쓰임새가 갈린다.Redis · RocksDB · etcd · 단일 스레드 이벤트 루프 · RDB·AOF · Redis Cluster 해시 슬롯 · 축출 정책 · Valkey · Column family · compaction 방식 · MVCC revision과 watch
- 문서·와이드 컬럼: MongoDB·Cassandra스키마가 유연한 문서 데이터베이스와, 여러 노드에 쓰기를 퍼뜨리는 와이드 컬럼 데이터베이스의 내부 구조다.MongoDB · Cassandra · ScyllaDB · BSON · WiredTiger · 레플리카 세트와 oplog · write·read concern · 샤딩과 청크 · 토큰 링과 vnode · 툼스톤과 repair · 조절 가능한 일관성 · shard-per-core
- 분석·검색: ClickHouse·DuckDB·Elasticsearch많은 행을 훑어 집계하는 컬럼형 분석 엔진과, 글에서 낱말을 찾는 역색인 검색 엔진이다.열 저장 · 벡터화 실행 · ClickHouse MergeTree · DuckDB · Elasticsearch·OpenSearch · OLTP와 OLAP · 희소 기본 인덱스 · 역색인과 분석기 · 세그먼트·refresh · 샤드와 레플리카 · BM25
- 시계열·그래프·벡터시간 순 지표, 관계 그 자체, 임베딩의 가까움처럼 특정한 질문에 맞춘 데이터베이스들이다.시계열 · Prometheus TSDB · 그래프 · 벡터 검색 · Gorilla 압축 · TimescaleDB · InfluxDB 3 · 속성 그래프와 Cypher · 인덱스 없는 인접 · 임베딩과 유사도 · IVF · HNSW · 필터링
클라우드 서비스
클라우드가 직접 만든 데이터베이스는 무엇을 다르게 설계했나