4

私は現在Firebase Firestoreをさまざまなソースからデータを取得するプライマリバックエンドとして使用しています。私はまた、私のモバイルバックエンドにAndroidのルームを使用しています。電話機がデータを受信すると、ルームデータベースに格納されます。その場合、ユーザーは何週間も前からオンラインに戻ることはありません。Firestoreはオフラインの永続化メカニズムとしてどの程度信頼性がありますか?

デバイスファイルを調べた後、ファイアストアは/data/data/<your-app>/databasesディレクトリのファイルにデータを保存しています。

enter image description here

ファイルは、私はfirestoreにオフライン永続ドキュメントを読んでいる enter image description here

次のようになり、データがキャッシュされていることをどのように耐久性のあるオフライン持続性があることが言及上の兆候はありませんどれくらいの期間ではありません。私の質問は、Firestoreのオフライン永続性の持続性は何か。長期間(数日、数週間)に渡って同期されないデータを格納するための本格的なローカルDBを使用する代わりに、このデータを使用することをお勧めしますか?

接続が再確立されると、既にデータの同期をうまく処理しているようです。 Imはちょっとしたことがあっても、システムによってファイルが削除され、ユーザーがすべてを失うことを心配していました。

答えて

3

(この記事の執筆時点で)FirestoreはSQLiteを永続化メカニズムとして使用しています。断続的な活動が断続的に発生する場合は、パフォーマンスや耐久性に問題はありません。クラウドFirestoreが使用されることを意味しているので

パフォーマンス

:しかしあなたは(あなたが言ったように)あなたが知っておくべきいくつかのものがある数日または数週間のためにオフラインにしようとしている場合

主にオンラインで、まだサーバーに同期されていない保留中の書き込みはキューに保持されます。オンライン化せずに多くの保留中の書き込みを解決すると、そのキューが拡大し、全体の読み書きパフォーマンスが低下します。 Cloud Firestoreのパフォーマンス保証のほとんどは、バックエンドでのインデックス作成とレプリケーションによるものですが、オフラインのみで操作しているときはほとんどの最適化が存在しません。

競合

Firestoreの基本的な紛争解決のモデルは、 "最後の書き込み勝ち" です。したがって、多くのオフラインクライアントが同じ文書に書いている場合、オンラインになる最後のものだけが実際に「勝利」し、変更を持続します。

特長

Firestoreの機能のほとんどは、一つの大きな例外を除いてオフラインで作業:取引。トランザクションは、オンライン時のみ実行できます。したがって、アプリがトランザクションを使用する場合、特別な処理をせずにオフラインで正常に動作することはありません。

+0

お返事ありがとうございます。オフラインで動作していないTransaction要素や競合の解決方法についてはわかりませんでした。 – martinomburajr

1

オフラインパーシステンスが予測できないため、オフライこの質問には、4週間などの正確な回答はありません。これは、オフラインでの書き込み操作の回数に依存するためです。

Firestoreをオフライン専用データベースとして使用しないでください。これは、実際に切断されている間の短期間と中期的に動作するオンラインリアルタイムデータベースとして設計されています。

オフライン中は、すべての書き込み操作のキューが維持されます。このキューが増加すると、ローカル操作とアプリの起動が遅くなります。しかし、デバイスを再起動してもこれらの操作が継続することを知る必要があります。データを失うことはありません。

+0

はい、ありがとうございます。私は永続性のためにAndroidのルームデータベースを使用することを選択し、2つの間で同期する方法を見つける! – martinomburajr

関連する問題