Qual è il modo migliore per memorizzare i dati da Firebase a SQLite (database locale di Android)?
Firebase è cambiato molto negli ultimi anni. Firestore è uscito dalla beta a partire da quest'anno (2019) e ha un sacco di grandi caratteristiche, incluso il supporto offline.
Cloud Firestore supporta la persistenza dei dati offline. Questa funzione mette in cache una copia dei dati di Cloud Firestore che la tua app sta utilizzando attivamente, in modo che la tua app possa accedere ai dati quando il dispositivo è offline. Puoi scrivere, leggere, ascoltare e interrogare i dati nella cache. Quando il dispositivo torna online, Cloud Firestore sincronizza tutte le modifiche locali apportate dalla tua app al backend di Cloud Firestore.
Il supporto offline è abilitato di default con 100MB di cache.
Quando la persistenza è abilitata, Cloud Firestore mette in cache ogni documento ricevuto dal backend per l'accesso offline. Cloud Firestore imposta una soglia predefinita per la dimensione della cache. Dopo aver superato il valore predefinito, Cloud Firestore tenta periodicamente di ripulire i documenti più vecchi e inutilizzati. Puoi configurare una soglia diversa per la dimensione della cache o disabilitare completamente il processo di pulizia:
Il supporto offline usa di default un database SQLite (a cui purtroppo non puoi accedere/interrogare). Questo è piuttosto brutto, dato che Firestore non supporta le query con "LIKE", e i servizi raccomandati di ricerca full-text come Algolia sono costosi.
Qui, a Underline, avevamo bisogno di fornire un modo per gli utenti di cercare nei loro appunti dei libri. La ricerca full-text è ottima in generale, ma quando un utente cerca di interrogare i propri documenti (che non sono molti), questi servizi sono un po' eccessivi. Non ha senso usare un servizio che è ottimizzato per interrogare miliardi di documenti solo per cercare in 50-100 di essi.
Altre soluzioni sono o creare la propria cache nel proprio database SQLite per i documenti in cui si vuole cercare o se si è sicuri che sono molto pochi, è possibile interrogarli dai dati offline di Firestore e fare un loop tra loro.
Firestore offers a way of disabling network and query only from local cache.
- Firestore.firestore().disableNetwork
But, I am not sure that you won’t be charged for the reads you are making while offline.
Articoli simili
- Che tipo di database dovrei costruire per memorizzare i dati dei social media per un'app Android con una base di utenti target di 1.000.000?
- Come fa il database SQLite in Android Studio? Non sono in grado di trovarlo negli strumenti.
- Perché un database remoto è preferito a SQLite nello sviluppo di app Android?
- How to check a child exist in firebase database using Android