くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

第16回大分県OSS研究会

2009-10-22 21:00:38 | SEまわり
○第16回大分県OSS研究会(ハイパーネットワーク社会研究所)
http://www.hyper.or.jp/article.php/2009100117342055


 というのに行ってきた。

 今回の講演の演題は「PostgreSQL の最新動向と、チューニング」というもの。


 

 初めて使った PostgreSQL は 6.5.3 で、1999年頃だったと思うが、あれから約10年。
  Apache, PHP と組み合わせた Web アプリケーションの環境として使い続けているが、あまり難しい SQL を使うこともないし、接続数もそんなに多くないし、あまりパフォーマンスを要求されるようなケースも公私ともになかったため、実は 6 系のままでも不自由はしなかったのかも知れないとも思った。

 ああ、一度だけ性能を要求されるケースがあったかな。 いや、想定してたよりも10倍くらいの利用者があって、そのときだけはいろいろパラメータをいじった気がする。


 そんな感じで、PostgreSQL に執着してはいないと思うんだが、なぜか好きなのだ。

 周囲は MySQL ユーザがそれなりにいて、各種フレームワークや CMS なども MySQL を使っているものが結構多いと思う(それだけじゃなくて PostgreSQL 非対応だったりする)。
 MySQL も使ったことありますよ。

 でも、ユーザの追加操作でなんだかイヤになってしまって、それっきり、よほど要求されない限り使わないようにしている。
 いったんユーザ設定をしてしまえば、普通に使えるし、管理用のツールもすぐれた製品があるから、よさそうなんだけどね。 まあ、ついでに言うと名前がイヤw


 最初に触った RDBMS が PostgreSQL だったということ以外に、もう一つ好きな理由は、初めて Apache + PHP + PostgreSQL でプログラムを書き始めた頃、ちょうど東京に出かける機会があり、秋葉原に立ち寄った際に、PostgreSQL の何かのイベントをやってて、ちょっとだけ、と思ってのぞいてみたら、石井さんがいた。
 こっちはただの一般ユーザで、入門書のとおりにインストールして使っているだけのヒトなので、話しかけるのも恐れ多い感じがしてたら、声をかけてくれて、CD-ROM くれました。 今でも大事に持ってます。これは。

 それっきりかなあ。 PostgreSQL 以外ほとんど使わなくなったのは。


 講演のおかげで、実は今使っているバージョンにあって知らなかった機能も分かったし、今後の方向なども説明してもらえたので、ためになりました。


 10年くらいお世話になってるので、何か貢献できるようなことがあればいいなあと思うですね。


SQL崩し(整形)ツール

2009-10-22 11:13:19 | SEまわり
 長い SQL をそのままスクリプトに埋め込むと行が非常に長くなる。 また、あとでスクリプトやソースを見たときに、何がどうなっているのか読み取るのに時間がかかるので、ある程度整形した方が良い。

 例えば、次のような SQL を PHP スクリプトに書くときは、

  
select q1.*, u.name from ( select sectionid, sectionname from section where sectionid='hoge' ) as q1 left join users as u on q1.uid=u.id order by u.name;


を、改行を入れるなどして、

  
$sql = "select q1.*, u.name ";
$sql .= "from ( ";
$sql .= "   select sectionid, sectionname ";
$sql .= "     from section ";
$sql .= "     where sectionid='hoge' ) as q1 ";
$sql .= "left join users as u on q1.uid=u.id ";
$sql .= "order by u.name";


としている。


 ただ、こういう作業は結構めんどくさい。 タイプ量も当然増えるし。
 やりたくないけど、最近は数日コードを見ないだけで、それが何をしているのか分からなくなってきてるので、こういう作業や十分に詳しい説明コメントを入れる作業は省けない。

 それでも、なんとか省力化したい。

 Windows のツールには、CSE というのがあり、これに長い SQL を貼り付けて、Ctrl+Q とすると、ぱらっと展開してくれる。

こんな感じ。

  
SELECT
  q1.*,
  u.name
FROM
  (SELECT
    sectionid,
    sectionname
  FROM
    section
  WHERE
    sectionid='hoge'
  ) as q1 left join users as u on q1.uid=u.id
ORDER BY
  u.name


 ちょっと崩しすぎな気はするけど、一発で崩してくれるので助かる。
 CSE の配布元は以下。

   ○つみきWeb
   http://www.hi-ho.ne.jp/tsumiki/


 CSE は便利なんだが、普段作業をしているのは Emacs 上なので、Emacs に SQL 崩しをやってくれる機能があると便利なんだけどなあ。
 さっと検索しただけでは見つけきれなかった。

 どなたか、ご存じならお知らせ頂けるとうれしいです。