Android 我应该只写标识符还是写Firestore的fields文档中的所有数据?

Android 我应该只写标识符还是写Firestore的fields文档中的所有数据?,android,ios,firebase,google-cloud-firestore,Android,Ios,Firebase,Google Cloud Firestore,实际上,我对编程和Firebase都是新手。我需要知道这两种情况中哪一种更好 我正在制作一个事件应用程序。如果用户要参加活动,我会在“attendedEvents”子集合中编写一个文档,嵌套在“users”集合中,如下所示: 然后,我需要管理并向客户端应用程序显示参加活动的全部数据,我需要显示位置、坐标、地点等数据 有两种方法可以保存参加的活动数据 1。我只是在“attendedEvents”子集合中写入eventID。像这样 然后,当我需要显示完整的数据时,我需要执行两个步骤。首先,我获取

实际上,我对编程和Firebase都是新手。我需要知道这两种情况中哪一种更好

我正在制作一个事件应用程序。如果用户要参加活动,我会在“attendedEvents”子集合中编写一个文档,嵌套在“users”集合中,如下所示:

然后,我需要管理并向客户端应用程序显示参加活动的全部数据,我需要显示位置、坐标、地点等数据

有两种方法可以保存参加的活动数据

1。我只是在“attendedEvents”子集合中写入eventID。像这样

然后,当我需要显示完整的数据时,我需要执行两个步骤。首先,我获取“attendedEvents”子集合中的所有eventID,然后专门基于eventID进行查询以获取完整的事件数据

2.我将所有事件数据写入“attendedEvents”子集合字段,而不仅仅是eventID。像这样

因此,当我需要在客户端应用程序中显示事件数据时,我只需要执行一个查询来引用“attendedEvents”子集合

这两者的优缺点是什么

老实说,我真的不确定是否会选择。但目前我将选择只编写eventID,因为firebase中有存储定价,即使当我将参加的事件数据显示到客户端应用程序时,数据实时同步并不是真正需要的


网络带宽呢?因为您的云Firestore请求使用的网络带宽是收费的,因为第一选择占用更多带宽,对吗?我不太了解这种网络带宽

这两种方法都是有效的方法,而且它们都没有明显优于另一种方法。这完全取决于您的用例是什么,以及您对复制数据的适应程度

在第一种方法中,您只编写很少的重复数据(几乎只是ID)。这意味着您编写这些数据的代码将非常简单和快速。但是在读取数据时,您需要从两个集合中加载数据。对于数量合理的文档来说,这通常不是一个大的性能问题,但确实需要更多的代码和更多的API调用

在第二种方法中,为每个
attendedEvents
文档复制事件的所有数据。这意味着编写此数据的代码更加复杂,而且您肯定存储了更多的数据。您需要弄清楚是否以及如何使其保持最新(有关更多信息,请参阅)。但另一方面,阅读一个
attendedEvent
文档可以在一次阅读中提供有关该事件文档的所有信息

<>这是NoSQL数据库中常见的一个考虑事项:你经常需要考虑写性能和磁盘存储对读取性能和可伸缩性的影响。正如我一开始所说:在所有情况下都没有最好的答案。这完全取决于你的应用程序最重要的标准是什么