Open4
サーバーサイドNoSQLとして見るfirestore
普通のfirestore
- 基本的にクライアントから使われることが前提っぽい作り
- 安全に使うためにはちゃんとルール設定が必要
- これをちゃんと扱うのが結構気を使う
firestoreをサーバサイドで使う
- 基本的にfirebase-adminを中心に使う事になる
- 無理くりサービスアカウントっぽいことするのも出来なくはない
- BigQuery連携
- FunctionsのExtensionで設定すればいいので基本ノーコードでいける
- https://firebase.google.com/products/extensions/firebase-firestore-bigquery-export?hl=ja
- Functionsを設定した以降のデータしか入っていかないので途中から入れるときは入れ直しスクリプト走らせるとかは必要
- RDBよりイニシャルコストが安い
- インデックスがあったり条件句もそこそこあるのでRDBっぽい使い方しても苦痛が薄い
- トランザクションっぽいのもある程度はできる
- Googleがやってるしそんなに潰れたり売られたりしないだろうという安心感
- Parse.comを忘れない
- planetscaleとかMySQLでデータアクセスAPIがなければこの辺はそこまで気にしなくて良いのかも
- DynamoDBと比べると好きなところ
- インデックス貼るのが楽
- テーブル作らなくて良い(DynamoDBはテーブルは少ないほどよいと言ってるけど、現実無理じゃんという感じする)
- 一回の処理あたり25件みたいなのがdynamodbは辛い
firestoreをサーバサイドで使う課題
- firestore-adminが逆にルール設定出来なすぎてガバガバすぎる
- 無理くりサービスアカウントっぽいことをすれば回避できる(未検証)
- 削除がGUIから気軽に出来すぎる。フィルタの隣に削除ボタンがあるのめっちゃ怖い
- パフォーマンスはそんなに良くない
- 制限とか見てると割と引っかかりそうな気配を感じたり
RDBと比べて
いいこと
- 安い
- 特にイニシャルコスト
- マイグレーションがいらない
出来ないこと
- JOIN
- 複雑なwhere句
- start < time AND end > timeぐらいなとこからできなくなるとか