DB⚡ パフォーマンス・速度
Notion
Notion、単一Postgresが限界に達し480の論理シャードへ水平分割
単一PostgreSQLインスタンス水平シャーディングされたPostgreSQL(480論理シャード)
ユーザー急増でモノリシックなPostgresがスケール限界に近づいたNotionが、ワークスペースIDを軸に32物理DB×15論理シャード=480シャードへ分割移行した。
何が起きたか
Notionはユーザー数急増に伴い、単一のPostgreSQLモノリスがパフォーマンス限界に近づいていることに気づいた。エンジニアリングチームはデータモデルを分析し、鍵となるテーブルをワークスペースID単位で整理、各ワークスペースが特定のシャードに属するよう設計した。移行にあたっては新旧データベースへの二重書き込み(ダブルライト)方式を採用し、並行して過去データを追いつかせるキャッチアップスクリプトを実行、m5.24xlarge(96 vCPU)のAWSインスタンスを使って3日間で移行を完了させた。最終的に32の物理データベース、15論理シャード/物理DBという構成、合計480の論理シャードに分割し、ダウンタイムは5分間の計画メンテナンスのみに抑えられた。教訓として、パフォーマンス問題が深刻化する前にシャーディングに着手すべきだったと振り返っている。
移行前後の変化
論理シャード数
計画停止時間-→5分間
2021-10-01
他の事例も見る