Webアプリケーション開発の 基本的なポイント 株式会社びぎねっと 代表取締役社長 宮原 徹([email protected]) http://Begi.net/ 今日のアジェンダ • どうやってWebアプリケーションのための データベースを選ぶか – 機能 – 性能 • 文字コードを理解する – WebアプリケーションとDBにおける文字コード http://Begi.net/ 「道具」としてのDBの選び方 どうやって使うのかを前提に • 使うための情報が豊富であるか? • 必要な機能が実装されているか? • 自分で測定してみたベンチマークで性能が 出ているか? • 適正価格であるか? • サポートが提供されているか? • オープンソースであるか? http://Begi.net/ どうやってデータベースを使う? 目的指向・DOA(*)で考えよう(データの5 W1H) • 誰が使うデータですか? • 何のためのデータですか? • どんなデータですか? • どれぐらいのデータですか? • どうやって使うデータですか? etc…etc… これらの要素が絡み合ってデータの性質が決定する。 そしてその性質に合わせてデータベースを選ぶ。 *DOA:Datahttp://Begi.net/ Oriented Approach 例)Webによる会員システム • ユーザーインターフェースは全てWeb • 会員情報を中心に関連データが存在 – ER図はそれほど複雑ではない • データの検索/入力/更新の頻度見積もり – – – – 検索が最も多いと仮定 ある程度の頻度で入力が発生 更新はあまり無い 削除はとりあえず問題にしない http://Begi.net/ 例)Web会員システムを分析 • Webアプリケーションにおける処理頻度は概ね以 下の通り 検索≧入力>更新>削除 • トランザクションが必要となる一貫性を維持した 更新処理が必要かどうかはアプリ次第 – そもそもWebアプリは仕組みとしてトランザクション処 理が難しく、不向き – トランザクションの同時並行処理はリソースを消費し、 パフォーマンスを低下させるおそれがある http://Begi.net/ Webシステムに適したDBとは? • リソース(特にメモリ)を浪費しない • データ量・回線速度相応のパフォーマンス – どんなに高速なDBでも遅い回線ではオー バースペックになることも • 適切な開発環境・ミドルウェアが選択肢に ある – 商用ソフトウェアからのサポート – スクリプト言語系(Perl,Ruby,PHP,Python…) – ODBC,JDBCなど http://Begi.net/ パフォーマンスについて • きちんとしたスキーマ設計 – 正規化をきちんと行い、場合によっては非正規化 • 正しいインデックス – インデックスは張ればいいというものではない • 適切なSQL – 条件文の書き方が速度を大きく左右することもある • 最適な物理設計 – ディスク、速いですか?メモリ、積んでますか? • ボトルネックの割り出し – 遅いのはDBのせいとは限らない http://Begi.net/ パフォーマンス比較 • Oracleは別格なので比較対象外 • 比較試験条件 – 新郵便番号データ×3(24MB・37万件) – メモリ64MB(フリーメモリ3MB程度まで圧迫) – 曖昧検索処理(インデックス無し) • MySQL:PostgreSQL=1:6(所要時間) • Vaccum実行直後で1:1.5程度まで短縮可能 – 全件更新処理 • PostgreSQLは更新を行う毎に速度低下(要 Vaccum) http://Begi.net/ 文字コードについて http://Begi.net/ 文字コードって何? • 画面等に表示される漢字は、プログラム内 部ではバイト(ビット)で表現される • 文字コードとは、この「内部コード」と「表示 される漢字」の「対応関係」のことである – 文字コードの例:SJIS,EUC,Unicode,ASCII等 • 表示する漢字の文字コード(表)が内部 コードと異なっている場合、「文字化け」が 発生してしまう http://Begi.net/ 様々な所に存在する文字コード Apache PHP クライアント ブラウザ PHPファイル 文字コードが存在する場所 •クライアントブラウザ •Apache(HTTP出力) •PHP(内部) •PHPファイル •データベース データベース http://Begi.net/ 文字コードのセオリー • 文字コードを統一する – SJISならSJIS、EUCならEUCでファイルからDB まで全てを同じ文字コードで作成する – 文字コード変換機能は出来るだけ使わない • 見えないところに気を使う – HTMLのMETAタグ内のContent-Type charset などでブラウザの動作が変わる http://Begi.net/ 文字化けした時は? • 各所の文字コードを再確認 – UNIX系のソフトはデフォルトがEUCになって いるため、文字コードの不整合を起こすことが 多々ある – ブラウザの設定で言語、文字コードエンコード の確認 – 最低、SJISとEUCの両方に対応し文字コード 変換を行うことの出来るエディタを使おう http://Begi.net/ HTMLフォームの注意点 • ブラウザによって動作が異なるが、受け 取ったHTMLフォームの文字コードで入力 データを送信 • ブラウザの種類、バージョンによってはバ グ(仕様?)で送出文字コードが固定され てしまったりするので、古いバージョンのブ ラウザなどを使っている場合には注意 • 携帯の場合には、絵文字に注意 http://Begi.net/
© Copyright 2025 ExpyDoc