【りーどれぷりか】

リードレプリカ とは?

最終更新:
💡 読み取り専用の分身を増やして、データベースの負担を分け合う

プライマリデータベースの読み取り用コピー。書き込みはプライマリが担当し、読み取りをレプリカへ振り分けて負荷を分散する。非同期複製では更新の反映に遅延がある。

📌 このページのポイント
書き込みと読み取りを分担 アプリ 接続先を選ぶ 書き込み 読み取り プライマリ 更新する データの本体 レプリカ1 読む 読み取り用コピー レプリカ2 読む 読み取り用コピー 複製 非同期では 反映に遅れ 最新の状態が必要な読み取りは プライマリを使うなど整合性を考える
接続先を振り分ける例。レプリカを作るだけで読み取りが自動で移るとは限らず、障害時の切り替えは別に設計する。
ひよこ ひよこ
リードレプリカって何なの?
ペンギン先生 ペンギン先生
読み取りを担当するデータベースのコピーだよ。書き込みはプライマリへ行い、その変更をレプリカへ複製する。例えばAmazon RDSのDBインスタンスのリードレプリカでは、非同期で変更が伝わるんだ。
ひよこ ひよこ
なんでコピーが必要なの?本体だけじゃダメなの?
ペンギン先生 ペンギン先生
読み取りが多く、本体の処理能力が足りないときに役立つよ。検索や集計をレプリカへ振り分ければ、本体の負担を減らせる。ただし、全てのアプリで読み取りの割合が同じだったり、必ず速くなったりするわけではないんだ。
ひよこ ひよこ
図書館でいうと、本館が混んでるから分館を作る感じなんだね!
ペンギン先生 ペンギン先生
本館で更新し、分館で読めるように写しを用意するイメージだね。ただし更新が分館へ届くまで時間がかかることがあるし、分館を無制限に増やせるわけではない。台数の上限や費用、複製の負荷も確認するんだ。
ひよこ ひよこ
コピーのデータは常に最新なの?
ペンギン先生 ペンギン先生
非同期複製では、書き込んだ直後のデータがまだ見えないことがあるよ。遅延は負荷や通信などで変わるので、いつも数秒以内とは限らない。更新直後の確認など最新の状態が必要な読み取りは、プライマリを使うなどの方法を考えるんだ。
ひよこ ひよこ
クラウドだと簡単に作れるの?
ペンギン先生 ペンギン先生
Amazon RDSなどに作成機能があるよ。対応するエンジンや構成はサービスごとに確認しよう。コピーを作るだけでアプリの読み取りが自動で移るとは限らないので、接続先の振り分けも必要になるんだ。
ひよこ ひよこ
リードレプリカが障害で落ちたらどうなるの?
ペンギン先生 ペンギン先生
その接続先への読み取りが失敗する場合があるよ。再接続や別の接続先への切り替えを設計しておく。プライマリの障害時にはレプリカを独立したDBへ昇格できる構成もあるけど、自動切り替えや未反映データの扱いは別に確認する必要があるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リードレプリカ」って出てきたら「読み取りの負荷を分担するデータベースのコピー」と思えばだいたいOK!
📖 おまけ:英語の意味
「Read Replica」 = 読み取り用の複製
💬 Read(読む)+ Replica(複製)で、読み取り専用のコピーという意味だよ

参考資料

← 用語集にもどる