リードレプリカ
プライマリ DB の読み取り専用コピーで、読み取り負荷を分散しスケーラビリティを向上させる
リードレプリカとは
リードレプリカは、プライマリ DB の読み取り専用コピーで、読み取り負荷を分散しスケーラビリティを向上させる。書き込みはプライマリのみ、読み取りはレプリカに分散する。
仕組み
プライマリ DB への書き込みが非同期でリードレプリカにレプリケーションされる。読み取りリクエストをリードレプリカに分散することで、プライマリの負荷を軽減し、読み取りスループットを向上させる。ただし非同期レプリケーションのため、書き込み直後にリードレプリカを読むと古いデータが返る可能性がある (レプリケーション遅延)。
書き込み → プライマリ DB
↓ 非同期レプリケーション
読み取り → リードレプリカ 1
読み取り → リードレプリカ 2
読み取り → リードレプリカ 3
Aurora のリードレプリカ
Aurora のリードレプリカを以下にまとめる。
| 観点 | RDS リードレプリカ | Aurora リードレプリカ |
|---|---|---|
| 最大数 | 5 | 15 |
| レプリケーション遅延 | 数秒 | 数十ミリ秒 |
| フェイルオーバー | 手動昇格 | 自動フェイルオーバー |
| ストレージ | 独立 | 共有 (クラスタボリューム) |
DynamoDB のリードレプリカ
DynamoDB は内部的に 3 つの AZ にレプリカを持つ。明示的なリードレプリカの設定は不要。
// 結果整合性 (デフォルト): 任意のレプリカから読み取り (高速)
await db.get({ TableName: 'users', Key: { id: '123' } });
// 強い整合性: プライマリレプリカから読み取り (やや遅い)
await db.get({ TableName: 'users', Key: { id: '123' }, ConsistentRead: true });
リードレプリカの注意点
リードレプリカの注意点を以下にまとめる。
| 注意点 | 対策 |
|---|---|
| レプリケーション遅延 | 書き込み直後の読み取りはプライマリから |
| 結果整合性 | Read Your Own Writes パターン |
| 書き込みはプライマリのみ | アプリケーションで接続先を分離 |
Read Your Own Writes
Read Your Own Writes のコード例を示す。
// 書き込み直後はプライマリから読み取り
await db.put({ TableName: 'users', Item: updatedUser });
// 直後の読み取り: 強い整合性
const user = await db.get({
TableName: 'users',
Key: { id: updatedUser.id },
ConsistentRead: true,
});
// それ以外の読み取り: 結果整合性 (デフォルト)
リードレプリカ vs キャッシュ
リードレプリカとキャッシュの違いを以下にまとめる。
| 観点 | リードレプリカ | キャッシュ (DAX, ElastiCache) |
|---|---|---|
| データの鮮度 | 数ミリ秒〜数秒遅れ | TTL に依存 |
| 一貫性 | 結果整合性 | キャッシュミス時に DB から取得 |
| コスト | DB インスタンス費用 | キャッシュノード費用 |
| 用途 | 読み取り負荷の分散 | 低レイテンシの読み取り |
リードレプリカの理解を深めるには関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
Aurora
AWS のクラウドネイティブ RDB で、MySQL/PostgreSQL 互換で高可用性・高パフォーマンスを実現する
結果整合性
分散システムで更新が全ノードに即座に反映されず、最終的に一貫した状態に収束するモデル
水平スケーリング
サーバーの台数を増やして処理能力を向上させるスケーリング手法
CQRS
データの読み取り (Query) と書き込み (Command) を別々のモデルで処理し、それぞれを独立して最適化するアーキテクチャパターン
Redis
インメモリデータストアで、キャッシュ、セッション管理、Pub/Sub に使われる
Change Data Capture
データベースの変更をリアルタイムに検出し、下流システムに伝播させるデータ統合パターン
関連する記事
チーム開発・マネジメント本ガイド - 技術リーダーが読むべき本
チーム開発、1on1、技術マネジメントを学べる技術書の選び方を紹介。メンバー時代からマネージャーまで、段階別の読書ロードマップを解説します。
技術書の帯コピーの世界 - 煽り文句に隠されたマーケティング
「10 万部突破」「現場で使える」「これ 1 冊で完璧」。技術書の帯に書かれた煽り文句の法則と、帯が売上に与える影響を解説します。
技術書のタイトルに隠された法則 - 「入門」「実践」「詳解」の意味を読み解く
技術書のタイトルに使われる「入門」「実践」「詳解」などのキーワードには暗黙のルールがあります。タイトルだけで本のレベルと内容を見抜くコツを紹介します。