519

Realtime databaseとCloud Firestoreの共通点と、5つの違い

どうも、白戸です。お久しぶりです。

最近は仕事を掛け持ちしすぎて何が何だかわからなくなってきています。どんなことやってるかというと、Flutter使ってアプリ開発したり(最近 for Webも出ましたね!追い風を感じる!)、Firebaseのプロ?的なポジションでコンサルしたりしています。(←実際はぜんぜんプロとかじゃないえrちゅいklb

まぁ私の近況なんてどうでも良いですね!さっそく本題に行ってみましょう。

Firebaseってなんぞ?

Googleが提供するGCP (Google Cloud Platform ) の一部。もともとはFirebaseという会社のサービスだったのを2014年にGoogleが買収したらしい。

StorageとかFunctionとかもあるけど、メインはDB。すごい雑にいうと、クラウド上にあるDB。

クラウド上にあるDB、ってのはFirebaseの機能でいうとRealtime databaseとCloud Firestore。Cloud FunctionとかCloud Storageとかと同列で、Firebaseの一機能です。

いままでのRDB(リレーショナルDB。OracleとかMySQLとかPostgresとか)とは違うの?

全く別物ですね。スキーマレスで、データはjson形式で保持しています。

ふむふむ、なるほどね。。。

ちなみに、スキーマレスって何?www と草生えた人のために簡単な説明。

スキーマレスDBって?

RDBでいうところのスキーマ定義とは、テーブル設計する時に決める各フィールドのデータ型、データの大きさ、主キーなど。

スキーマレスDBは、書いて字のごとく、スキーマ定義がいらないDB。スキーマレスDBは、投入したデータに合わせてデータカラム(フィールド)の形式を自由に変更できるのです。スキーマレスDBでは、データを投入する前のあれやこれやの面倒なスキーマ設計の手間がバッサリいらなくなったのです!オー、ジーザス!

ただし、スキーマ定義がないということは、裏返せばどんなデータでも入れられちゃう、NOT NULL制約とかもつけられない無法地帯ということ。HUNTER×HUNTERでいう幻影旅団の故郷、流星街みたいな。なので、アプリ側でちゃんとチェックしてから更新かけないと大変なんだゾ★ (←テンション注意w

Realtime databaseとCloud Firestoreの共通点

Realtime/AutoSync。これに尽きる。

Realtime databaseもCloud Firestoreもレイテンシ(データの転送要求を出してから実際にデータが送られてくるまでに生じる、通信の遅延時間)が非常に低いため、頻繁な状態同期に最適。

データが更新されたらリアルタイムで他のデバイスに自動的に同期する。なので、GET/POST処理は不要。コード内に監視者(オブザーバ。eventListner。いろんな条件がある)をしておくだけOK。

すごい早い! すごい便利!

Realtime database と Cloud Firestoreの違い5つ

細かい話に入る前に超乱暴にまとめてしまうと、Realtime databaseの改良版がCloud Firestore、です。どっちもクラウド上のスキーマレスDBです。

すでに読み進めるのがだるくなってきた人はこれだけ覚えておいておくんなまし!今からFirebaseを使い始めるんだったら迷わずCloud Firestoreにすべし

Realtime databaseとCloud Firestoreの違い①データ構造

Realtime databaseは、1つのjsonツリーとしてデータを格納する。
→シンプルな構造のデータ向き

Cloud Firestoreは、コレクションにまとめられたドキュメント(jsonに似てる)にデータを格納する。
→複雑で階層的な大規模データはドキュメント内のサブコレクションを使用することで整理が簡単。コレクションは100階層までネスト可能。

Realtime databaseとCloud Firestoreの違い②SDK

Realtime databaseがサポートしてるのはiOS、Androidのネイティブアプリだけ。でも、Cloud Firestoreはウェブクライアントもサポートしてる。

Realtime databaseとCloud Firestoreの違い③リージョン

Realtime databaseは単一リージョンでのみ利用可能。Cloud Firestoreは複数リージョンも可!

Realtime databaseとCloud Firestoreの違い④スケーラビリティ

Realtime databaseは、1 つのデータベースで、約 100,000 件の同時接続と、毎秒 1,000 回の書き込みまでスケールできる。それ以上は複数のデータベースにまたがるデータのシャーディングが必要になる。

Cloud Firestoreは完全に自動でスケーリングされる。

Realtime databaseとCloud Firestoreの違い⑤課金レート

Realtime databaseは、帯域幅とストレージのみ。オペレーションに課金されない分、そっちのレートは高め。

Cloud Firestoreは、主にデータベースで実行されているオペレーション(読み取り、書き込み、削除)に課金される。なので帯域幅とストレージの課金レートは低め。

以上。

それでは!

末岐碧衣
  • 末岐碧衣
  • 2019年現在、32歳。元女社長で、今はフリーランスのブロガー兼SE。
    アプリ作成・システム構築みたいにモノ作りもやるし、ITコンサルみたいなアドバイザーもやってます。ブログもこの通り、時々更新してます。
    <経歴>
    早稲田理工の新卒で某ITコンサル会社に入社。でも6年で鬱になって退職。個人事業主として起業し、28歳でフリーランス生活が始まる。
    ITから離れたくて小説家を目指すも1年で挫折。その後、株式会社を立ち上げてビジネス始めようとしたけど軌道にのらないのでいまは休眠中。
    フリーランス活動しながら、裏でシコシコ次のビジネスを立ち上げ中w
    あ、あと、彼氏募集中!(←強調

コメントする

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