Google の双子フェチは、火曜日に 2 つ目のリアルタイム NoSQL データベースを導入することで、Firebase プラットフォーム サービスに現れました。
Firebase は、複数のクライアント間でデータをほぼ瞬時に同期する方法を提供する Firebase Realtime Database のおかげで、モバイル開発者や Web 開発者の間で人気が高まっています。
これは、全員が同じ認識を持つことが求められるゲームやソーシャル アプリでは非常に便利ですが、ユーザーが世界中にいる場合には特に簡単に実現できるものではありません。
Realm は、Realm Mobile Database と呼ばれる同様の機能を提供しています。
そして今、Google にも似たようなもの、Cloud Firestore があります。これは、区別のあるドッペルゲンガーです。
Googleはしばしば二重の視点を見せる。人々がデータをバックアップするのと同じように、Googleは製品をバックアップする。クラウドプラットフォームは2つ(Google Cloud Platformとモバイル向けのFirebase)、オペレーティングシステムは2つ(AndroidとChromeOS、そしてもちろん新興のFuchsia)、メールサービスも2つ(GmailとInbox、これらは互いに関連性があるかもしれないが)、チャットアプリケーションも2つ(AlloとHangouts)、プログラミング言語も2つ(GoとDart)開発している。そして、一時期、Google VideoはYouTubeと共存していた。
Cloud Firestore は、Firebase Realtime Database の欠点であるデータの構造化、クエリ、スケーリングを解決するために設計されています。
そのため、より構造化されています。Firebase がデータを単一の JSON ツリーに保存するのに対し、Cloud Firestore は階層的なドキュメントモデルを採用しています。データはドキュメントと呼ばれるオブジェクトにキーと値のペアとして保存され、コレクションに整理され、さらにサブコレクションを含むこともできます。
浅い
Google の開発者アドボケイトの Todd Kerpelman 氏は火曜日のブログ投稿で、この仕組みによりクエリが浅くなり、リンクされたサブコレクションすべてなど不要なデータを取得せずにデータをクエリできると説明している。
Realmは、あまり知られていないかもしれないが、アプリ開発者は知っているデータベースで、クラウドプラットフォームを謳っている。
続きを読む
Cloud Firestore はクエリの簡素化も実現します。Firebase Realtime Database では複数のフィールドを組み合わせたクエリを作成する際に明示的な作成操作が必要になりますが、Cloud Firestore ではその生成ステップは自動的に実行されるか、インデックス構築の提案として提示されます。
Cloud Firestore は、個別のデータ取得ではなくストリーミングのリスナーの実装に重点を置いた Firebase Realtime Database よりも簡単な 1 回限りのフェッチ クエリもサポートしています。
さらに、新しいデータベースは、非常に大規模なデータセットでより優れたパフォーマンスを発揮するように設計されている、と Kerpelman 氏は示唆しています。
「Firebaseは常に大規模環境でのパフォーマンスに問題を抱えていました」と、Realmの共同創業者兼CEOであるアレクサンダー・スティグセン氏はThe Registerとの電話インタビューで述べた。「明らかにその問題に対処する必要があり、その一環として全く新しいバックエンドを開発しました。多くの点で、これはほぼ後退と言えるでしょう。Firestoreはレイテンシが高く、速度も遅いです。しかし、Firebaseはスケーリングの問題を解決すると言われています。」
スティグセン氏は、FirestoreはGoogleのSpannerデータベースに依存していると理解していると述べた。Googleは社内およびGoogle Cloud PlatformでSpannerを使用している。
スティグセン氏は、Realm には、Amazon、Google、Microsoft のクラウドでもオンプレミスでも、どこでも実行できるという利点があり、それが企業にとって重要であると述べた。
FirebaseとCloud Firestoreのもう一つの違いは料金です。Firebase Realtime Databaseの料金は、ダウンロードしたデータの量と保存したデータの量に基づいて算出されます。Cloud Firestoreでも同様の要素は考慮されますが、料金は主に読み取りと書き込みの実行回数によって決まります。
Cloud Firestore サーバー SDK は、Go、Java、Node.js、Python でご利用いただけます。今後、他の言語のサポートも予定されています。クライアント SDK は、Android、iOS、ウェブでご利用いただけます。®