データストアによるデータベースの利用 (1/6)
作成:2010-01-03 14:06
更新:2010-05-10 21:22
更新:2010-05-10 21:22
■MVCとデータストア
ここまでのWebアプリケーションでは、基本的にmain.pyに用意した各ページ用の処理をを行うクラスと、そこで使われるテンプレートファイルの2つによってページが構成されていました。が、実際のWebアプリケーションでは、これにもう1つ、非常に重要な要素が追加されることになります。それは「データベース」です。
Webアプリケーションでは、データは普通のアプリケーションのようにパソコンの中にファイルで保存したりできません。保存する必要があるものは、すべてサーバー側に保管し、必要に応じてそれをロードすることになります。Webでは、多数の人間がサーバーにアクセスをしますから、多くの場合、データは単一のファイルなどではなく、データベースを使って保管することになります。
Webアプリケーションは、「ページにアクセスされた際の処理(ここではMainPageクラス)」「画面表示(ここではhome.htmlテンプレート)」、そして「データベースアクセス」といったものが組み合わせられて構築されます。こうしたアプリケーション構造を、「MVC」と呼びます。これは以下の3つの要素の頭文字をとったものです。
Model(モデル)――データベースとのやりとりを管理するものです。
View(ビュー)――画面の表示を作成するものです。GAEの場合、テンプレートファイルがこれに相当します。
Controller(コントローラー)――全体のプログラムの流れを制御するものです。GAEでは、各ページ用に用意されたクラス(webapp.RequestHandlerを継承して作られる、MainPageクラスのようなもの)がこれに相当します。
このMVCという構造は、Webアプリケーションで非常に広く浸透しています。特に、データベースアクセスをコントローラーと分離し独立させることで、非常にすっきりと全体を設計できるようになります。
これまで、ビューとコントローラーについては作成をしました。残るは「モデル」です。GAEでは、モデルに相当するものは、Pythonのクラスとして定義をします。main.pyに、このモデルクラスを用意し、それを必要に応じてコントローラーのクラスから呼び出して利用するのです。
では、このモデルで利用するデータベース機能は、どのようなものでしょうか。Webアプリケーションでは、さまざまなデータベースプログラムが使われますが、GAEで利用可能なデータベースは、ただ1つです。「データストア」と呼ばれるものです。
データストアは、Googleにある「BigTable」と呼ばれる巨大データベースをGAEアプリケーションから利用するために用意されたものです。BigTableは、GoogleやYouTubeなどで使われている、Googleの根幹となる技術の一つです。
このデータストアの最大の特徴は、「データをオブジェクトとして保存する」という点でしょう。多くのデータベースは、テキストや数値などを保管する項目を持った「テーブル」と呼ばれるものをあらかじめ定義し、これにしたがってデータを生成し保存します。
が、データストアでは、保存するデータは「モデル」のクラスとして定義し、そのクラスのインスタンスとして用意するのです。インスタンスを作り、それを保存するだけで、それはデータストアに格納されます。そして必要に応じて保存したインスタンスを取り出したりして操作できるのです。(このインスタンスは「エンティティ」と呼ばれます)
多くのデータベースは、「SQL」と呼ばれるデータアクセス言語を使ってデータベースアクセスをしますが、データストアではSQLは使えません。ただし、それに似た「GQL」と呼ばれるアクセス言語を使ってエンティティを検索したり取り出したりするようになっています。
Webアプリケーションでは、データは普通のアプリケーションのようにパソコンの中にファイルで保存したりできません。保存する必要があるものは、すべてサーバー側に保管し、必要に応じてそれをロードすることになります。Webでは、多数の人間がサーバーにアクセスをしますから、多くの場合、データは単一のファイルなどではなく、データベースを使って保管することになります。
Webアプリケーションは、「ページにアクセスされた際の処理(ここではMainPageクラス)」「画面表示(ここではhome.htmlテンプレート)」、そして「データベースアクセス」といったものが組み合わせられて構築されます。こうしたアプリケーション構造を、「MVC」と呼びます。これは以下の3つの要素の頭文字をとったものです。
Model(モデル)――データベースとのやりとりを管理するものです。
View(ビュー)――画面の表示を作成するものです。GAEの場合、テンプレートファイルがこれに相当します。
Controller(コントローラー)――全体のプログラムの流れを制御するものです。GAEでは、各ページ用に用意されたクラス(webapp.RequestHandlerを継承して作られる、MainPageクラスのようなもの)がこれに相当します。
このMVCという構造は、Webアプリケーションで非常に広く浸透しています。特に、データベースアクセスをコントローラーと分離し独立させることで、非常にすっきりと全体を設計できるようになります。
これまで、ビューとコントローラーについては作成をしました。残るは「モデル」です。GAEでは、モデルに相当するものは、Pythonのクラスとして定義をします。main.pyに、このモデルクラスを用意し、それを必要に応じてコントローラーのクラスから呼び出して利用するのです。
では、このモデルで利用するデータベース機能は、どのようなものでしょうか。Webアプリケーションでは、さまざまなデータベースプログラムが使われますが、GAEで利用可能なデータベースは、ただ1つです。「データストア」と呼ばれるものです。
データストアは、Googleにある「BigTable」と呼ばれる巨大データベースをGAEアプリケーションから利用するために用意されたものです。BigTableは、GoogleやYouTubeなどで使われている、Googleの根幹となる技術の一つです。
このデータストアの最大の特徴は、「データをオブジェクトとして保存する」という点でしょう。多くのデータベースは、テキストや数値などを保管する項目を持った「テーブル」と呼ばれるものをあらかじめ定義し、これにしたがってデータを生成し保存します。
が、データストアでは、保存するデータは「モデル」のクラスとして定義し、そのクラスのインスタンスとして用意するのです。インスタンスを作り、それを保存するだけで、それはデータストアに格納されます。そして必要に応じて保存したインスタンスを取り出したりして操作できるのです。(このインスタンスは「エンティティ」と呼ばれます)
多くのデータベースは、「SQL」と呼ばれるデータアクセス言語を使ってデータベースアクセスをしますが、データストアではSQLは使えません。ただし、それに似た「GQL」と呼ばれるアクセス言語を使ってエンティティを検索したり取り出したりするようになっています。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ
「PythonによるGoogle App Engine(GAE)プログラミング入門」に戻る