タグ

ブックマーク / thinkit.co.jp (4)

  • [ThinkIT] 第1回:MySQLストレージエンジンの概要 (1/3)

    連載で取り上げるMySQLは、非常に人気の高いオープンソースのRDBMSです。このMySQLの大きな特長は、ストレージエンジンを選択できるところにあります。そこで連載では、MySQLのストレージエンジンに焦点をあて、様々なストレージエンジンの特長や構造を解説していきます。最後まで、お付き合いください。 MySQLの概要についてはご存知の方も多いと思いますが、復習の意味も込めて簡単に紹介します。 MySQLは、MySQL社を中心として開発が進められているRDBMSで、オープンソースの標準的なプラットフォームを意味する「LAMP」という言葉(Linux/Apache/MySQLPHP)に採用されるほど有名なオープンソースです。ライセンスとしては、GPLと商用ライセンスのデュアルライセンス形態で提供されています。バージョン5.0よりストアードプロシージャやトリガなどをサポートし、他のRDB

  • [ThinkIT] 第1回:SQLインジェクションによるデータベース操作 (1/3)

    SQLインジェクションでは、クエリなどの任意データを、データベースが実行するSQL文に挿入します。挿入されたクエリは、意図しないデータを検索したり、データベースの情報を変更したり削除したりするというように、様々な操作をデータベースに行います。問題を実証するために次の例を見てみましょう。 // 問題を実証するための入力 $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 上記の関数内では、ユーザが指定した名前とnameカラムの値が一致したデータをusersテーブルから取り出すことを想定しています。普通、$nameには、iliaといった文字列のように、アルファベットとスペースからできた文字列が格納されています。 しかしここでは、$nameにまったく新しいクエリ

  • [ThinkIT] Part4:PDO(PHP Data Object)データベース抽象化レイヤクラス(3) (1/2)

    Part4の第1回で紹介した図1のモジュールの位置付けと結果がほぼ一致しました。PDOでは、単純なSQLであれば、ネイティブドライバとほぼ同等の性能が出ているようです。実行性能が求められるケースでも、共通APIが提供されているPDOを利用すれば、異なるDBMSに対応できるスクリプトの作成が容易に行えるでしょう。また、プレースホルダを使ったケースでも性能はほとんど変わらないことがわかりました。対比としてPEAR::DBのプレースホルダを使ったケースでは、パラメータの正当性チェックや、エスケープ処理が行われるため、予想したとおり、プレースホルダを使用しないケースと比べ遅くなっていることもわかります。 今回測定に用いたPostgreSQLはPREPARE文が実装されているので、これも一緒に測定してみました。結果を見ると、やはりPDOのprepare()メソッドは、プレースホルダとしての機能しか実

  • [ThinkIT] 第1回:Webアプリケーションフレームワークとは (1/4)

    近年のWebアプリケーション開発は大規模化が進み、基幹システムなどの一角を担うまでになってきています。また、Webアプリケーション開発はレガシーなシステム開発に比べて手間のかかる部分が多いにも関わらず、開発にかけられる工数は短縮化の傾向にあります。 そのため、案件の大規模化で開発に携わる人数も増える傾向にあり、開発チームの各々がWebアプリケーションのライブラリを別々に制作してしまい、同様の機能を持ったライブラリが複数存在してしまったり、またUIを担当するデザイナーとビジネスロジックを担当するプログラマが、いざそれぞれの部分を組み合わせようとしたらうまく機能しなかったりといった様々な問題が出てきます。 このような背景から、それらの問題に対するソリューションのひとつとして現在、開発現場ではWebアプリケーションフレームワークを用いた開発スタイルが注目され、実際に多くの開発会社がWebアプリケ

  • 1