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

Published: 2018年9月17日 by tomsato

概要

始めに

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側が消してくれるらしい

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