【初心者目線】Webアプリケーションの開発 第10回を書きます。
【初心者目線】Webアプリケーションの開発 第10回
1. Webアプリケーションシステムの構成
私たちが普段利用しているWebアプリケーションは、HTTP通信によりクライアントとサーバがやり取りすることにより実現しています。
今まで何度も登場した「サーバ」ですがWebサーバ、アプリケーションサーバ、データベースサーバなどの種類があり、実際のシステムではそのシステムの規模や特性に合わせ構成が変化します。
1-1. サーバサイドの役割
しかし、WebアプリケーションではWebサーバとWebクライアントが稼働するコンピュータが必要です。
さらに、Webサーバ側は下図のように複数のコンピュータが連携し、システムの動作を実現しています。
上記ではサーバサイドに役割分担している青、緑、黄の3台のサーバが存在していますが、使用するシステムの規模により何台でどのように役割分担するか構成が異なってきます。
小規模なシステムでは、1台のWebサーバでまかなうことも珍しくありません。
しかし、大規模なシステムでは数十台から数百台におよび小規模、中規模のシステムとは役割も異なります。
小規模なシステムでは処理する内容も少なく、1台のWebサーバで十分に対応できます。
これが中規模になると処理する内容も多く複雑になり1台のWebサーバで処理するには大きな負担になります。
よって、Webサーバを3台前後に増やしてそれぞれが特定の処理に専念することにより、負担が分散され処理速度も向上します。
さらに、大規模システムでは数百台のWebサーバに処理を分散させ、さらなる処理速度の向上を行っています。
また、大規模なシステムの例としてネットショッピングサイトや旅館の予約サイトなどが挙げられますが、これらのサイトは24時間365日安定して稼働することが求められているので、Webサーバの故障によりシステムが停止すると非常に大きな問題になります。
それを防ぐため大規模なシステムではとあるWebサーバが故障しても別のWebサーバが処理を肩代わりし、システムの停止を防止するような構成にもなっています。
このように一言にWebサーバと言ってもシステムの規模やWebアプリケーションの使用目的により、役割が大きく異なってきます。
Webアプリケーションを開発する際はサーバサイドのコンピュータの役割も意識しておかないと正しい開発を行うことができません。
また、サーバサイドの知識が不足していると、不具合が発生した際に原因を突き止めることも困難になります。
1-2. データベース管理システム
これらのデータを蓄積・検索するために「データベース」と呼ばれるソフトウェアが使用されるようになりました。
ここでは、ネットショッピングサイトを例としてデータベースの説明を行います。
ネットショッピングサイトをもつ企業では商品を購入したお客様の情報を保存しています。
例えばWebサイトから購入したユーザについて以下のような情報を残しているとします。
このような情報を残すことで当日や月間・年間の売上を把握することができます。
情報が大量に蓄積されてくると、売上以外の情報も得ることができます。
例えば商品別の売り上げを把握し入荷の調整や人気商品に関連する商品を新たに取り扱うなど、サイト(ショップ)の運営に関わる部分の判断に役立ちます。
また、お客様の過去の注文履歴を参照することにより、好みのジャンルの商品をおすすめする機能を実装することもできます。
しかし、注文情報は注文ごとに毎日大量に記録されるため大量の注文票から目当ての情報を閲覧したり、売り上げ情報の集計、お客様ごとの注文履歴の把握などを行うとなるとかなりの時間が必要となり、注文票から得られる情報のメリットより集計にかける手間というデメリットが大きくなってしまいます。
このデメリットを解消するため「データベース」を使用し、コンピュータでデータの検索や修正を行うようになりました。
このデータベースの取扱いに特化したソフトウェアのことを「データベース管理システム(DBMS)」と呼びます。
DBMSを利用することによりコンピュータ上にデータベースを構築することができるため、大量の情報を記録することができます。
また、記録した情報を瞬時に検索したり集計を行うことができます。
1-3. データベースのCRUD操作
データベースについての詳細を解説する前に、どのような情報操作ができるのか説明を行います。
データベースに対する情報の操作は「生成(Create)」「読み取り(Read)」「更新(Update)」「削除(Delete)」の4種類存在し、それぞれの操作の頭文字より「CRUD(クラッド)」と呼ばれています。
以下に説明するものはデータベースに対する情報操作の基本になります。
a)生成(Create)
情報をデータベースに新規登録することを指します。
b)読み取り(Read)
データベースに登録されている情報を読み取ることを指します。単純にデータを読み取るだけでなく、様々な条件を指定してその条件に一致する情報を抽出することもできます。
c)更新(Update)
データベースに登録されている情報を更新することを指します。単純にデータを更新するだけでなく、様々な条件を指定してその条件に一致する情報をまとめて更新することもできます。
d)削除(Delete)
データベースに登録されている情報を削除することを指します。単純にデータを削除するだけでなく、様々な条件を指定してその条件に一致する情報をまとめて削除することもできます。
1-4. DBMSで大量のデータを管理する
注文票をデータベース化するにあたり、上図のように「顧客」「商品」「注文」「注文詳細」という表を準備しました。
データベース上ではこのような表によって情報を管理しています。
これを一般的に「テーブル(table)」と呼びます。このテーブルは利用者が自由に作成することができます。
各テーブルの顧客番号、商品名、注文番号などの列の項目の事を「カラム(Column)」と呼びます。
また、横一列の各行のことを「レコード(record)」と呼びます。
まず注文テーブルから確認していきます。このテーブルには注文が入るたびに一行ずつレコードが追加されていきます。
3行目の赤枠部のレコードが今回説明対象の注文データで、顧客番号が「C002」となっています。
次に顧客テーブルを確認すると顧客番号が「C002」であるレコードの氏名は「田中太郎」であり、この注文は田中太郎さんが行ったものであることが分かります。
そして、注文テーブルの注文番号「OH003」を注文明細テーブルで確認すると、商品ID「G001」「G002」「G003」の商品をそれぞれ2個、1個、2個と注文しているようです。
さらに、これらの商品IDをもとにして商品テーブルを確認すると、それぞれの商品名が「商品A」「商品B」「商品C」であることも分かります。
このように、データベースでは様々なテーブルに情報を分散して登録しておき、参照する際はテーブルのカラム同士を紐付けることによって必要とするデータを参照することができます。
今回は注文票をデータベース管理するために4つのテーブルを準備しましたが、一般的にはこのような作業を「データベース設計」と呼びます。
データベースを利用するシステムでは必ず必要となる作業ですが、どのようなテーブルとカラムを準備し、データの格納方法を考える設計は難しい作業になります。
2. 第10回 まとめ
今回はWebアプリケーションシステムを構成しているサーバの役割や、データベース(DBMS)についてテーブルやカラムなどの基本的な技術を中心に解説しました。
次回以降も引き続きデータベースを中心に紹介していきます。
次回も引き続きWebアプリケーションの構成について、データベースから情報を抽出する方法を中心に
解説予定です。