我正在使用Firebase Firestore构建一个应用程序,该应用程序将允许用户在栏中打开选项卡。我可能会使用两种数据库模式。我很好奇,哪一种方法最好考虑到where()
查询的时间复杂性以及其他建议。
方案A:
用一个Bills
集合设置Firestore 。每当用户在栏上打开选项卡时,请在文档中创建带有字段status: true
的文档(将其表示为打开的选项卡)。每当用户关闭选项卡时,该字段就会切换为status: false
。这是一种非常简单的解决方案,因为它仅在关闭选项卡时仅允许切换一个字段,尽管Bills
集合可能会变得非常庞大,并且可能使Firestore在以后查询时很麻烦。
方案B:
使用以下两个集合设置Firestore:Open Bills
&Closed Bills
。每当用户打开选项卡时,都会在Open Bills
集合下创建一个文档。如您所料,每当用户关闭帐单时,便会从中删除帐单Open Bills
并在中创建帐单Closed Bills
。本质上就像是从一个移动到另一个,但不幸的是,Firestore中没有移动功能。这是我所追求的解决方案,因为如果要扩展它,则可能会减少查询时间,但在写入和删除操作方面会带来潜在的故障。
Firestore查询根据结果集的大小进行扩展。如果返回100个结果,则查询1,000个文档的集合将与查询10,000,000个文档的查询大致相同。
在不了解更多细节的情况下,选项A似乎是一种完全合理的方法。我建议的一件事:不要为状态使用布尔值。现在,您认为自己有两种状态(开放/关闭/关闭),但是如果将来有更多状态(开放/关闭/收费)怎么办?
也许一个state
字段,可open
| closed
现在将是一条路。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句