在Firebase中使用Map而不是文档是明智的选择吗?

ryevplcw  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(117)

在Firestore集合中,我在活动文档下保存日志。
我在考虑两个选择:
1.创建一个独立于活动的日志集合,并将日志保存在此处。下面这张图片:

也许我也可以在每个活动下创建一个日志集合。
1.在每个活动文档下创建一个列表,并将日志作为Map保存在此处。类似下面这张图片:

乍一看,我想我会做更少的文件阅读与选项2,这是好的Firebase计费。我在想,这是否是一个很好的做法,为Firestore收集。
选项1真的能帮我解决账单问题吗?我怎么知道哪一个更适合计费或任何其他情况?

irtuqstp

irtuqstp1#

Firestore针对存储大量小文档进行了优化。在查询时,这是您拥有的最佳选择。对于存储日志,第二个选项听起来像是一个很好的解决方案,但只要您保持文档的大小在maximum limit of 1 MiB之下。所以在你的情况下,我会选择第二种解决方案。因此,根据您希望存储日志的频率,您可以考虑每个月使用日志文档,每天使用日志文档,或者每小时使用日志文档。您可以选择粒度。话虽如此,第二种解决方案将比第一种便宜得多。

ztigrdn8

ztigrdn82#

与NoSQL数据库中的数据建模一样:那要看情况。具体来说,这取决于您的应用程序的用例。
将日志存储在活动文档中,意味着您在读取活动文档时始终会读取日志。如果这通常是你在应用程序中需要的,那么这很好👍。如果你实际上只需要一小部分用例的日志,那么总是用活动加载它们是浪费的。
类似地,将日志存储在活动中会使查询这些单独的日志变得更加困难。使用此模型,您将更经常地遇到查询限制。但另一方面,这确实意味着查询日志将实际返回活动,这可能是您想要的👍--当然也可能不是。
最后,您需要选择最符合所有用例和其他标准的数据模型(例如Alex提到的成本)。这通常不是一次性的选择,而是随着应用用例的发展而发展的。如果您是NoSQL数据建模的新手,我建议您阅读NoSQL data modeling并观看Get to know Cloud Firestore

相关问题