Python 3系でFirebase Realtime Databaseの進化版のCloud Firestoreを触る
こんにちわ
がじぇったー (@hackmylife7) | Twitter
です。
PythonでRealtime DBをさわってごにょごにょしたいなぁと思い色々触って見ることにしました。
TL;DR(要約)
- Cloud FirestoreはFirebase Realtime Databaseの進化版
Cloud Firestoreとは?
みんな大好きFirebase Realtime Databaseの進化版です。
Firebaseの良さはそのまま引き継ぎ、弱点だった複雑で階層が深いデータ構造にも対応することができます。
Realtime Databaseはシングルリージョンでしたが、Cloud Firestoreはマルチリージョンで自動的にスケールアップもされます。
1番の大きな違いはデータの持ち方でしょうか。
Firebaseはデータを 1 つの大きな JSON ツリーとして保存しますが、
CloudFirestoreはデータをドキュメントのコレクションとして保存します。
きになるお金ですが、Realtime Database同様、普通に使うぶんには無料利用枠におさまると思います。
理解するのにとても良い記事を貼っておきます。
firebase.google.com
qiita.com
qiita.com
qiita.com
それではやっていきます。
GCPを普段使っている人は違うPJにリソースを作らないようにコマンドラインで確認しましょう。
❯ gcloud auth login Your browser has been opened to visit: ~/projects ❯ gcloud config set project [Your Project ID] ~/projects ❯ gcloud config list [compute] zone = asia-northeast1-a [core] account = hoge@gmail.com disable_usage_reporting = False project = [Your Project ID]
firebaseコマンドをインストールします。
$ pip install firebase-admin $ pip install --upgrade firebase-admin
python ファイルの作成
~/projects/6_study ❯ mkdir study_gcp ~/projects/6_study ❯ cd study_gcp/ projects/6_study/study_gcp ❯ touch cloud_firestore.py
ServiceAccountの作成
CloudFirestoreをPCから操作できるようサービスアカウントを作成しましょう。
「IAMと管理」から「サービスアカウントの作成」を選択します。
鍵ファイルをJSONでダウンロードしましょう。
保存した鍵ファイルはスクリプトと同じディレクトリに保存します。
Cloud Datastoreの作成
プラウザを開きCloudDatastoreをスタートしましょう。
モデルはネイティブ、ロケーションはTokyoで良いです。
データベースの作成が開始されます。
作成が完了するとこちらの画面に遷移します。
cloud_firestore.pyの編集
pythonファイルを作成し、中身を以下のように編集します。
サービスアカウントのキーファイルはダウンロードしたものをpythonスクリプトと同じディクレトリにおいてください。
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore cred = credentials.Certificate('./psychic-ruler-168314-595ca3873a8a.json') firebase_admin.initialize_app(cred) # SDKの初期化 db = firestore.client() # コレクションとドキュメントの作成 doc_ref = db.collection(u'users').document(u'alovelace') doc_ref.set({ u'first': u'Ada', u'last': u'Lovelace', u'born': 1815 })
実行します。
projects/6_study/study_gcp via 🐍 v3.6.0 took 2s ❯ python cloud_firestore.py
firestoreの画面を見てみましょう。
データが登録されていることがわかります。
データを読み取る
データをreadする以下のcodeを先ほど作成したpythonファイルに追加してみましょう。
users_ref = db.collection(u'users') docs = users_ref.stream() for doc in docs: print(u'{} => {}'.format(doc.id, doc.to_dict()))
実行します。
Cloud Firestoreに保存されたデータの読み取りができます。
projects/6_study/study_gcp via 🐍 v3.6.0 ❯ python cloud_firestore.py alovelace => {'first': 'Ada', 'last': 'Lovelace', 'born': 1815}
所感
めちゃくちゃ簡単ですね。
そして無料枠がとても充実してます。
1 GB のストレージ
1 日あたり 50,000 回の読み取りオペレーション、20,000 回の書き込みオペレーション、20,000 回の削除オペレーション
個人で使うぶんには超過することはないと思うけど、超えても安い。。
flaskとセットで簡単なアプリケーションを作って見ようと思います。