Google Cloud Datastoreのクイックスタートを試す


概要

始めに

Google Cloud Datastore(以下Cloud Datastore)初学者向けに提供されているクイックスタートを入門的に試してみる
クイックスタートではCoogle Cloud Platform Console上でデータを作成して、同じくConsole上で作成したデータをGQLを使って確認するまでの流れを追っている

Cloud DatastoreとRDBMSとの用語の比較

覚えておきたい用語をRDBMSと比較しながら確認する

RDBMS Cloud Datastore
テーブル 種類 または カインド(Kind)
フィールド(1つのオブジェクトの中の各データ) プロパティ(Property)
レコード エンティティ(Entity)
プライマリキー キー(Key) + 祖先キー

これはただの参考の話であり、実際は少し違うことに注意

祖先キーについて

エンティティには祖先キーを指定することができる
祖先キーにはそのエンティティの親となる主キーを設定することになっているので、エンティティをツリー構造にすることができる
この時のツリーを「エンティティグループ」という

Cloud Datastoreをよくテーブルやキーの観点から捉えようとするが、キーは祖先を持つことができてそのためにキーパスが存在するので、どちらかというとファイルシステムとして考えるのが良いとのこと

参考:Google Cloud Datastoreでのデータ整理の考え方

エンティティグループに対する書き込み処理は1秒間に1回までしか実行できないことに要注意
そのぶんメリットもあるみたいだが今回の記事に記述すると長くなってしまうので↓で確認してほしい
参考:今更 Cloud DataStore 入門

データの持ち方の例

RDBでのモデリングだと

☆ Userテーブル

id username name
1 yamayama yamada taro
2 tanatana tanaka hanako

☆ Postテーブル

id user_id content
1 1 Hello
2 2 Yahooooo

に対してDatastoreのモデリングは

Key Data
(Post, 1) {“user”: Key(User, yamayama), “content”: “Hello”}
(Post, 2) {“user”: Key(User, tanatana), “content”: “Yahooooo”}
(User, yamayama) {“name”: “yamada taro”}
(User, tanatana) {“name”: “tanaka hanako”}

というようになっている

エンティティが特定のカインドを持っている構造となっている、上記の例だとPostやUserがカインドとなる

無料枠について

データ容量 1GB
エンティティの読み込み数 5万
エンティティの書き込み数 2万
エンティティの削除数 2万
小規模オペレーション 5万

詳しくはこちら

クイックスタート

Cloud Datastoreにデータを保存する

リソースの管理ページに移動してGCPプロジェクトを選択または作成してからプロジェクトのページに遷移する

Google Cloud Platform(以下GCP) Console の「Datastore エンティティ」ページに移動する

データベース サービスの選択を迫られるので「Cloud Datastore」を選択
ここで決定すると後々は変更できないが、クイックスタートということからベータ版ではないCloud Datastoreを使うこととする

ロケーションは東京に一番近い「asia-northeast1」を選択する
ここも保存したロケーションを後で変更することはできない

「エンティティを作成」をクリックする

以下のように入力する

入力したプロパティについて

プロパティ名 インデックス登録するか
description 文字列 Google Clound Datastoreの学習 しない
created 日時 (現在時刻) する
done ブール値 False する

これでCloud Datastoreにデータが保存できた

「種族別のクエリ」タブで、種類「Task」にすると作成したエンティティを確認できる(カインドとも呼べるが、画面上「種類」と表現されているので種類と呼んでいく)

Google Query Language(GQL)からクエリを実行してデータを取得する

「SELECT * FROM Task WHERE done=false」を実行すると作成したエンティティを取得できる
※ 大文字と小文字は区別されることに注意

作成したデータの削除

「種類別のクエリ」タブより削除が行える

種類の「Task」が残ったままだが、エンティティが1件もない状態になるとどこかのタイミングでGCP側が消してくれるらしい


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です