2013年7月3日水曜日

PostgreSQL9.3の最新事情

先月、6/22にJPUG 2013 夏セミナー+JPUG総会に行って来ました。



でセミナーは遅刻(理由は色々あるんですっ!)したので全部聞けませんでした。
なので自分の学習的意味も含めてPostgreSQL9.3のおさらいをしたいと思います。

さらにコレもすごく参考になるのでオススメ資料です。

PostgreSQLバックアップ・リカバリ入門


ってことでおさらい。

○ PostgreSQL9.3の知っておくと嬉しいこと

・9.3のリリースは9月
・Updatable Views(更新可能ビュー)
・Materialized View(実態のあるビュー)
・JSON型の強化
・Large objectが最大→4TERAに強化
・Foreign data wrappers(外部データラッパー)

細かいことは資料を見たほうがいいですw
というか非常にクオリティが高いです。
(僕はいつも情報密度が薄くてごめんなさいごめんなさいごめんなさい)

で僕は今回、特に重要なことはFDW(外部データラッパー)とJSON型だと思ってます。
なぜかというとこれ。

Red Hat Enterprise Linux 7でもMySQLに代えてMariaDBを採用

これはこの業界には非常に大きなニュースだと思ってます。
今後もRDB自体の必要性は変わらないと思います。
となると考えれるのはどのDBに移行するか。
MariaDBが注目されてますがHerokuなどPostgreSQLを使ったサービスは日々増えています。
そうなると大事なのは既存のシステムからのマイグレーションと連携です。
正直アーキテクチャの違うRDBの移行は簡単な話ではありません。
ですのでレガシーシステムと如何に連携するかと言うのは非常に大切なことです。
FDWですべての問題が解決するわけではありませんが可能性を感じる選択肢だと思います。
過去のシステムとの連携が問題でMySQLを選択されている方は一度はPostgreSQLを検討して損はないと思います。

興味がある方は是非とも花田さんが作られた以下の資料をご覧下さい。

9.3で進化した外部テーブル

そしてJSON型。
現在、多くのWebAPIはJSONを吐きます。
また多くの言語はJSONをサポートしており、利用頻度はXmlを抜いていると言っても過言ではありません。
近年ではJQueryやAnglerJSなどのJavaScriptライブラリやフレームワークの活躍でより一層フロントエントでのデータのやり取りは リ ア ル タ イ ム にJSONでやり取りをするようになっています。
なので業務でJSONと付き合う機会は多いでしょう。
するとゆとりさんがおっしゃってるような


という危惧が出てくるのもわかります。
まさにSQLアンチパターンのジェイウォーク(信号無視)です。




実際に私もtext型にJSONを始めとする非正規化のデータをまるっと突っ込んでいるテーブルを見たことがあります。
(EC-CUBEのセッションとか苦しんだなぁ・・・)
WTMでもこの話題は取り上げました。

WEBエンジニアが知るべき3つのSQLアンチパターン


実際に非正規化データで困るのはUpdateと中に入ってるデータの検索。
これは今後も必要に迫られることが多々あると思います。
PostgreSQLはこの事に対して専用の型を用意して前向きな打開策を提示してくれます。
JSON型自体、9.2から入ってきてまだまだ機能不足ではありますがFDWと同様に将来性を感じる機能の一つです。
つまり、PostgreSQLは多くのシステムと連携する窓口を広く持っている(持つ方針で進んでいる)ということです。
現在、NOSQLを始めとした多くの技術が適材適所に使われています。
これらとのインターフェイスを柔軟に持つということは凄まじいスピードで起こるこの多様化に対して大切な答えだと僕は思っています。
ということで純粋な性能向上や安定性も重要なことですがPostgreSQLは多様化に対して面白いアプローチをしてきてると思います。


ということで今、PostgreSQLが熱い!!
(なおこの記事は二週間かけてかかれております。 )