目次へ
Datastore は、スケーラビリティが高い NoSQL データベースです。GAEでも、MySQLのようなRDBを使うことはできますが、CloudFirestoreのDatastoreモードというデータベースの 使用が推奨されています。
Datastoreは、GAEのデフォルトのデータベースとして登場しました。その後、Cloud Datastoreという名前でGCPのプロダクトの一つとして提供され、GAE以外からでも利用できるようになりました。 さらに、Cloud FirestoreのDatastoreモードがCloud Datastoreの最新バージョンになりました。将来的には、既存のすべてのCloud Datastoreが、FirestoreのDatastoreモードに 自動的にアップグレードされる予定のようです。
DatastoreとRDBの用語は以下のように異なります。
RDB | Datastore |
表 | カインド |
レコード(列) | エンティティ |
フィールド(項目) | プロパティ |
DatastoreをJavaから操作する方法はいくつかあるようですが、ここでは、Datastore APIを使う方法を示します。パッケージは以下です。
DatastoreService取得
まずは、DatastoreServiceを取得し、そのメソッドを使い、挿入、削除、更新などを行うことになります。挿入
Datastoreでは、データを登録するためのCREATE TABLEなどは不要です。カインド(RDBの表名)を指定し、Entity のインスタンスを作り、必要なプロパティ(RDBのフィールド名)ごとに値を指定し、DatasoreServiceのputメソッドで挿入します。この時、longの値のキーが自動で追加されます。削除
削除をするには、キーを指定してDatasoreServiceのdeleteメソッドを呼びます。引数は、可変個引数なので、いくつでも指定できます。また、IterableGoogle Cloud PlatformのDatastoreのエンティティを確認すると、登録されているエンティティのキーと、プロパティを見ることができますので、そのキーのIDを指定して削除したのが以下の例です。
キーについて
キーを、エンティティから取得するのは、以下のようになります。エンティティを取得するのは、下の項目を見てください。キーを指定してEntityを取得
キーを指定してエンティティを取得するのは以下の通りです。getメソッドは、EntityNotFoundExceptionをスローするため、try catchが必要になります。更新
挿入と同様、put(Entityのインスタンス)を実行した時、Entityのインスタンスが既に存在するキーをもっていれば新規挿入ではなく更新となります。すべてを選択
あるカインドからすべてのエンティティを取得するには、Queryを使います。下の2行目について説明します。
datastore.prepare(query)でPreparedQueryが返ります。
そのクラスのasList()で問い合わせたものをリストとして返してくれます。
また、asListの引数にはFetchOptionsオブジェクトを渡しますが、これは、リミットやオフセットなどを記述するためのクラスであり、FetchOptions.Builderクラスのメソッドでそのインスタンスを作成することができます。
withDefaultsメソッドは、デフォルトのFetchOptions.Builderクラスを作成しますので、それをasListに渡し、すべてのエンティティを取得します。
Orderの指定
あるプロパティでソートしてエンティティを取得するためには、addSortメソッドを使います。条件の指定
Filterクラスで条件を書くことができます。下の条件はtoiというプロパティが1と等しいものだけを取得するFilterです。FilterOperator.EQUAL はenumでEQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、IN、LESS_THAN、LESS_THAN_OR_EQUAL、NOT_EQUALがあります。
にほんブログ村
0 件のコメント:
コメントを投稿