- NoSQL은 관계형 데이터베이스의 스케일아웃 한계를 극복하기 위해 등장한 비관계형 데이터베이스 유형입니다. 🚀
- 관계형 DB는 데이터 분산 시 JOIN 연산의 복잡성 및 데이터 불일치 문제에 직면합니다. 🔗
- MongoDB는 데이터를 JSON과 유사한 BSON 형식의 '도큐먼트'로 '컬렉션'에 저장합니다. 📄
- MongoDB는 연관된 데이터를 하나의 도큐먼트에 저장하여 복잡한 JOIN 없이 한 번에 데이터를 조회할 수 있습니다. ✨
- '샤딩'은 MongoDB가 대규모 데이터를 여러 서버에 분산 저장하여 수평 확장을 지원하는 기술입니다. 🧩
- 샤딩을 위해 Mongos, Config Server, 샤드로 구성된 샤드 클러스터가 필요합니다. 🌐
- MongoDB는 각 샤드를 '레플리카 셋'으로 구성하여 분산 시스템의 잠재적 장애에 대비하고 고가용성을 유지합니다. 🛡️
- 레플리카 셋에서 Primary 서버 장애 시, Secondary 서버들이 투표를 통해 최신 데이터를 가진 후보를 새로운 Primary로 선출합니다. 🗳️
- 샤딩과 레플리카 셋의 조합으로 MongoDB는 무한한 수평 확장성과 장애 발생 시에도 중단 없는 서비스 제공이 가능합니다. ♾️
- MongoDB는 대용량 데이터, 낮은 데이터 연관도 서비스, 유연한 스키마가 필요한 경우에 효율적입니다. 💡
- 실제 활용 사례로는 대용량 로그 저장 및 조회, CQRS 패턴의 조회용 DB로 사용됩니다. 📊
데브허브 | DEVHUB | [10분 테코톡] 짱구의 MongoDB