はじめに
Googleのインフラで実行されるクラウドサービス Google App Engineが2009年4月7日にJavaに対応しました。Javaエンジニアにも利用できるようになったGoogle App Engineを一緒に勉強して行きましょう!
今回は、GoogleのスケーラブルなデータストレージにアクセスするためのAPIを勉強したいと思います。
対象読者
- ウェブサービス開発に興味のあるJavaエンジニア
- Google App Engine for Javaに興味がある方
必要な環境
- 「Google Plugin for Eclipse」がインストールされている、Eclipse 3.3(Europa)か3.4(Ganymede)
開発環境の構築手順については、第1回の解説を参照してください。
Datastore Java APIとは?
Google App Engineではファイルシステムを直接利用することが禁止されており、Google App Engine上でデータを保存しておきたい場合には、データをデータストアに格納する必要があります。今回勉強するDatastore Java APIは、データストアへのアクセス用APIで、次の機能が用意されています。
- データの書き込み
- データの取得
- データ取得時の並び替え(ソート)
- 動的自動インデックシング
- トランザクション処理
Datastore Java APIには沢山の制限項目があり、第1回で説明したGoogle App Engineの制限とは別に、以下の制限があります。Google App EngineとDatastore Java APIの両方が制限値以下の状態でないとAPIの呼び出しができません。
今のところ、課金によってこれらの制限値を増やすことはできません。
リソース | 単位 |
データストアAPI呼び出し回数 | 10,368,000 |
APIへのデータ送信 | 12ギガバイト |
APIからのデータ受信 | 116ギガバイト |
データストアCPU時間 | 62.11 CPU時間 |
最大エンティティサイズ | 1メガバイト |
エンティティのインデックスの最大値 | 1,000バリュー |
バッチPUT/DELETE | 500エンティティ |
バッチGETの最大エンティティ数 | 1,000エンティティ |
クエリーの結果オフセットの最大数 | 1,000 |
Google App EngineのDatastoreのデータが、Googleが開発したデータストレージのBigTableに格納されるかどうかに興味のある方は非常に多いと思います。
Datastore Java APIは、DataNucleusというライブラリを利用して実装されていますが、GoogleとDataNucleusプロジェクトが共同で開発したdatanucleus-appengineプラグインを通してBigTableにアクセスしているという情報がDataNucleusのページに書かれています。
datanucleus-appengineプラグインはソースコードが公開されてますので、興味のある方は実装を確認してみてはいかがでしょうか。