プロが教える店舗&オフィスのセキュリティ対策術

現在、Google App Engineの環境で学習しています。

GAEではデータベースにBigTableを用いていると学習しました。
しかし、実際にデータベースの中を見てみると、DatastoreとBlobstoreに分かれています。
このBigTableとDatastore&Blobstoreの違いは何なのでしょうか?

また、DatastoreとBlobstoreの2つの違いは何でしょうか?
Blobstoreの方が大容量のファイルを格納できるという理解で良いのでしょうか?

以上、宜しくお願い致します。

A 回答 (3件)

これは、単純に「APIの違い」と考えればよいと思います。

別に、GAEのシステムの中にDatastoreとBlobstoreという2つのデータベースがあるわけではありません。Googleの基盤にはBigTableというデータベース環境があり、それを利用するためのAPIとしてDatastoreとBlobstoreがある、と考えればいいと思います。

両者の最大の違いは、保管できるデータサイズです。Datastoreは最大データサイズが1Mbという制約がありますが、Blobstoreでは最大2GbまでOKです。

もう1つの違いは、Blobstoreは金がかかる、という点ですね。Blobstore自体は有料ではありませんが、GAEでは無料で保管できるデータサイズは1Gbまでです。従って、Blobstoreででかいファイルをアップしようと思えば、有料サービスに切り替えて保管できるデータサイズを拡張しないといけません。

他、APIが異なりますので利用する際のこまかな関数・メソッドのたぐいはもちろん違ってきます。また両者のデータは互換性がないので、例えばBlobsotreに保管したデータをDatastoreのデータとして取り出したりはできません。

この回答への補足

回答ありがとうございます。


質問に付けたしなのですが、
「Googleの基盤にはBigTableというデータベース環境があり、それを利用するためのAPIとしてDatastoreとBlobstoreがある」
のAPIとは、Slim3の事でしょうか?

Slim3がBigTable上にDatastoreとBlobstoreという層を作って、データ操作を行っているという解釈で大丈夫でしょうか?

宜しくお願い致します。

補足日時:2013/01/07 22:55
    • good
    • 0

>そこで、Slim3を使うことで、あいまい検索などRDBの様にBigTableを扱える様になる。



いえ、Slim3は、GAEで「MVCアーキテクチャー」によるWebアプリケーション開発を行うためのものです。データベースのためのものというわけではありません。(データベースアクセスを簡略化する機能も含まれていますが)そもそもSlim3導入で、あいまい検索ができるようになるわけではありません。というか、GAEにはあいまい検索のためのAPIも標準でありますから。

最近の本格サーバーサイド開発では、MVCアーキテクチャーによるフレームワークを利用して開発するのが主流となりつつあります。Ruby言語におけるRuby on Rails、PHPにおけるCakePHPといったものがこれに相当します。

MVCアーキテクチャーは、アプリケーションをモデル(データベース管理)、ビュー(画面表示担当)、コントローラー(ロジック担当)、という3つの要素に整理し、それぞれを実装していくことでアプリケーションを構築していくという考え方です。データベースアクセスなども、SQLのクエリーを直接書いたりせず、フレームワークに用意されているモデルクラスのメソッドを呼び出してアクセスするようになります。フレームワークを使って抽象化することにより、データベースなどが変更されてもコードを書き換えることなく、設定の変更だけで動かせるようになります。

GAEは、基本的な機能はAPIですべて提供されますが、MVCアーキテクチャーのための基盤は標準では用意されていません。そこでリリースされたのがSlim3です。これを導入することにより、直接APIをコールせず、モデルクラスを定義してメソッドを呼び出すだけでデータベース(この場合はBigtable)にアクセスできるようになります。

ただし、「Bigtableにアクセスしやすくする」ためにSlim3が作られているわけではありません。Slim3は、あくまでMVCアーキテクチャー実現のためのものです。それの導入により、いわば副産物的にデータベースアクセスも簡単になる、というだけのことです。


Bigtableによるデータベースアクセスに、なにか特別なものを見ているようですが、Bigtableだろうとなんだろうと、要はただのデータベースです。Bigtableは、SQLではなく、NoSQLですからちょっと違和感を覚える人はいるでしょうが、NoSQLはHTML5のWeb DBからMongoDBなどまで、今ではごく普通に使われているデータベースであり、それほど特別なものでもありません。Bigtableというデータベース機能のために、なにか特別な技術などが要求されるかのような考えは不要です。そのへんのデータベースと同じです。
    • good
    • 0

>のAPIとは、Slim3の事でしょうか?



いいえ? Slim3というのは、Googleとは関係ありません。まったく別のところが開発している、GAE上でMVCアプリケーションを構築するためのフレームワークです。ここで言っているAPIというのは、GAEのシステムに最初から搭載されているAPIのことです。

GAEというのは、Googleのサーバー内にユーザーが利用できる区画を用意し、そこからGoogleのシステムにあるサービス(データベースやGmail、Googleアカウントの認証など)を利用できるようにしたIaaSです。この「Googleのシステムのサービスを利用する」というためには、そのために何らかのプログラムが用意されていないといけません。それがAPIです。

GAEのサイトにあるドキュメントを見れば、DatastoreとかUsersとかいったさまざまな機能があり、それらを利用するための関数やメソッドの説明などがあります。これらの関数やクラスが、APIの具体的な内容です。つまり、GAEで動くWebアプリケーションというのは、サーバーサイドプログラムの中からこれらのAPIを呼び出して各種の機能を利用しているわけです。

この回答への補足

回答ありがとうございます。

何度も質問して申し訳ありません。もう一回だけ確認させて下さい。

GAEで使用されるデータベースはBigTableであり、それを利用する為のAPIがDatastoreとBlobstore。
ですが、Datastore APIはクエリなどの制限が多くて使いづらい。
そこで、Slim3を使うことで、あいまい検索などRDBの様にBigTableを扱える様になる。

という解釈でよろしいでしょうか?

以上、宜しくお願い致します。

補足日時:2013/01/08 22:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!