❓ 분산 데이터베이스 시스템을 선택할 때 고려할 사항들
- 확장성 ( Scalability )
- 수평 확장: 동일한 성능의 노드를 추가
- 수직 확장: 특정 노드의 리소스를 증가시켜 성능을 향상
- 데이터 샤딩 ( Data Sharding )
- 데이터를 여러 노드로 분할하고 분산 저장하는 전략
- 데이터 접근 패턴과 트래픽 요구 사항에 따라 적절히 선택
- 복제 ( Replication )
- 데이터의 일관성과 가용성을 높이기 위함
- 마스터~슬레이브, 동료 간 복제 등 다양한 전략이 존재
- 동기 vs 비동기 복제를 선택하고, 복제 팩터를 결정
- 동기 복제 ( Synchronous Replication )
- 트랜잭션 확인을 통해 강한 일관성을 보장할 수 있다.
- 모든 슬레이브 노드가 변경 사항을 수신하고 확인해야 하므로 성능 지연 발생
- 동기화 메커니즘 구현이 복잡할 수 있다.
- 비동기 복제 ( Asynchronous Replication )
- 메인 노드에서만 처리되고, 성공한 결과는 나중에 백그라운드에서 수행된다.
- 이로 인해, 약간의 데이터 불일치가 발생할 수 있다.
- 복제 팩터란 ?
- 분산 데이터베이스 시스템에서 몇 개나 복제되었는지 결정하는 값
- 로드 밸런싱 ( Load Balancing )
- 트래픽을 여러 노드에 고르게 분산시켜서 시스템 전체의 성능을 향상
- 일관성 ( Consistency )
- 데이터 일관성 수준을 결정
( 강한 일관성 vs 약한 일관성 )
- 성능 ( Performance )
- 읽기/쓰기 작업의 성능 요구 사항 평가 및 캐싱, 인덱싱, 쿼리 최적화 등 고려
- 고가용성 ( High Availability )
- 보안 ( Security )
- 데이터 암호화 및 권한 관리, 네트워크 보안 등
- 모니터링 및 유지 관리 ( Monitoring & Maintenance )
- 시스템의 상태를 실시간으로 모니터링
( = 경고 및 로깅 메커니즘 )
- 업데이트 및 유지 관리를 위한 자동화 도구 및 프로세스 구축
- 비용 ( Cost )
⭐ Citus ?
⭐ PgBouncer ?
⭐ Pgpool-II ?