티스토리 뷰
*데이터 베이스 관련 알아두면 좋은 것!*
*계속 내용 고도화 필요....*
1. RAID (Redundant Array of Independent Disks)
- 여러 개의 하드디스크를 하나처럼 묶어서 사용하는 방식
- 목적: 속도 향상 또는 데이터 안전성 확보
내용 정리 (대표적인 RAID 종류)
RAID | 특징 | 장점 | 단점 |
RAID 0 | 스트라이핑 (데이터 분산 저장) | 빠른 속도 | 장애 시 복구 불가 |
RAID 1 | 미러링 (복제 저장) | 높은 안정성 | 저장 공간 절반 사용 |
RAID 5 | 스트라이핑 + 패리티 (오류 복구 정보) | 효율+안정성 | 느린 쓰기 |
RAID 10 | RAID 1 + RAID 0 | 속도+안정성 | 많은 디스크 필요 |
심화 이해
- RAID는 하드웨어 방식(전용 장비 사용)과 소프트웨어 방식(OS 기반)이 있음
- 패리티란? 데이터 오류를 검출하고 복구하기 위한 체크 정보
- 사용 용도: 서버, 데이터센터, NAS 등
2. Transaction Isolation (트랜잭션 격리 수준)
- DB에서 여러 사용자가 동시에 작업할 때 데이터 일관성을 유지하기 위한 기능
- 격리 수준이 낮을수록 속도 빠름, 높을수록 정확성 ↑
내용 정리
수준 | 설명 | 허용되는 문제 |
Read Uncommitted | 다른 트랜잭션의 미완료 데이터 읽음 | Dirty Read |
Read Committed | 완료된 데이터만 읽음 | Non-repeatable Read |
Repeatable Read | 읽은 데이터는 고정됨 | Phantom Read |
Serializable | 가장 엄격, 완전 격리 | 없음 (성능 낮음) |
심화 이해
- Dirty Read: 다른 트랜잭션의 변경 전 데이터 읽음
- Non-repeatable Read: 같은 쿼리 결과가 매번 다름
- Phantom Read: 조건에 맞는 행 개수가 달라짐
3. ETL (Extract, Transform, Load)
- 데이터 웨어하우스에 데이터를 넣는 3단계 프로세스
내용 정리
- Extract: 원천 시스템에서 데이터 추출
- Transform: 정제/가공/형식 변환
- Load: 목표 시스템(DB)에 적재
심화 이해
- 주기적으로 실행 (일일/시간별 등)
- 성능 최적화를 위해 병렬 처리나 Incremental Load 사용
- 관련 도구: Apache NiFi, Talend, Informatica, Airflow 등
4. Logical View vs Materialized View
- View: 쿼리 결과를 저장하는 가상의 테이블
내용 정리
구분 | 특징 | 장점 | 단점 |
Logical View | 쿼리 결과 즉시 계산 | 항상 최신 | 매번 실행, 느릴 수 있음 |
Materialized View | 쿼리 결과를 저장 | 빠른 조회 | 갱신 필요, 최신 아닐 수 있음 |
심화 이해
- Materialized View는 데이터를 주기적으로 리프레시 해야 함
- 복잡한 조인이나 집계 쿼리의 성능 최적화 용도로 사용
5. Synonym
- DB 객체(테이블, 뷰 등)의 별칭
- 예: SELECT * FROM emp; → SELECT * FROM my_emp; (동일한 대상)
내용 정리
- Public Synonym: 전체 사용자에게 공개
- Private Synonym: 특정 사용자만 접근 가능
심화 이해
- 다른 스키마의 객체에 쉽게 접근하도록 할 때 유용
- Synonym 덕분에 구조 변경 없이도 유지보수 가능
6. DB Link
- 다른 DB에 접속하기 위한 링크 객체
- 서로 다른 DB를 연결해서 쿼리할 수 있음
내용 정리
- SELECT * FROM employees@remote_db;
- 인증 정보, DB 주소 등 포함하여 설정
심화 이해
- 주로 분산 DB 시스템이나 데이터 통합 작업에서 사용
- 성능 이슈, 보안 이슈 고려 필요
7. PGA (Program Global Area)
- Oracle DB의 메모리 영역 중 하나
- 각 세션이 사용하는 비공유 메모리
내용 정리
- 정렬, 해시 조인, 커서 정보 등을 저장
- 사용자의 개별 작업을 처리하는 공간
심화 이해
- SGA (System Global Area)와 구분 필요 (공유 메모리)
- PGA 크기 튜닝 → 쿼리 성능에 직접 영향
8. Table Partitioning
- 큰 테이블을 논리적으로 나누는 기능
- 예: 날짜별, 지역별로 나누기
내용 정리
유형 | 설명 |
Range | 특정 범위 (날짜 등) 기준 분할 |
List | 정해진 값으로 분할 (지역 등) |
Hash | 해시 함수로 분산 분할 |
Composite | Range + Hash 등 혼합 분할 |
심화 이해
- 쿼리 성능 향상, 유지보수 쉬움
- 대용량 테이블 관리 시 매우 유용
9. Table Pruning
- 쿼리 실행 시 필요한 파티션만 읽도록 최적화
- "안 쓰는 파티션은 쿼리에서 자동 제외"
내용 정리
- 예: WHERE date = '2024-04-01' → 해당 날짜 파티션만 검색
심화 이해
- Oracle, PostgreSQL 등에서 자동으로 수행
- 적절한 파티셔닝 전략을 세워야 효과적
10. 메모리 구조 (DB 메모리 구조)
- DB는 작업을 빠르게 처리하기 위해 다양한 메모리 영역을 사용
내용 정리 (Oracle 기준)
- SGA: 공유 메모리, 여러 유저가 같이 씀
- PGA: 비공유 메모리, 세션별로 따로 씀
- Buffer Cache: 데이터 블록 저장
- Shared Pool: SQL 실행 계획, 라이브러리 캐시
심화 이해
- 메모리 구조 튜닝은 DB 성능 향상의 핵심
- 메모리 오버헤드, 경합(Contend) 등도 고려해야 함
11. Cardinality
- 쿼리 조건에 따라 리턴되는 행의 수
내용 정리
- 높은 Cardinality: 결과가 다양함 (ex: 주민번호)
- 낮은 Cardinality: 값이 비슷함 (ex: 성별)
심화 이해
- 인덱스 사용 여부에 영향
- 옵티마이저는 Cardinality 정보를 이용해 실행 계획을 결정
12. OLAP vs OLTP
- DB 시스템의 용도에 따른 구분
내용 정리
구분 | OLTP (트랜잭션 처리) | OLAP (분석 처리) |
목적 | 빠른 INSERT/UPDATE | 복잡한 조회/분석 |
예시 | 은행, 쇼핑몰 | 리포트, BI 도구 |
설계 | 정규화 | 비정규화 |
데이터 | 현재 데이터 | 이력 포함 |
심화 이해
- OLAP에서는 ETL을 통해 데이터 적재
- OLTP는 실시간 처리 중요, OLAP은 다차원 분석 중요
'문과생이 이해하는 개발의 길 🚀 > Database' 카테고리의 다른 글
[Database] 데이터베이스 I/O 원리 (0) | 2025.04.12 |
---|---|
[Database] 관계형 데이터 모델링 (0) | 2025.04.01 |