데브허브 | DEVHUB | Trillions of Web Pages: Where Does Google Store Them?Trillions of Web Pages: Where Does Google Store Them?
- 대규모 데이터셋을 작고 관리하기 쉬운 세그먼트로 분할하여 성능과 확장성을 최적화합니다. 수직 파티셔닝은 컬럼별로, 수평 파티셔닝은 로우별로 데이터를 나눕니다. 🧩
- 수평 파티셔닝을 확장하여 데이터를 여러 독립적인 데이터베이스 인스턴스에 분산시킵니다. 해시 기반, 범위 기반, 디렉토리 기반 샤딩 전략이 있으며, 대규모 쓰기 부하 처리에 필수적입니다. 🌐
- 쿼리 성능을 최적화하기 위한 보조 데이터 구조를 생성합니다. B-트리, 해시, 비트맵, 역 인덱스 등 다양한 유형이 있으며, 읽기 성능 향상과 쓰기 오버헤드 사이의 균형이 중요합니다. 🔍
- 여러 노드에 데이터 복사본을 유지하여 읽기 확장성과 내결함성을 향상시킵니다. 단일 리더, 다중 리더, 리더리스 방식이 있으며, 복제 지연과 일관성 유지가 핵심 과제입니다. 🔄
- 자주 액세스하는 데이터를 빠른 저장소 계층에 저장하여 지연 시간을 줄이고 백엔드 부하를 경감합니다. 캐시-어사이드, 라이트-스루, 라이트-비하인드 등 다양한 전략이 있습니다. ⚡
- 최종 사용자에게 가까운 서버에서 콘텐츠를 제공하여 네트워크 지연 시간을 최소화합니다. 지리적 분산과 지능형 라우팅을 통해 빠른 응답 시간을 보장합니다. 🚀
- 리소스 추가에 따른 시스템 성능 변화를 측정합니다. 이상적인 선형 확장성은 드물며, 경합 및 일관성 유지 비용으로 인해 대부분 비선형 확장성을 보입니다. 📈
- 시스템 설계 시 단순한 구현으로 시작하고, 병목 현상을 식별하기 위한 철저한 계측, 운영 오버헤드 고려, 일관성/가용성/지연 시간 영향을 평가하는 것이 중요합니다. 🛠️