Welcome to the Federated Tables of MySQL

Hinter dem Begriff Federated Tables verbirgt sich eine Technik zum Verlinken (/Verb(i|ü)nden/) von Tabellen über die Grenzen einer Datenbank, ja gar eines Datenbankservers, hinweg. Man kann sich das wie einen Symlink unter *NIX, bzw. einer Verknüpfung unter Windows vorstellen.
Ein kleines Beispiel
Erstellen wir erst mal zwei kleine Testdatenbanken.
CREATE DATABASE `fedtable_1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `fedtable_2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Anschliessend legen wir eine stinknormale Tabelle in der ersten Datenbank an ...
CREATE TABLE `fedtable_1`.`normal` (
`id` INT(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`firstname` VARCHAR(30) NOT NULL
)
ENGINE = MYISAM
... und füllen sie mit ein paar Einträgen.
INSERT INTO `fedtable_1`.`normal` (`id`, `firstname`)
VALUES (NULL, 'entry1'),
(NULL, 'entry2'),
(NULL, 'entry3'),
(NULL, 'entry4'),
(NULL, 'entry5');
Um jetzt eine Federated Table in der 2. Datenbank zu erstellen, müssen wir lediglich die ENGINE auf FEDERATED stellen und einen zusätzlichen CONNECTION String mitgeben.
CREATE TABLE `fedtable_2`.`federated` (
`id` INT(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`firstname` VARCHAR(30) NOT NULL
)
ENGINE=FEDERATED
CONNECTION='mysql://root@127.0.0.1/fedtable_1/normal';
Jetzt können wir in der Datenbank fedtable2 mit der Tabelle federated wie gewohnt arbeiten. In Wirklichkeit greifen wir aber auf die Tabelle normal der Datenbank fedtable1 zu. Praktisch und einfach.
SELECT * FROM `fedtable_2`.`federated`;
Folgendes gilt es zu beachten
- Die Struktur der Federated Table muss der Strukut der Quelltabelle entsprechen
- Die Indexe sollten aus Performancegründen stets in beiden Tabellen gesetzt werden
Ähnliche Artikel
- Mehrere MySQL Dienste parallel installieren
- Wenn der MySQL Dienst verschwindet
- Wenn PHP einfach nicht mit dem lokalen MySQL-Server verbinden will (Windows)




