Subscribed unsubscribe Subscribe Subscribe

@kyanny's blog

Write down what I learnt. Opinions are my own.

Postgres Weekly issue 96

Postgres Weekly Issue 96: March 11, 2015


スキーマ管理について。
複数アプリケーションがそれぞれスキーマ定義モデルを持つのは設計が悪いせいで、その層だけ切り出して共有すればよい。Quipper では MongoMapper を使っているがモデル層の共有でだいたいうまくいっている。
スキーマレスデータベースで苦労する点は理解できる。しかし RDBMS であっても post.title が nil になることはありえる(NOT NULL 制約をかけていない場合)し、空文字列が入ってることもありえる。 nil を踏んで例外が出るのと空文字列が表示されるのとどちらがいいかは一概には決められないが。
データベース側にスキーマを持たない利点は、アプリケーションがどのスキーマに基づいて動くか選ぶ余地がある点だと思う。これはプログラムの改修を伴うデータマイグレーションが必要なとき、徐々に移行していけるということだ。いっせーのーせ、でビッグリリースするリスクを減らせるのは大きなメリットのひとつだ。

後半は長くてろくに読んでないが、 PostgresSQL は alter table 相当の処理をしたとき読み書きテーブルロックがかからない場合があるので MySQL よりよいと言っていて、しかし NULL ありデフォルト値なしの場合は、とあり、それじゃあせっかくのスキーマの価値を大きく損ねてないか?と思った。


Postgres の拡張機能ってこうやって作るのか、というのがぼんやりわかって勉強になった。