보안, 백업 및 장애 대응
1. 백업: 데이터 손실을 방지하고, 장애 발생 시 신속하게 복구하는 필수 전략
2. 백업 유형
A. 전체 백업: 데이터베이스 전체를 백업
B. 증분 백업: 마지막 백업 후, 변경된 데이터만 백업
C. 차등 백업: 마지막 전체 백업 후, 변경된 데이터만 백업
3. 백업 주기 설정
- 핵심 데이터는 최소 하루 1회 이상 백업
- 트랜잭션 로그 백업 활성화 (특히 금융, 의료 데이터)
- 원격 백업(Remote Backup) 활용(AWS S3, Google Cloud Storage 등)
4. 백업 복구 전략
- 장애 유형에 따른 복구 시나리오 마련
- 정기적인 복구 테스트 수행
- 복구 절차 문서화 및 자동화
5. 장애 대응
- 데이터베이스는 장애가 발생할 수 있으며, 신속한 감지 및 대응이 필요함
n 하드웨어 장애: 서버, 디스크 고장 → RAID 구성 활용
n 소프트웨어 장애: DBMS 오류, 버그 → 자동 복구 설정
n 네트워크 장애: 서버 간 연결 끊김 → 로드 밸런싱
n 데이터 손상: 잘못된 SQL 실행 → 트랜잭션 로그 복구
6. 장애감지 및 모니터링
- 모니터링 툴 활용
- 자동 알림 시스템 구축
7. 고가용성(High Availability) 및 이중화
- Master-Slave Replication (마스터-슬레이브 복제)
- Failover 시스템 구축
- 로드 밸런싱 적용(Load Balancing)
< NoSQL 소개 >
Data 종류
1. 정형 데이터
- raw와 column이 정해진 데이터
- 데이터의 스키마를 지원
ex) 관계형 데이터 베이스, 스프레드 시트 등
2. 반정형 데이터
- 데이터 내부에 데이터 구조에 대한 메타 정보를 가짐
- 일반적으로 파일 형태로 저장
ex) JSON, XML, HTML 등 로그 데이터 및 IoT 센서 데이터
3. 비정형 데이터
- 하나의 데이터가 객체화 된 데이터
ex) 동영상, 이미지, 텍스트 데이터 등
RDBMS의 주요 특징
• 정형 데이터 (Structured Data)
• 관계형 모델 (테이블, 행, 열 기반 저장)
• ACID 트랜잭션 보장 (원자성, 일관성, 격리성, 지속성)
• SQL(Structured Query Language) 사용
• 수직적 확장 (Vertical Scaling) 중심
# RDBMS vs. NoSQL 비교

