今更ながらLAMPな環境のプログラムを書くことになりそうなのでL(inux)とA(pache)は置いておいて、M(ySQL)とP(HP)の環境についてまとめてみることにする。
PHP
まず、PHPから。とりあえず現状では3つの選択肢がある模様。
カッコ内は現在の最新版
- 5.1.x
- まだ開発中なので実用になるかは不明
- 高速化されたらしい?
- その他は調査中
- 5.0.x(5.0.4)
- オブジェクトオリエンテッドな拡張がされているらしい
- Javaを真似した様なものらしくあまり評判は良くない?
- 速度が遅くなったカモ
- まだ4系の方が人気でライブラリ、フレームワークなどの対応が甘い
- Unicodeの対応など文字コード関連の修正が入っている
- MySQLがデフォルトではなくSQLiteがデフォルトのDBに(でもMySQLの方が使われている気がする)
- 4.4.x(4.4.0)
- 5系が出た後に出たみたい
- あるフレームワークは4.3.xや5.0.xで動くコードなのだけども動かなかった
- とりあえず後で調べてみる
- 4.3.x(4.3.11)
- これが一番使われている気がする
- 対応したライブラリも多い
とりあえず適当に書くとこんな感じかな。個人的にSQLiteは気になっているので5系を使ってみたいけど、速度的な問題及び枯れ具合を考えると現状4.3.11がベストな気がする。4.4は調べてみるけど、どうも仕様が変わってるくさいので手を出すのは危険かもしれない。
MySQL
これまた色々選択肢がある。PHP以上に厄介な気がする。
- 5.0.x(5.0.9)
- 開発中の物なので実運用では怖い
- VIEWが実装された
- ストアドが実装された
- 4.1.x(4.1.13)
- 速度が大分遅くなったらしい
- 文字コード関連の修正が入ったらしい(これのせいで遅いのかも) ただし、配布されてるバイナリはラテンでビルドされてるらしく日本語を通すには自分でビルドしないとダメかも
- サブクエリが実装された
- 4.0.x(4.0.25)
- 速度はマァマァ速いらしい
- UNIONが実装された
- InnoDBがメインのバイナリに内蔵されるようになった。これはトランザクションに使うものだったはず。今までは別に存在して別途セットアップが必要だったはず
- 3.23.x(3.23.58)
- トランザクションが実装された(InnoDB/BDBの2択?)
- トランザクションをONにすると遅くなると聞いた気がする。
- 3.22.x(3.22.32/Winバイナリは3.22.30まで)
- 速度的には最強らしい。未だにこれで作られてる所もあるとか。
MySQLの場合どんどん機能的にはまともなDBに近づいていく反面速度が犠牲になっているという印象が。トランザクションやらサブクエリやらViewやらは無いと困る人も多いと思うし。逆にとりあえずデータだけ詰めておいてがんがん検索だけかけるような形だと3.22.xが最強なんでしょう。案件にあわせて選択する必要がありそう。問題は5.0は現状選択肢として考えないとして4.1と3.22でどれだけの速度差があるのかという事。こればかりは試してみないとねぇ・・・。
そういやフォームにSQL書かれて意図しないSQLが実行されるというセキュリティホール(SQLインジェクションって奴ですな)があるけど、サブクエリが無ければこういうのも起き難いのかも。そういう点では新人教育とかの場合は4.0系あたりから入らせるのも手かもしれない。(本当はちゃんとバリデーションとかを行うとかっと教育するのが正しいと思いますが・w・)