데이터베이스(Database)란?
데이터베이스는 데이터를 체계적으로 저장하고 관리하며, 효율적으로 검색할 수 있도록 구성된 시스템입니다. 클라우드 시대에는 Amazon RDS, Aurora, DynamoDB 같은 관리형 데이터베이스로 운영됩니다.
주요 용어 정리
용어 | 설명 |
---|
DBMS | 데이터베이스를 관리하는 소프트웨어 (MySQL, PostgreSQL 등) |
Table | 데이터를 저장하는 구조화된 공간 |
Row / Column | 각각 하나의 데이터 레코드 / 속성 |
Primary Key | 각 행을 유일하게 식별하는 열 |
Query | SQL로 작성한 데이터 조작 명령 |
관계형 vs 비관계형 데이터베이스
관계형 데이터베이스 (RDBMS)
- 정형화된 스키마, 테이블 기반 저장
- SQL 사용, ACID 보장
- ERP, 금융, 전통 시스템에 적합
1
| SELECT * FROM users WHERE email = 'test@example.com';
|
NoSQL (비관계형)
- JSON, 키-값, 그래프 등 다양한 구조
- 유연한 스키마, 수평 확장 용이
- MongoDB, DynamoDB, Redis 등
유형 | 예시 |
---|
키-값 | Redis |
문서형 | MongoDB |
컬럼형 | Cassandra |
그래프형 | Neo4j |
RDBMS vs NoSQL 비교
항목 | RDBMS | NoSQL |
---|
스키마 | 정형 | 유연 |
확장 | 수직 확장 | 수평 확장 |
트랜잭션 | ACID 보장 | 대부분 Eventually Consistent |
적합 사례 | 정형 데이터 | 로그, IoT, 이벤트 처리 |
클라우드 DB 운영 방식
Managed DB (RDS, Aurora)
- 백업, 패치, 장애 복구 등 자동화
- 고가용성 구성 가능 (Multi-AZ)
- 성능 지표, 모니터링, 보안 설정 포함
Serverless DB (DynamoDB, Aurora Serverless)
- 트래픽에 따라 자동 확장/축소
- 사용량 기반 과금
- 이벤트 기반 아키텍처에 적합
SQL 기본 문법
1
2
3
4
5
6
7
8
| -- 조회
SELECT * FROM users;
-- 삽입
INSERT INTO users (name) VALUES ('Alice');
-- 수정
UPDATE users SET name = 'Bob' WHERE id = 1;
-- 삭제
DELETE FROM users WHERE id = 1;
|
스키마 & 관계 설계
- 스키마는 데이터베이스의 구조 설계도
- 엔티티(테이블), 속성, 관계로 구성
- 1:1, 1:N, N:M 관계 고려하여 설계
1
2
3
4
| CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT REFERENCES users(id)
);
|
데이터 무결성과 제약조건
제약조건 | 설명 |
---|
PRIMARY KEY | 고유 식별자 |
FOREIGN KEY | 참조 무결성 보장 |
UNIQUE | 중복 불가 |
NOT NULL | NULL 금지 |
CHECK | 값 조건 제한 |
DEFAULT | 기본값 지정 |
무결성: 데이터가 정확하고 일관되도록 유지하는 원칙
트랜잭션과 동시성 제어
트랜잭션(ACID)
명령어
1
2
3
4
| BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
|
격리 수준
수준 | 설명 |
---|
READ UNCOMMITTED | Dirty Read 허용 |
READ COMMITTED | 커밋된 데이터만 읽음 |
REPEATABLE READ | 반복 읽기 보장 |
SERIALIZABLE | 가장 높은 고립 수준 |
동시성 제어: Lock 사용, 격리 수준 조절
인덱스와 성능 최적화
인덱스란?
- WHERE 조건, JOIN, ORDER BY 속도 향상을 위한 구조
- 책의 목차처럼 원하는 데이터만 빠르게 탐색
인덱스 유형
유형 | 설명 |
---|
B-Tree | 기본 인덱스 구조 |
UNIQUE | 중복 방지 |
복합 인덱스 | 여러 컬럼 묶음 |
Full-text | 자연어 검색용 |
Hash | 키 기반 탐색 |
생성 예시
1
| CREATE INDEX idx_email ON users(email);
|
EXPLAIN으로 실행 계획 확인
ERD와 실습 예시
users
, products
, orders
, order_items
테이블 구성- N:M 관계 → 조인 테이블 사용
1
2
3
4
5
| CREATE TABLE order_items (
id SERIAL PRIMARY KEY,
order_id INT REFERENCES orders(id),
product_id INT REFERENCES products(id)
);
|
보안 및 접근 제어
- VPC, 서브넷, 보안 그룹으로 네트워크 제한
- IAM 역할 기반 권한 설정
- 저장 시 KMS 암호화 / 전송 시 TLS
- CloudTrail, Enhanced Monitoring 로깅
AWS RDS 개요 및 실습
RDS란?
- 완전 관리형 관계형 DB 서비스
- MySQL, PostgreSQL, Oracle 등 지원
주요 기능
기능 | 설명 |
---|
자동 백업 | 복구 가능 (PITR 지원) |
멀티 AZ | 고가용성 구성 |
Read Replica | 읽기 부하 분산 |
모니터링 | CloudWatch 연동 |
실습 흐름
- RDS 인스턴스 생성 (MySQL)
- 보안 그룹 포트 열기 (3306)
- DB 연결 (MySQL Workbench)
- SQL 실습, 모니터링, 백업 확인
정리
항목 | 핵심 개념 |
---|
데이터 모델 | RDBMS vs NoSQL 비교 |
SQL 실무 | SELECT, JOIN, GROUP BY 등 익히기 |
무결성 | PK/FK/NOT NULL 등 제약조건 이해 |
트랜잭션 | ACID, COMMIT/ROLLBACK 실습 |
인덱스 | 쿼리 성능 개선, EXPLAIN 분석 |
보안 | IAM, KMS, TLS 적용 |
RDS 실습 | 생성 → 연결 → 실습 → 모니터링 |