firebase Firestore和账单呈指数增长的问题[已关闭]

atmip9wb  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(125)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
在一个集合中,每个操作用户每天大约写入1000条记录(现场大约有10个操作用户),我有一个查询,获取当天所做的记录,以便跟踪现场移动的用户覆盖的点:

const lastActividadGPS = await firestore
          .collection("Actividad_GPS")
          .where("instancia", "==", instancia) //instancia
          .where("user_id", "==", parseInt(ejecutivo.user_id))
          .where("fecha_hora", ">=", dayStart.toDate())
          .where("fecha_hora", "<=", dayEnd.toDate())
          .orderBy("fecha_hora", "desc")
          .get();

该系列:

当我在集合中积累了10万多个文档,并且有1-3个用户进行查询时,会发生这种情况(他们从网络平台内部执行该查询)每天进行多达30 M个读数,但如果我删除所有数据,它归一化,我每天有高达50 K的读数。我一直无法确定过多读数的问题-当集合有大量数据时-我不知道firebase在排序时是否读取所有文档,然后过滤它。
我们还尝试在查询中包含limit,但不起作用。

4c8rllxm

4c8rllxm1#

我不知道firebase是否在排序时读取所有文档,然后进行过滤
Firestore查询在您定义的索引上执行,只允许在那些索引上实际执行的查询,并且只读取(并收取文档读取和带宽费用)与查询中的那些条件匹配的文档。
因此,如果您为比预期更多的读取而付费,那是因为这些文档实际上在您执行的查询中匹配。

cgh8pdjw

cgh8pdjw2#

我可以告诉你,时间序列数据值得特殊处理。它归结为硬件利用率,数据是如何存储和访问在物理层。Mongo talks about it。顺便说一句,我不是说Firebase/Firestore不适合你的需要,只是分享时间序列记录得到特别关注/建模。

好处

与普通集合相比,将时间序列数据存储在时间序列集合中可以提高查询效率,并减少时间序列数据和辅助索引的磁盘使用量。
时序集合使用基础列存储格式,并通过自动创建的聚集索引按时间顺序存储数据。列存储格式具有以下优点:

  • 降低处理时间序列数据的复杂性
  • 提高查询效率
  • 减少磁盘使用
  • 减少读取操作的I/O
  • 提高WiredTiger缓存使用率

相关问题