데이터 전처리: 데이터 소스 및 저장소 – 데이터베이스(PostgreSQL
ㅁ 데이터 소스 및 저장소
ㅇ 정의:
다양한 형태의 데이터를 저장하고 관리하는 시스템 또는 위치를 의미하며, 관계형 데이터베이스, NoSQL, 파일 스토리지, 데이터 웨어하우스 등이 포함됨.
ㅇ 특징:
데이터의 구조화 여부, 접근 방식, 확장성, 보안성 등에 따라 유형이 구분됨.
ㅇ 적합한 경우:
데이터의 특성과 활용 목적에 따라 적절한 저장소를 선택해야 함.
ㅇ 시험 함정:
데이터 저장소의 유형과 특징을 혼동하거나, 특정 기술의 장단점을 잘못 연결하는 경우가 많음.
ㅇ 시험 대비 “패턴 보기” 예시:
O: 관계형 데이터베이스는 스키마 기반으로 데이터를 저장한다.
X: NoSQL 데이터베이스는 항상 트랜잭션을 지원한다.
================================
1. 데이터베이스(PostgreSQL)
ㅇ 정의:
PostgreSQL은 객체-관계형 데이터베이스 관리 시스템(ORDBMS)으로, 오픈소스이며 SQL 표준을 준수하고 확장성이 뛰어난 데이터베이스.
ㅇ 특징:
– ACID 트랜잭션 지원
– JSON, XML 등 비정형 데이터 타입 지원
– 사용자 정의 함수, 확장 모듈 지원
– 강력한 쿼리 최적화 기능과 복잡한 쿼리 처리 가능
ㅇ 적합한 경우:
– 복잡한 관계형 데이터 모델을 사용하는 경우
– 데이터 무결성과 트랜잭션 안정성이 중요한 경우
– 확장성과 다양한 데이터 타입 지원이 필요한 경우
ㅇ 시험 함정:
– PostgreSQL을 단순히 관계형 DB로만 인식하고 객체지향적 기능 지원을 간과하는 경우
– MySQL과 PostgreSQL의 기능 차이를 혼동하는 경우
ㅇ 시험 대비 “패턴 보기” 예시:
O: PostgreSQL은 ACID 트랜잭션을 지원한다.
X: PostgreSQL은 JSON 데이터를 저장할 수 없다.
ㅁ 추가 학습 내용
PostgreSQL 학습 정리
1. 아키텍처
– 백엔드 프로세스 구조: 클라이언트 연결 시 세션별 백엔드 프로세스가 생성되며, 공유 메모리와 백그라운드 프로세스(Autovacuum, Checkpointer, WAL Writer 등)가 함께 동작한다.
– WAL(Write-Ahead Logging) 메커니즘: 모든 변경 내용을 먼저 WAL 로그에 기록한 후 디스크에 반영하여 데이터 무결성과 장애 복구를 보장한다.
2. 인덱스 종류와 사용 사례
– B-Tree: 기본 인덱스, 범위 검색과 정렬에 효율적.
– Hash: 동등 비교(=)에 특화, 범위 검색에는 부적합.
– GIN: 다중 값 컬럼(배열, JSONB, Full-text search)에 유리.
– GiST: 공간 데이터, 유사 검색 등에 활용.
3. 파티셔닝과 샤딩
– 파티셔닝: 하나의 테이블을 조건에 따라 여러 물리적 파티션으로 나누어 관리, 성능 및 관리 효율 향상.
– 샤딩: 데이터를 여러 데이터베이스 서버에 분산 저장, 대규모 데이터 처리와 확장성 확보.
4. 복제와 장애 조치
– Streaming Replication: 마스터 서버의 WAL 로그를 실시간으로 전송하여 슬레이브 서버에 적용.
– Failover: 마스터 장애 시 슬레이브를 마스터로 승격하여 서비스 지속.
5. 성능 튜닝 기법
– 쿼리 플랜 분석: EXPLAIN, EXPLAIN ANALYZE를 통해 실행 계획 확인 및 최적화.
– VACUUM/ANALYZE: 불필요한 튜플 정리와 통계 정보 갱신으로 쿼리 성능 유지.
6. PostgreSQL과 다른 RDBMS 비교
– MySQL, Oracle과 비교 시 SQL 표준 준수 수준이 높으며, 고급 기능(CTE, 윈도우 함수, JSON 처리 등) 지원이 풍부.
– 오픈소스 라이선스: PostgreSQL License는 매우 자유로운 BSD 계열 라이선스로, 소스 수정 및 재배포에 제약이 적다.