我目前正在使用Firebase Firestore作为主要后端,从各种来源检索数据.我也使用Android的房间用于我的移动后端.当手机接收到数据时,如果用户几周甚至几周不再上线,它就会存储在房间数据库中.
查看设备文件后,我看到firestore将数据保存在目录下的/data/data/<your-app>/databases文件中.
我已经阅读了firestore上的脱机持久性文档,并且没有迹象表明脱机持久性是多么持久.它提到数据被缓存但不是多长时间.我的问题是,Firestore的离线持久性的持久性是多少.是否会建议使用它而不是使用完全成熟的本地数据库来存储可能无法在很长一段时间(几天,几周)内同步的数据?
一旦重新建立连接,似乎已经很好地处理了同步数据.我只是担心在某些时候该文件可能被系统删除而用户丢失了所有内容.
android persistence firebase android-room google-cloud-firestore
我正在使用Android的Room数据库,在理解如何进行操作时遇到一些大问题:
Person到数据库中,它增加了它所有的变量,例如List<Shoe>,List<Pet>等的数据库为好。创建关系,以便当我检索a时Person,将检索其所有字段,例如,Pet, Shoe, Shirtetc。(不确定是哪种查询)
执行简单的查询,例如Retrieve Person whereshoe.name = "boot";
我知道您必须对对象列表使用外键关系,否则对一个对象可以使用@Embed或@TypeConverter
示例代码如下所示;
@Entity(tableName = "person")
public class Person {
@PrimaryKey
@NonNull
private String personId;
private List<Pet> pets;
private List<Shoe> shoes;
private List<Shirt> shirts;
}
@Entity(foreignKeys = {
@ForeignKey(
entity = Person.class,
parentColumns = "personId",
childColumns = "personIdFk"
)
})
public class Pet {
String petId;
String name;
String personIdFk; //Foreign key to person
} …Run Code Online (Sandbox Code Playgroud)