Google App EngineとGoogle Cloud Datastoreとの連携

これまで本ブログでは、Google App Engine (GAE) とGoogle Cloud Datastore (GCD)を紹介し、その素晴らしさを述べさせていただきました。もちろんこの2つは連携することが可能です。今回は、Pythonでこの2つの連携の仕方を紹介したいと思います。(完全なソースコードは最後に記します。

利用するライブラリ

GAEからGCDを利用するために利用するライブラリは「Google Datastore NDB Client Library」です。Pythonのソースコード上では次のように記します。

Entityの作り方

GCDでは、RDBのテーブルに相当するエンティティが必要になります。このエンティティは、Python上ではclassとして定義します。例えばUsersエンティティであれば、次のように記します。 プロパティのタイプは次のように指定します。
  • 文字列 … ndb.StringProperty
  • 数値 … ndb.IntegerProperty
  • 日時 … ndb.DateTimeProperty
検索のためにインデックスを貼るのであれば、「indexed=True」と指定します。 GAEとGCDとの連携で特徴的なのは、事前にGCDでエンティティの作成が必要ないことです。RDBであれば、データをInsertする前にCreate Tableでテーブルを用意しておく必要がありますが、GCDでは何もない状態でエンティティを追加することができます。そのため、GCD上での事前準備は全く必要ありません。

エンティティの追加

エンティティの追加は、非常に簡単です。次のソースコードを見てください。 1行目は、Usersエンティティの用意を行っています。ここではname, age, created_atプロパティを設定しています。エンティティの全てを設定する必要はなく、必要なプロパティのみ設定しただけでも大丈夫です。 5行目は、用意したエンティティをGCDに送信し、エンティティ作成処理を行っています。

エンティティの検索

エンティティの検索も、非常に簡単です。次のソースコードを見てください。 エンティティの検索は1行目のようにqueryメソッドを用い、検索するための条件を記します。2行目は検索クエリをGCDに送信し、エンティティを取得します。

完全なソースコード

それでは完全なソースコードを記します。GAE側ではFlaskを利用していますので、実行にはURLを叩けば大丈夫です。Google Cloud SDKをインストールしているのであれば、ローカルでも実行することができます。

まとめ

いかがでしたでしょうか。GAEとGCDとの連携を難しく考えていた方もいるようでしたが、エンティティの追加は「putメソッド」・エンティティの検索は「getメソッド」を実行するだけの簡単なものでした。ぜひ利用してみてください。
» お仕事のご依頼はこちら