- Notion의 급성장으로 인해 Postgres 데이터베이스가 급증하고 처리 속도가 떨어짐 🐌
- 모든 데이터는 블록으로 구성되며, 복잡한 트리 구조 형성 🌳
- 데이터베이스 VACUUM 작업이 지연되고, 트랜잭션 ID 낭비 우려로 인해 데이터베이스 성능 저하 💣
- 단일 Postgres 인스턴스 규모를 늘리는 것보다 수평 확장 sharding 방식 선택 🧩
- 15개의 논리적 shard를 갖는 32개의 물리적 데이터베이스 인스턴스 구축 🏗️
- PgBouncer를 사용하여 애플리케이션과 데이터베이스 간의 연결을 효율적으로 관리 🏊♂️
- 기존 데이터를 새로운 시스템으로 이전하는 과정에서 레코드 버전 비교를 통해 데이터 손실 방지 🛡️