**已关闭。**此问题需要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,但不起作用。
2条答案
按热度按时间4c8rllxm1#
我不知道firebase是否在排序时读取所有文档,然后进行过滤
Firestore查询在您定义的索引上执行,只允许在那些索引上实际执行的查询,并且只读取(并收取文档读取和带宽费用)与查询中的那些条件匹配的文档。
因此,如果您为比预期更多的读取而付费,那是因为这些文档实际上在您执行的查询中匹配。
cgh8pdjw2#
我可以告诉你,时间序列数据值得特殊处理。它归结为硬件利用率,数据是如何存储和访问在物理层。Mongo talks about it。顺便说一句,我不是说Firebase/Firestore不适合你的需要,只是分享时间序列记录得到特别关注/建模。
好处
与普通集合相比,将时间序列数据存储在时间序列集合中可以提高查询效率,并减少时间序列数据和辅助索引的磁盘使用量。
时序集合使用基础列存储格式,并通过自动创建的聚集索引按时间顺序存储数据。列存储格式具有以下优点: