데이터베이스란?
종류와 설계·인덱스 기본
데이터를 안전하게 저장·조회하고 일관성을 지키는 시스템입니다.
데이터베이스은 무엇인가요?
데이터베이스는 애플리케이션의 데이터를 정해진 구조로 저장하고 여러 요청이 안전하게 읽고 변경하도록 관리하는 시스템입니다.
제품에 맞는 모델과 제약을 먼저 설계하고, 실제 조회 패턴에 맞춰 인덱스를 추가해야 합니다. 종류보다 데이터의 관계와 일관성 요구가 선택의 출발점입니다.
먼저 이해할 핵심 개념
도구 이름보다 각 요소가 맡는 책임과 서로 연결되는 방식을 먼저 이해하는 것이 좋습니다.
스키마
필드, 타입, 관계와 반드시 지켜야 할 제약을 정의합니다.
인덱스
읽기를 빠르게 하지만 저장 공간과 쓰기 비용을 추가합니다.
트랜잭션
여러 변경을 하나의 작업처럼 성공하거나 실패하게 만듭니다.
복제와 백업
장애 대응과 삭제·오염 복구는 서로 다른 준비가 필요합니다.
실무에서 함께 쓰는 기술
한 제품을 완성할 때는 한 가지 도구가 아니라 역할이 다른 여러 기술을 조합합니다.
관계형
PostgreSQL·MySQL·SQLite
문서형
MongoDB·Document databases
키·값·캐시
Redis·Key-value stores
검색·분석
OpenSearch·ClickHouse·Data warehouse
실무에서는 이렇게 진행합니다
- 01
접근 패턴
어떤 데이터를 함께 읽고 어떤 단위로 변경할지 적습니다.
- 02
모델과 제약
중복과 관계, 고유성, 삭제 규칙을 스키마에 담습니다.
- 03
쿼리 검증
실제 데이터 양으로 실행 계획과 인덱스를 확인합니다.
- 04
운영 준비
마이그레이션, 모니터링, 백업과 복원 훈련을 마련합니다.
선택하고 구현할 때 확인할 것
- 01데이터 관계와 일관성 수준이 명확한가
- 02제약을 애플리케이션 코드에만 맡기지 않았는가
- 03인덱스가 실제 쿼리 순서와 맞는가
- 04스키마 변경을 되돌릴 절차가 있는가
- 05백업 파일을 실제로 복원해 보았는가
자주 묻는 질문
NoSQL은 스키마가 없나요?
고정 테이블이 없을 수는 있지만 데이터 형태와 검증 규칙은 존재합니다. 스키마를 없애는 것이 아니라 적용 위치와 유연성이 달라집니다.
인덱스는 많을수록 좋은가요?
아닙니다. 조회는 빨라질 수 있지만 쓰기와 저장 비용이 늘고 사용되지 않는 인덱스도 생기므로 쿼리 근거로 추가해야 합니다.