現在、Google App Engineの環境で学習しています。
GAEではデータベースにBigTableを用いていると学習しました。
しかし、実際にデータベースの中を見てみると、DatastoreとBlobstoreに分かれています。
このBigTableとDatastore&Blobstoreの違いは何なのでしょうか?
また、DatastoreとBlobstoreの2つの違いは何でしょうか?
Blobstoreの方が大容量のファイルを格納できるという理解で良いのでしょうか?
以上、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
これは、単純に「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という層を作って、データ操作を行っているという解釈で大丈夫でしょうか?
宜しくお願い致します。
No.3
- 回答日時:
>そこで、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というデータベース機能のために、なにか特別な技術などが要求されるかのような考えは不要です。そのへんのデータベースと同じです。
No.2
- 回答日時:
>の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を扱える様になる。
という解釈でよろしいでしょうか?
以上、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- 日本語 〈場所を示す「に」と「で」〉 という誤り 36 2022/11/12 15:04
- 英語 提示文は、全否定か部分否定のいずれなのか等について 1 2023/04/16 17:58
- 統計学 t統計量とF統計量について 9 2023/01/05 14:23
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- Android(アンドロイド) Aloha Browser でダウンロードしたファイルをPCに転送するには? 1 2022/05/23 18:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AndroidからのAccessデータベー...
-
CDの売上枚数を知りたいのですが
-
ACCESS2019でのエラーメッセージ
-
マクロでデータベースの最適化...
-
DB2 UDBって?
-
accessの勉強ができるサイトは?
-
データベースの最適化をマクロ...
-
lotus Notesのメール受信フォル...
-
Accessのレポートで「縦書き」...
-
SQLの文、節、句について
-
アクセスのデータがブッ壊れた...
-
ACCESS2000、データベース破損...
-
アクセスの日付/時刻型で標準...
-
DB2で複数DBからSELECT等
-
oo4oの読み方・・・・。
-
私があるアカウント発行の権利...
-
ADODB.Recordset エラー '800a0...
-
IPアドレスを数値に変換
-
ロータスアプローチのリスト表...
-
JCPDSカードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AndroidからのAccessデータベー...
-
データベースの最適化をマクロ...
-
Accessのレポートで「縦書き」...
-
accessの勉強ができるサイトは?
-
Microsoft Accessについて
-
データベースのメタ値はどこに...
-
ACCESS2019でのエラーメッセージ
-
「桐」の得手不得手
-
アクセスのデータがブッ壊れた...
-
バッファプールって?
-
DB2 UDBって?
-
【エクセル】自動保存先として...
-
SQLて何ですか!
-
今年亡くなった有名人を一発で...
-
ADODB.Recordset エラー '800a0...
-
AccessとSQL Serverの違い
-
ODBC接続とDBLINK
-
DB2で複数DBからSELECT等
-
NOTESでデータベースを開いたと...
-
oo4oの読み方・・・・。
おすすめ情報