Welcome to the Federated Tables of MySQL

Tags:

Federated Tables of MySQL and Mysqlasia

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

Ähnliche Artikel

Kommentare