第4回:データベースレプリケーション (1/4)

近未来データベース
近未来データベース

第4回:データベースレプリケーション
著者:NTTデータ先端技術  鈴木 幸市   2005/9/9
1   2  3  4  次のページ
はじめに

   第2回と第3回に渡り、サーバクラスタを使ってデータを分散配置し、全体として大きなデータベースを構築する方法について解説しました。今回は、サーバクラスタを使ってデータベースの二重化、三重化を行う方法について解説します。

   データベース全体のコピーを作ったり、そのコピーのことをレプリケーションと呼びます。


データベースのコピーが必要なわけ

   データベースのテーブル設計をする上で「データの正規化」が重要だと聞いたことがある人は多いと思います。「データの正規化」で重要なことの1つに「同じデータは複数テーブルで重複させない」という考えがあります。

   図1に示すように、「住所」を「顧客テーブル」と「注文テーブル」の2ヶ所に重複させておくと、お客様の住所を変更するアプリケーションは「すべて」「例外なく」この2つのテーブルの情報を「同じ」に保っておかなければならなくなります。

重複のあるデータベース設計
図1:重複のあるデータベース設計
(画像をクリックすると別ウィンドウに拡大図を表示します)

   これは、ディスクの無駄遣いもさることながら、万が一、2つのテーブルのデータが違った場合、どちらが正しいのかを調べて、どちらかのデータを直さなければならなくなってしまいます。

   このようなことを避けるために、例えば「住所」は「顧客テーブル」だけに格納して、「注文テーブル」にはお客様の「顧客番号」を格納しておき、この顧客番号からお客様の住所を調べるようにします(図2)。

テーブル間で重複する情報をなくす設計
図2:テーブル間で重複する情報をなくす設計
(画像をクリックすると別ウィンドウに拡大図を表示します)

   このようにデータベースの世界では、同じデータを複数テーブルで重複させないのが原則になっています(複数テーブルを結合するために使う種々のIDは例外です)。

   一方「レプリケーション」は、データベースのデータを二重にも三重にもコピーしておく方法です。上記のテーブル設計の原則とは矛盾するようですが、「レプリケーション」はSQL文の処理系の内側で実行されるので、アプリケーションレベルでは見えないのが、「正規化」とは違うところなのです。このようにあえてデータベースのコピーを持っておくことが必要な理由には、次のようなものがあります。

  1. データベースの最新のコピーを常に別のサーバにコピーしておいて、データベースサーバがクラッシュしても即座に別のデータベースサーバを使って処理を再開したい(可用性の向上)
  2. たくさんのサーバで同じコピーを持っていれば、データの検索が同時にたくさん実行されるような場合でも、それぞれのサーバで分担して処理することができる(性能向上)
   どちらもデータベースレプリケーションでは重要な機能です。

1   2  3  4  次のページ


NTTデータ先端技術株式会社 鈴木 幸市
著者プロフィール
NTTデータ先端技術株式会社  鈴木 幸市
Unixにおける日本語ハンドリング、Oracleの移植、オブジェクトリレーショナルデータベースのエンジンの開発などに携わる。現在、NTTデータ先端技術にてLinux、PostgreSQLなどのオープンソースソフトウェアに関する技術を統括している。著書に「RDBMS解剖学」(翔泳社)、訳書に「オブジェクト指向データベース入門」(共立出版)など。


INDEX
第4回:データベースレプリケーション
はじめに
 データベースレプリケーションの方式
 データベースのレプリケーションを考えるために
 グループコミュニケーション
近未来データベース
第1回データベースを取り巻く状況
第2回データベースのスケールアウト(前半)
第3回データベースのスケールアウト(後半)
第4回データベースレプリケーション
第5回データベース技術者を育むために

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30