自己紹介

自分の写真
最近、iphoneアプリをリリースしました。
UxU
無料アプリですので、是非遊んで下さい。 第二弾アプリ:工場夜景写真集 今後も色々なアプリをリリースしていく予定です。
次は、コスプレ or 漫画 or 騎乗日記

2011年5月28日土曜日

postgreSQL 9.0.4と8.4について

ホットスタンバイ機能

待機系サーバを参照用として利用できる。
このことにより、成績閲覧の様な処理を[代替系]
DBにアクセスし、
更新系処理は[本番]DBにすることで、負荷分散も可能となります。

あと、ホットになったので、同期がいつでも確認できるようになりました。
以前までは、ウォームスタンバイだったので、アクセスが不可能でしたので、
実際のデータがどのようになっているかは、同期を解除してからではないと見えない
状況でしたので、保守が非常に楽になります。

設定方法などは次回、書きます。

Window関数

・現在の行 (CURRENT ROW) を基準にした処理 ROWS n PRECEDING/FOLLOWING が
追加され、
移動平均の計算ができるようになりました。 前後のデータ取得が容易になりま
した。



・ある区分でソートしながら、その区分ごとのランキングも容易になりました。

SELECT member, kbn, age ,
RANK() OVER(PARTITION BY kbn ORDER BY age DESC) rank,
DENSE_RANK() OVER(PARTITION BY kbn ORDER BY age DESC) dense_rank,
ROW_NUMBER() OVER(PARTITION BY kbn ORDER BY age DESC) row_num
FROM Members
ORDER BY kbn, rank;

参照:http://lets.postgresql.jp/documents/technical/window_functions/



DO関数

・sql内でストアドが書けるようになり、ちょっとしたプログラムだったりした
場合には
関数化するより、sql内で書けた方が楽ですよね。

ただ、今のところ使用したことがないので、使用した時に詳しくまとめます。


再帰SQL

参照結果をさらに抽出するようなSQLでも一回のクエリーで書けるようにな
ります。

WITH RECURSIVE r AS (
SELECT * FROM tree WHERE id = 1 -- id=1 とその子孫を列挙
UNION ALL
SELECT tree.* FROM tree, r WHERE tree.parent = r.id
)
SELECT * FROM r ORDER BY id;

これも、使用した時に詳しくまとめます。

■PL/pgSQLにCASE構文が追加された
 ・今までは、IF-ELSEIF-ENDIFの中にIF文を入れ子した状態で記述しないとい
けなかった
 ものがCASEでかけるようになりました。
 これは、見た目もスッキリできて良いですね!


感想
------
oracleと遜色のないDBになってきましたね。
昔、登録系が遅いと言われておりましたが、そんな事も今言っていると逆に笑わ
れます。
負荷分散・フェイルオーバーもpgpoolⅡを利用することで可能です。
Oracleはすごく価値&信頼性&保守性とも抜群に良いのですが、価格がものすご
く高くなります。
フリーDBやクラウドDBで小さな規模の会社でも大きな事業が出来る時代です。
頑張って、やってやりましょう!


元ネタ:http://lets.postgresql.jp/documents/technical/9.0/1#sql

0 件のコメント:

コメントを投稿