Firestore针对存储大量小文档进行了优化。在查询时,这是您拥有的最佳选择。对于存储日志,第二个选项听起来像是一个很好的解决方案,但仅只要您保持文档的大小在maximum limit of 1 MiB之下。所以在你的情况下,我会选择第二种解决方案。因此,根据您希望存储日志的频率,您可以考虑每个月使用日志文档,每天使用日志文档,或者每小时使用日志文档。您可以选择粒度。话虽如此,第二种解决方案将比第一种便宜得多。
与NoSQL数据库中的数据建模一样:那要看情况。具体来说,这取决于您的应用程序的用例。 将日志存储在活动文档中,意味着您在读取活动文档时始终会读取日志。如果这通常是你在应用程序中需要的,那么这很好👍。如果你实际上只需要一小部分用例的日志,那么总是用活动加载它们是浪费的。 类似地,将日志存储在活动中会使查询这些单独的日志变得更加困难。使用此模型,您将更经常地遇到查询限制。但另一方面,这确实意味着查询日志将实际返回活动,这可能是您想要的👍--当然也可能不是。 最后,您需要选择最符合所有用例和其他标准的数据模型(例如Alex提到的成本)。这通常不是一次性的选择,而是随着应用用例的发展而发展的。如果您是NoSQL数据建模的新手,我建议您阅读NoSQL data modeling并观看Get to know Cloud Firestore。
2条答案
按热度按时间irtuqstp1#
Firestore针对存储大量小文档进行了优化。在查询时,这是您拥有的最佳选择。对于存储日志,第二个选项听起来像是一个很好的解决方案,但仅只要您保持文档的大小在maximum limit of 1 MiB之下。所以在你的情况下,我会选择第二种解决方案。因此,根据您希望存储日志的频率,您可以考虑每个月使用日志文档,每天使用日志文档,或者每小时使用日志文档。您可以选择粒度。话虽如此,第二种解决方案将比第一种便宜得多。
ztigrdn82#
与NoSQL数据库中的数据建模一样:那要看情况。具体来说,这取决于您的应用程序的用例。
将日志存储在活动文档中,意味着您在读取活动文档时始终会读取日志。如果这通常是你在应用程序中需要的,那么这很好👍。如果你实际上只需要一小部分用例的日志,那么总是用活动加载它们是浪费的。
类似地,将日志存储在活动中会使查询这些单独的日志变得更加困难。使用此模型,您将更经常地遇到查询限制。但另一方面,这确实意味着查询日志将实际返回活动,这可能是您想要的👍--当然也可能不是。
最后,您需要选择最符合所有用例和其他标准的数据模型(例如Alex提到的成本)。这通常不是一次性的选择,而是随着应用用例的发展而发展的。如果您是NoSQL数据建模的新手,我建议您阅读NoSQL data modeling并观看Get to know Cloud Firestore。