2012年7月20日金曜日

変態アドベントカレンダー in Summer : ATNDの7日目

この記事は変態アドベントカレンダー in Summer : ATNDの7日目です。

昨日の記事はdproject21さんの

たった一人で数万ステップを扱う変態プロジェクトを支えた技術

でした。
私は数万行もソースを読み書きとか経験ありませんので勉強になりました。
また他の方たちのように変態的なプログラミングスキルはありません。
ですので今日は最近一番勉強してるPostgreSQLの話書きます。

PostgreSQLと言えば高機能・高可用性から多くの実績があります。
コミュニティも活発でソフトウェアのバージョンアップも早く、また日本語ドキュメントも豊富。
(ここまで宣伝)

そんなPostgreSQLですが先日お邪魔した勉強会でこんな場面がありました。



という大変素晴らしい状況になった理由は
ursmさんの素晴らしい発表のおかげ(発表資料)です。
というわけで今日はPostgreSQLの変態的な素晴らしいところを少しだけお伝えしようと思います。

■データ型
ursmさんは配列型を取り上げており、素晴らしい反響でした。
参考までにデータ型の最新のドキュメントはこちら
ぱっと見ても色々データ型がありますね。
その中でも変態的なのは

・ 論理値データ型
・ 幾何データ型
・ ネットワークアドレスデータ型


あたりでしょうか。
というか複合型とか類似データ型とか変態的過ぎて私も勉強不足です(*´ω`*)
例えば幾何データ型を使うと位置情報の計算もスムーズ?に実装できます。
実際に私も使ったことがありますので参考までにどうぞ
データ型に関しては使い方次第で凄く便利になるので是非。

■参照系
ursmさんは中間参照→LIKE '%hoge%'でもINDEXが有効になるpg_trgmのお話でした。
全文検索については9.1以降でも強化されており、ぜひ一度こちらのドキュメントを一読ください!!
そして私がオススメする参照はSQLのウインドウ関数
MySQLを普段使ってる人はあまり馴染みがないかもしれません。
実際の使い方はこちらがわかりやすいですね。
要は行を集約せずに比較することができます。
例えば県別に並べたお店のデータを人気順に並べたい。
こういった場合は県でPARTITION BYして人気データのカラムでソートしてやれば出ます。
これは大変便利です。

以上のとおり、触りの部分ばかりでしたが機会があれば是非PostgreSQLを使ってみてください。
他にもPL/SQLであったり、レプリケーションであったりと取り上げたいところは多々あります。
ですが今日のところは仕事中なのでこのへんで。
明日はtanago238さんです。
どんな変態的な内容なのか楽しみですね!!
それでは引続き変態アドベントカレンダー in Summer : ATNDをお楽しみください。