The FEDERATED Storage Engine (MySQL 6.0.7)

The FEDERATED Storage Engine (MySQL 6.0.7),

FEDERATED Depolama Motoru MySQL 6.0.7 ile birlikte başlamıştır.
Kelime anlamı olarak Birleşik Depolama Motoru anlamına gelir. Yerel
bir sunucudaki veritabanı server ile uzak bir sunucudaki veritabanı server
arasında , clustering veya replication olmadan erişim sağlar.

Mysql server kurulumunda default olarak aktif gelmeyen bu Motoru
kullanmak iÇin aktifleştirmeniz gerekmektedir. FEDERATED depolama
motorunda datalar, uzak sunucudaki .FRM dosyalarında tutulur.

FEDERETED Table Grafik:

FEDERATED Table Çalışma mantığı
FEDERATED Table Çalışma mantığı

şimdi Uzak Sunucuda bir tablo yaratalım:

CREATE TABLE uzak_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    adi   VARCHAR(32) NOT NULL DEFAULT '',
    tc_no  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX adi (adi)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;

uzak_table ismindeki tablomuza federated tablo oluşturmak iÇin iki yöntem mevcuttur.

1- Yerel sunucuda bir tablo oluştururuz ve connection string bilgilerini veririz.
Uzak sunucudaki tablo ile connectionu sağlaması iÇin.
2-Connection iÇin FEDERATED server yaratırız ve bu serverı kullanırız.


1.Method : Yerel sunucuda bir fedarated tablo yaratalım.

   CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    adi   VARCHAR(32) NOT NULL DEFAULT '',
    tc_no  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:3306/federated/uzak_table';


CONNECTION SYNTAX:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

schema : Mysql tarafından tanınan bir bağlantı protokolüdür.
user_name : Bağlantı iÇin kullanıcı adı. Bu kullanıcı uzak sunucuda oluşturulur. Uzak sunucudaki tabloda
(SELECT, INSERT, UPDATE ve benzeri) gerekli işlemleri gerÇekleştirmek iÇin
uygun yetkilere sahip olması gerekir.
password : Kullanıcı_adı iÇin ilgili şifre.
host_name : Ana bilgisayar adını veya uzaktan sunucusunun IP adresi.
port_num : Uzak sunucusunun bağlantı noktası numarasını belirtiniz. Varsayılan 3306 dır.
db_name : Uzak sunucudaki db ismi.
tbl_name : Uzak sunucudaki tablonun adı.

2.Method: FEDERATED tablo oluşturmak iÇin SERVER kullanma:

FEDARATED server’ı local sunucuda oluşturuyoruz.

CREATE SERVER fed_server
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'fed_user', HOST 'remote_host', PORT 2306, DATABASE 'federated');

şimdi oluşturduğumuz fed_server ismindeki FEDERATED server’ı kullanarak
local server da bir FEDERATED tablo yaratalım.

    CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    adi   VARCHAR(32) NOT NULL DEFAULT '',
    tc_no  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='fed_server/uzak_table';

CONNECTION kısmında görüdğünüz gibi FEDERATED server ismini ve
uzak sunucuda oluşturduğumuz tablonun ismini yazmamız yeterlidir.

Bir sonraki makalelerde görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator