2023/09/19
Firebaseで利用しているデータベースをFireStoreからRealTime Databaseへ移すほうが良いのか調査中。
「idea Lane」は、将来的にできるだけ無料か安い費用で使えるようにして、多くの人に気軽に使ってほしいと思っている。しかし実際のところはデータベースの使用に応じて私がGoogleにお金を払わなければならないことになる。
つまり大勢の人に無料や安く提供するには、なるべくDBの使用量やアクセス量を減らすことが非常に重要だ。
今のところは画面で「保存ボタン」を押したときだけDBに反映する状態なので大した問題では無いのだが、これからはリアルタイムでDBに保存するようにしていきたい。つまり何か操作をするたびに、自動でクラウドのデータベースに反映する形にならざるを得ない。
FireStoreの課金情報を見ると、「ドキュメントの書き込みと削除を行うたびに課金されます」と書かれている。
ある程度のアクセス数までは無料だし、それを超えてもコスト面で凄い高いものではない。
とはいえ、たとえばアイディアとして何か文字を打つ→DB反映、また文字を打つ→DB反映、Undoをする→DB反映、太字にする→DB反映 ……というように、普通に作業するだけでも膨大なアクセスが発生してしまう。
一回一回のデータ量はわずかでも、データベースとのやりとりの回数は相当なものになってしまう。その点、FireStoreの課金体系は不利に思う。少なくとも精神的に良くない。
ちなみにFireStoreの無料枠は、1日あたりドキュメントの読み取りは5万回、書き込みは2万回まで。操作のたびにDBにアクセスする構造にしたら、1人がソフトをいじるだけでも数百回はあっという間に行くだろう。無料ユーザが100人も使えば、数万というのはすぐ超えてしまいそう。
後の調査で、自分一人でFireStoreから一日3000回くらい読み取りをしていた。100名どころか15人くらいでも無料枠を超えてしまうかも……。
一方でRaltimeDatabaseは回数ではなく「容量」に対して課金される。保存するデータ量と、ネットワークを通過した読み取り量(ダウンロード)が対象になる。
これであれば、小さなデータを何度も何度もDBに書き込んだり読みに行くような場合でも回数は気にしなくて良い。もちろん合計のデータ量は気にしなければいけないが。
公式ドキュメントでも「頻繁に変更される数 GB 以下のデータ」の場合にはRealtime Databaseの選択が推奨されている。
データベースを選択: Cloud Firestore または Realtime Database | Firebase Realtime Database
上記リンク先でもそうだが、基本的にGoogleはFirestoreを推していて、限られた場合のみRealtimeDabaseが適するというスタンスなので注意が必要。無料枠を超えた場合のレートもRealTimeDatabseは高い。
とはいえ読み書きの回数で課金を気にしなくて良いのはとても魅力的なので、RealtimeDatabaseへの移行を検討している。
(ただ実際に扱うには結構違うものなので色々苦労しました。その話は今後出てきます)
なおRealtime DatabaseとFireStoreとの併用が可能とのこと。今はテキスト主体のソフトだが、今後画像などを扱うようになったらFireStoreと併用が良いのかもしれない。
次に読みたいものメモ
- Firestoreでリアルタイム更新 | Flutterで始めるアプリ開発
- Flutter+Firestoreで作るときのあれこれ(Riverpod+StateNotifierも)
- StreamBuilderを使う|FlutterでFirebaseを使ってみる
- https://ueqareer.net/3056/2 ※投稿時点では開けず
2023/09/20
RealTime Databaseをいじってみて少し理解したが、そもそもwindowsに対応していない……。
- まずWindows対応のために使っている「Firedart」はFireStoreのみ。Realtime Databaseに対応していないようだ。下記のようにhttpで頑張るしかないのか。。。
- https://stackoverflow.com/questions/62743910/flutterhow-can-we-use-firebase-database-with-desktop-application
- なお本家であるFirebaseのWindows(Desktop)サポートについてはリクエストが多数上がっている。しかし時間がかかりすぎているし、対応したとしてもRealtime Databaseまでやってくれるのかどうか……。
- 困り果てて探したら firebase_dartというパッケージがあった。これは助かる。WebでもWindowsでもRealtime Databeseへのアクセスが実現できそうだ。
Currently supports the following firebase services:
- Authentication
- Realtime database
- Cloud storage
※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています
この記事はアイディア整理ソフト「idea Lane」の開発記録です
↓どなたでも、ユーザ登録だけで無料ですぐに使えます↓
テキストベースの思考整理ツール「idea Lane」
コメント