【发布时间】:2020-01-02 20:49:54
【问题描述】:
我已经在 firebase firestore 上赶上一周了,但我的脑海中有一个问题:假设我想创建一个 Android 应用程序,一个待办事项列表。
上下文
为了提供一些上下文,在我的应用程序中,最常用的实体是 Task 对象,它包含用户输入的文本、用户 ID,可能还有一个标志,指示任务是否完成。
一个任务也可以属于一个用户定义的类别,(对象Category),它只有一个标题。
我的 Firestore 树结构理想情况下应该是这样的,有 2 个根级集合
问题
这个模型的问题是我的数据真的很小,而且数量可能非常大(一个用户可能会用很短的文本产生很多不同的任务)。
这样做,我会为大量写入和少量读取付费。 (即用户创建任务,编辑标题,将其标记为已完成,但读取只是在另一个客户端修改任务时发生,并且 firestore 针对读写进行了优化)
因此,如果用户有 100 个任务,那么 100 个文档中只有几个字段看起来是错误的。 在 Firestore 教程中,一个文档通常包含至少十几个字段。相比之下,我的小文档必须编写很多次,但它们很小,而且我使用的技术对于这种情况来说感觉有点过头了。
另外,我不知道应该如何从任务中引用类别。 如果每个任务都有一个类别,那么如果没有对应的类别,对单个任务的每次读取都将是不完整的,这意味着阅读量是文档的两倍。
为了解决这个问题,我还考虑过将类别直接嵌入到实际任务中,但是如果用户更改/删除一个类别,我必须对我的所有任务执行批量写入以编辑/删除士气低落的数据剩菜。
所以我的最后一个问题是:Cloud Firestore 是否适合这种轻数据但数量众多的项目?我的模型是最佳模型吗?而且,我是否喜欢以正确方式分类的任务?
【问题讨论】:
标签: android firebase google-cloud-firestore nosql