次のような多対多の構造を持つFirebaseReal-timeデータベースがあります。
App {
"users" : {
"user123" : {
"name" : "Mr Guy"
...
"groups" : {
"group567" : true,
"group890" : true
}
}
}
"groups" : {
"group567" : {
"name" : "My Group 1",
"other" : "some other random stuff",
"logs" : {
"guid345" : {
"author" : "Miss Other",
"note" : "some change note"
},
"guid817" : { ... },
"guid018" : { ... },
...
},
"members" : {
"user123" : true,
...
}
}
}
}
これらはいくつかのオブジェクトにマップされます:
class User {
private String name;
private List<Groups> groups;
}
class Group {
private String name;
private Other other;
private List<Log> logs;
}
class Log {
private String author;
private String note;
}
ダウンロードするデータの量を最適化する必要があります。(各グループのログノードは、ユーザーがアクティブな間に追加されたアイテムを除いて、ユーザーにとって重要ではありません。つまり、各ユーザーには異なるログのリストが表示されることが予想されます。)
ログフィールドを無視してFirebaseに送信しない方法を知っています-ログをsqliteに個別に保存する実装がありますが、これを手動で行うのではなく、Firebaseのローカルコピーに保存するプロパティを設定する方法がありますデータベースですが、その部分をリモートに同期しませんか?別のデータストアを回避できるように
Firebaseリアルタイムデータベースまたは新しいCloudFirestoreデータベースの主な目標は、オフラインデータベースとして機能するのではなく、リアルタイムで機能することです。アプリが一時的にネットワーク接続を失った場合でも、Firebaseアプリケーションは機能します。キャッシュされたデータはオフラインでも利用でき、Firebaseはネットワーク接続が復元されたときに書き込みを再送信します。
ディスクの永続性を有効にすると、アプリはデータをデバイスにローカルに書き込むため、アプリはオフラインでも状態を維持できます。次のコード行を使用して、ディスクの永続性を有効にできます。
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
完全にオフになりたい場合は、FirebaseDatabaseのgoOffline()メソッドを使用できます。
このメソッドは、goOnline()が呼び出されるまで、FirebaseDatabaseバックエンドへの接続をシャットダウンします。
ただし、Firebaseリアルタイムデータベースをオフライン専用データベースとして使用することはお勧めしません。それは実際には、切断された短中期の期間に機能するようになったオンラインデータベースとして設計されています。オフライン専用データベースを使用する場合も@Dougスティーブンソンは、彼の答えに言及したように、あなたが使用することができますルーム図書館:
Room永続ライブラリは、SQLiteの抽象化レイヤーを提供し、SQLiteの全機能を活用しながら、より堅牢なデータベースアクセスを可能にします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加