MyISAM
や CSV
または
InnoDB
などのような標準的なストレージエンジンを利用してテーブルを作成する時、それはテーブル定義とその関連データによって構成されます。FEDERATED
テーブルを作成する時、テーブル定義は同じですが、データの物理記憶はリモートサーバ上で処理されます。
FEDERATED
テーブルは2つの要素で成り立っています。
データベースのあるリモートサーバ、(.frm
ファイルに格納されている)テーブル定義や関連テーブルのテーブルによって成り立っているものであると言い換える事もできます。リモートテーブルのテーブルタイプは
MyISAM
や InnoDB
を含むリモート mysqld
サーバにサポートされている全てのタイプと言えるかもしれません。
リモートサーバ上のテーブル定義とマッチするデータベースを持つ
ローカルサーバ
テーブル定義は.frm
ファイルの中に格納されています。しかし、ローカルサーバにはデータファイルはありません。その代わりに、テーブル定義はリモートテーブルを指し示すコネクション文字列を含んでいます。
ローカルサーバ上のFEDERATED
テーブルでクエリやステートメントを実行する時、通常は情報をローカルデータファイルから挿入、アップデート、または削除する操作が、その代わりにリモートサーバに送られ、そこでデータファイルをアップデートしたり、適合する行を戻したりします。
FEDERATED
テーブルセットアップの基本的な構造は
図 13.2. 「FEDERATED
テーブル構造」に示されています。
ローカルサーバ(SQLステートメントが実行される所)とリモートサーバ(データが物質的に保管される所)間での情報の流れは次のようになっています。
SQLコールが局所的に発行される
MySQL ハンドラ API (ハンドラーフォーマットのデータ)
MySQL クライアント API (SQLコールに変換されたデータ)
リモートデーベース -> MySQL クライアント API
結果があればそれをハンドラフォーマットに変換する
ハンドラ API -> 結果行、または行に影響された部分的な計算