今からスタート! PHP

第9回 データベースにアクセスするための準備

この記事を読むのに必要な時間:およそ 2 分

プログラムを設計する上で注意すること

データ保護やセキュリティ確保以外でも,DBアクセスを行うプログラムを設計する上で注意すべきことがあります。以下にその代表的なものを列挙し,これらについて説明していきます。

  • a. 文字コードの変換(ブラウザ→DB/DB→ブラウザ)
  • b. エラー対策(DB接続/SQL実行など)
  • c. SQLのチューニング
  • a. 文字コードの変換(ブラウザ→DB/DB→ブラウザ)

    Webブラウザ画面に表示する文字にも,データベースに保存する文字にも,日本語が用いられる場合は,両者間の文字コードを変換する処理が必要になる場合があります。

    文字コードが両者で統一されていれば,ほぼ問題ないのですが,それでも安心できないことがあります。というのは,両者が共に文字コードを「シフトJIS」に設定している場合でも,文字とコードの配置に微妙なずれがあって,いくつかの文字が化けてしまうということがあります。

    入力可能な文字が限定できる場合は,このずれを回避することもできますが,個人情報やユーザーのコメントなど,一言一句まですべて保存・表示しなくてはならない場合には工夫が必要になります。

    b. エラー対策(DB接続/SQL実行など)

    DBサーバは,Webサーバとは別で起動・停止されるものです。ですから,エラーの発生によってうまくアクセスできなくなることがあります。エラーとは,たとえば以下のようなものです。

    • アクセスしたのにDBサーバが起動されていない(メンテナンス,停電など)
    • アクセスの途中でDBサーバが停止してしまった(アクセス殺到時など)
    • アクセスに用いたSQLに間違いが混入していた(テスト不十分など)
    • データの保存状態に異常を来してしまった(プログラムの不具合など)
    • データの保存容量が不足している(システム管理不十分など)

    このように,処理の実行中に起こりうるエラーを想定し,それぞれの場合に応じた処理を適切に行えるように設計を行う必要があります。このときもデータの保護やセキュリティのことを忘れてはなりません。

    c. SQLのチューニング

    チューニングとは,アクセスにかかる時間をより短くするために工夫することをいいます。何を工夫するかというと,DBサーバ内部におけるデータアクセス時の動作です。PHPプログラムからアクセスするときに実行させるSQLの記述によってこの動作が変わります。それを利用して,少しでも早く目的のデータを参照できるようにするのです。

    ある程度のところまでは,DBサーバが最適化という処理によって自動的にチューニングを行いますが,それでも専門家から見ると改善の余地が残っています。そこから先は開発者の工夫次第というわけです。これを行うには,SQLを受け取ってから参照するデータの一覧を得るまでに行われるDBサーバ内部の動作について熟知していなくてはなりません。

    データベースは情報システムの基盤として,専門の担当者が置かれることもあるほど重要な位置を占めています。そのため,取り扱うにあたって上記をはじめとしたさまざまな注意が必要です。どんな点に注意すべきかをあらかじめ知った上で,データベースを扱うようにしてください。

    著者プロフィール

    沖林正紀(おきばやしまさのり)

    SE/プログラマを経て,WebアプリケーションやXMLなどについて雑誌記事や書籍の執筆活動を始める。大手メーカで製品資料の作成や,セミナーの講師を担当したこともある。現在は,取材記事や製品レビューなどに執筆活動の幅を広げる一方,プログラミング教材の開発も手がけている。

    著書