💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.
대형 데이터베이스 구축 기술
필요성
- 데이터는 계속 늘어남
- 한 대의 DBMS 서버로는 처리 능력의 한계
- 성능 업그레이드
- HDD → SSD(All Flash Memory) → 인 메모리 머신(In Memory Machine)
- 하지만 이 방식으로는 한계가 있음
VLDB(Very Large DBMS)
- 샤딩
- DBMS 내용 분할(DB/테이블)
- Join 시 어느 테이블이 어느 DB에 있는지 Location을 알아야 함 (Join을 하기 어려워 역정규화하기도 함)
- 쓰기 성능 향상
- 복제
- 동일한 DBMS를 여러 개 유지(마스터/슬레이브)
- 읽기 성능 향상
💡 샤딩과 복제를 동시에 쓰기도 함!
스케일업과 스케일아웃
스케일업
- 보통 말하는 성능 업그레이드
- CPU 클럭 속도 증가, 코어 수 증가, 메모리 증가
- 보통 성능 증가에 비해 가격 증가가 더 빠름 → 비용 부담
- 병령컴퓨팅 / 전용 네트워크
- Tightly-Coupled System
스케일아웃
- 동일한 서버/DBMS를 병렬로 구축
- 분산컴퓨팅
- Loosely-Coupled System → 상대적으로 저렴
- 노드 수 추가하여 계속 성능 향상 가능 / 효율은 상대적으로 떨어짐
NoSQL
개념
- 일반 RDBMS가 주로 읽기/검색 성능에 최적화(인덱스 사용)
- 쓰기 성능이 중요한 응요의 경우 NoSQL이 좋은 성능을 보임
- ex. 로그, SNS 메신저
- 기존 RDBMS를 대체하기 보다는 보완하는 역할
- 제품군
- MongoDB가 시초
- Apache Cassandra, Apache HBASE, Redis, …
CAP 이론을 이용한 NoSQL 시스템 분류
- C 일관성(Consistency)
- 어떤 노드를 접근하더라도 데이터 값이 동일해야 한다
- A 가용성(Availability)
- 노드 일부가 Fail 되더라도 서비스가 중단이 안 되어야 한다.
- P 파티션 내성(Partition Tolerance)
- 노드 간 통신에 장애가 생겨도 문제가 없어야 한다.
📌 어떤 시스템도 3가지 모두를 만족시킬 수는 없음! (CA, AP, CP)
- CA (RDBMS)
- CP (Hbase, MongoDB, Redis)
- AP (Cassandra)
저장 형태에 대한 분류
구분 | 설명 | 예시 |
---|---|---|
키-밸류(Key-Value) | 키 값을 주면 밸류를 리턴하는 형태(JSON과 유사) | Redis |
정렬된 키-밸류(Ordered Key-Value) | 키 값으로 정렬되는 형태 | Hadoop, Cassandra, HBase |
도큐먼트 형태(Document based) | 밸류 값이 JSON/XML 문서인 형태 | MongoDB |
스키마리스
- 스키마(DDL) 기반이 아니라 필요하면 새로운 컬럼(키)를 추가하면 됨
- 동일한 구조가 아닐 수 있음
- RDBMS(정규형데이터), NoSQL(반정규형 데이터), 검색엔진(비정규형 데이터)