NoSQL(비관계형 데이터베이스) 주요 특징
• 비정형/반정형 데이터 저장 (JSON, BSON, Key-Value 등)
• Schema-less (스키마가 유연함, 동적 변경 가능) → 데이터 구조 변경이 쉬움
• BASE(Basically Available, Soft state, Eventual consistency) 특성
• 수평적 확장 (Horizontal Scaling) 중심 → 빅데이터 처리에 강점
• 트랜잭션보다는 빠른 읽기/쓰기 성능을 중점 → 로그, 센서 데이터 등 대량 처리 가능
- 단점
• 트랜잭션 지원이 제한적 (ACID 보장 부족)
• 데이터 정합성(Consistency)이 낮음
→ 일관성이 즉시 보장되지 않을 수 있음
• 복잡한 관계 데이터 처리 어려움 (JOIN 기능 부족)
• 관계형 데이터베이스에서는 JOIN을 사용하여 여러 테이블에서 데이터를 조합하지만, NoSQL에서는 JOIN 연산을 지양하고, 데이터를 한 번의 조회로 가져올 수 있도록 설계해야 함
• 조인(Join) 없는 설계 방법
- 중첩된 문서 구조(Nested Document) 활용 (예: MongoDB, CouchDB)
- 데이터 중복 허용 (읽기 성능 최적화 목적)
- 인덱싱 및 분산 저장 기법 활용
시스템 접근 패턴 분석 - 읽기/쓰기 패턴 분석
• NoSQL 데이터베이스에서 성능 최적화를 위해 데이터의 읽기(Reads)와 쓰기(Writes) 패턴을 분석하는 것이 중요함
• 읽기/쓰기 패턴이 중요한 이유
- 읽기 중심 시스템 vs. 쓰기 중심 시스템에 따라 데이터 구조가 달라짐
- 자주 조회되는 데이터는 캐싱 및 중복을 활용하여 성능을 최적화
- 쓰기 부하가 높은 경우, 데이터를 분산(Sharding)하여 확장성을 높임
확장성 및 고가용성 설계 - 파티셔닝(Sharding)과 복제(Replication) 전략
• NoSQL은 수평 확장(Scalability)을 위해 Sharding(데이터 분산 저장)과 Replication(데이터 복제) 기법을 사용함
< 키-값 저장소 >
키-값 저장소 정의
• 키-값 저장소(Key-Value Store)는 NoSQL 데이터베이스 유형 중 가장 단순하고 빠른 데이터 저장 방식을 제공함
• 빠른 조회 성능, 세션 관리, 캐싱, 분산 저장 등에서 강력한 성능을 발휘하며, 다양한 시스템에서 활용됨
종류 및 특징
1. Redis : 메모리 기반, 초고속 성능, TTL 지원 # TTL 일정 시간 후 자동 삭제
# 활용: Redis 메시지 큐
→ 발행자(Publisher)가 메시지를 특정 채널(Channel)에 발행하면 해당 채널을 구독(Subscribe)하고 있는 모든 구독자(Subscriber)에게 메시지를 전달하는 구조
2. Memcached : 분산 캐싱, 경량 데이터 저장 웹 캐싱, 애플리케이션 성능 개선
3. Amazon DynamoDB : AWS 기반, 자동 확장, 관리형 # DAX 기능을 통한 캐싱 지원
백업 및 복구
❑ 클러스터링 활용
• Redis에서는 Master-Slave 복제 및 클러스터링을 통해 장애 발생 시 데이터를 보호할 수 있음
❑ 데이터 손실 방지를 위한 최적화 전략
• 백업 주기 설정 및 테스트 복구 환경 구축
< 문서형 DB >
• 문서형 데이터베이스(Document DB)는 JSON, BSON 등의 문서 형태로 데이터를 저장하는 NoSQL 데이터베이스 # 문서 형태 = 딕셔너리 형태
• 스키마리스(Schema-less) 구조를 가지며, 대규모 데이터 처리, 확장성(Scalability), 빠른 읽기/쓰기 성능을 위해 사용됨 # 샤딩(sharding)
대표적인 문서형 DB 종류 및 특징
1. MongoDB : JSON 기반, 트랜잭션 지원, 수평 확장 가능
2. CouchDB : JSON 문서 저장, RESTful API 지원
3. Firebase Firestore : 클라우드 기반, 실시간 동기화 지원
4. Amazon DocumentDB : AWS에서 제공하는 관리형 문서형 DB
5. ArangoDB : 문서형 + 그래프 DB 기능 제공
문서형 DB의 데이터 모델링 전략
1. 중첩 문서(Nested Document) 모델링: 데이터 관계가 깊지 않을 경우, 하나의 문서에 데이터를 저장
2. 참조(Reference) 모델링: 데이터 중복을 최소화하기 위해 ID 기반 참조를 사용
참고) 성능 최적화 전략
1. 적절한 인덱스 사용 # 하고 안하고에 따라 속도 차이가 심함
2. 데이터 중복을 활용한 빠른 조회
3. 샤딩(Sharding) 및 복제(Replication) 활용
활용 및 운영전략
• 활용분야
- 콘텐츠 관리 시스템, 사용자 프로필 및 개인화 서비스, IoT, 실시간 분석 및 로그 관리 등
• 운영 전략
- 적절한 데이터 모델링, 인덱싱 전략, 확장성 관리, 보안 관리, 백업 및 복구, 성능 모니터링 및 튜닝
• 선택 시 고려사항
- 데이터 모델의 유연성, 확장성, 성능, 커뮤니티 및 지원, 비용
< 컬럼형 DB > # 혁신적인 방법?
→ 컬럼(Column) 단위로 저장하여 읽기 속도를 최적화
DB 활용 및 최적화
• 데이터 분석(OLAP)에 적합
• 성능 최적화
- 압축(Compression) 사용하여 저장 공간 절약 및 성능 향상
- 컬럼 단위 인덱싱(Indexing) 적용하여 빠른 검색 지원
- 병렬 처리(Parallel Processing) 및 Sharding을 통해 분산 저장
< 그래프 DB >
→ 그래프 데이터베이스(Graph DB)는 노드(Node)와 엣지(Edge)를 사용하여 관계 데이터를 효율적으로 저장 및 탐색하는 NoSQL 데이터베이스 # 빠른 관계 탐색을 위해 최적화됨
• 구성 요소
- 노드(Node): 개체(Entity)를 나타내는 데이터 구조 (예: 사람, 제품, 장소)
- 엣지(Edge): 노드 간의 관계(Relationship)를 나타내는 데이터 구조(연결선)
- 속성(Properties): 노드 및 엣지에 추가적인 정보 제공 (예: 이름, 나이, 관계 유형)
< 기타 DB >
검색엔진 DB
→ 검색 엔진 데이터베이스는 대량의 텍스트 데이터를 빠르게 색인(Indexing)하고 검색(Retrieval)할 수 있도록 설계된 특화된 데이터베이스
1) 대표적인 검색엔진 DB
→ Elasticsearch: 분산 검색 지원, JSON 기반 저장 # 검색만, 데이터를 저장하려면 따로 DB필요
2) 주요 개념
• 색인(Indexing) 및 역색인(Inverted Index)
- 검색 엔진 DB는 색인(Indexing) 과정을 통해 텍스트 데이터를 빠르게 검색할 수 있도록 저장
- 특히, 역색인(Inverted Index) 구조를 활용하여 문서 내 특정 단어가 포함된 위치를 미리 저장함으로써 검색 속도를 극대화함
• 토큰화(Tokenization) 및 분석(Analysis)
- 텍스트를 분석하여 검색 가능한 형태로 변환(토큰화, Tokenization) 함
• 랭킹(Scoring) 및 검색 최적화 기법
시계열 DB
→ 시계열 데이터베이스(Time-Series Database, TSDB)는 시간(Time)을 중심으로 변화하는 데이터를 효율적으로 저장하고 분석하는 특화된 데이터베이스
• 인덱스
- 시간 기반 파티셔닝
- 시간 기반 인덱스
• 최적화
- 시간 압축
- 배치 삽입
- 샤딩 및 분산 저장
NewSQL DB
→ 전통적인 RDBMS(Relational Database)와 NoSQL의 장점을 결합한 차세대 관계형 데이터베이스.트랜잭션 처리(ACID)를 지원하면서도, NoSQL처럼 수평 확장(Scale-out) 및 고성능 분산 처리가 가능하도록 설계됨