2010年5月29日土曜日

rails と postgresql schema

 うちの社員から、スキーマは分けないんですか?と、問われて、そんな事は無理だろう・・・と即座に思った。でも、まぁ、ちょっと実験してみるか・・・と、やってみたら、簡単に切り替える事ができた…。ショックでした…。


create schema test;
create table foos (
id serial primary key,
bar_id integer,
name varchar(16)
);
create table bars(
id serial primary key,
name varchar(8)
);
create table test.bars (
id serial primary key,
name varchar(8)
);


こんな感じのリレーションを作成しておいて


class FoosController < ApplicationController
before_filter :change_schema

def change_schema
Bar.set_table_name 'test.bars'
end
end


とか、やっちゃったら、簡単にスキーマが切り替えられたんです。怖いです。よくよく考えてみると、テーブル名は規約から外れるわけじゃないので、そうなのかもしれません。

 postgresql の slony-i のマスター・スレーブ方式ですが、DB単位じゃないですか?schema単位でマスター・スレーブ方式が選択できると、途端に幅が広がったりしませんか?相互にスキーマを転送できると、凄い事になりそうです。

0 件のコメント: