Firebase / NoSQL - 如何聚合数据进行统计
Firebase / NoSQL - How to aggregate data for statistics
我正在使用 Firebase 创建我的第一个项目,我需要一些基于用户输入的统计数据。我知道 Firebase(或一般的 NoSQL 数据库)不是统计的理想选择,但它们在任何其他情况下对我有用,所以我想试一试。
我有:
我开发的应用程序可以让人们邀请朋友为他们的公司工作,所以我有一个“推荐”集合,其中每个推荐的 ID 基本上是推荐所属用户的用户 ID,然后有一个名为“items”的子集合,其中存储了数据。
我的数据是怎样的:
每个项目都有这些数据:
- 申请人
- 申请日期
- position(部分position为positionId&所在部门)
- 状态
我想要的是让用户根据:
进行统计
- 日期范围
- 状态
- 部门
我在想什么:
让 firebase 在用户发出请求后遍历所有推荐可能不是最好的主意,因为它在 firebase 上可能会变得非常昂贵。我在想的是 using cloudfunctions 总是在某些事情发生变化时计算统计数据,例如当有新申请人申请时,我会将柜台增加一个,而特定部门的柜台也会增加一个。但是我觉得这可以用于总数或预定义查询,例如“上个月”,但一旦我不知道用户 select 的日期,它就开始变得棘手了。
知道如何设计这样的东西吗?
非常感谢!
您正在考虑的是在 Firestore 和大多数 NoSQL 数据库中计算聚合的惯用方法。如果您遵循这种模式,Firestore 非常适合存储统计数据。
它是临时统计数据,例如未知数据范围,比较棘手。通常这归结为存储正确的值,让您无需阅读未知数量的文档来计算值。
例如,如果您为每月、每周、每天和每小时的统计信息存储计数器,您可以通过有限的读取操作次数满足广泛的日期范围。您可能需要读取多个文档,但读取的文档数量取决于范围,而不是数据库中的文档总数。
当然,对于最灵活的临时查询,您可能仍要考虑其他解决方案,例如专为这种用例而设计的 BigQuery。
我正在使用 Firebase 创建我的第一个项目,我需要一些基于用户输入的统计数据。我知道 Firebase(或一般的 NoSQL 数据库)不是统计的理想选择,但它们在任何其他情况下对我有用,所以我想试一试。
我有:
我开发的应用程序可以让人们邀请朋友为他们的公司工作,所以我有一个“推荐”集合,其中每个推荐的 ID 基本上是推荐所属用户的用户 ID,然后有一个名为“items”的子集合,其中存储了数据。
我的数据是怎样的: 每个项目都有这些数据:
- 申请人
- 申请日期
- position(部分position为positionId&所在部门)
- 状态
我想要的是让用户根据:
进行统计- 日期范围
- 状态
- 部门
我在想什么:
让 firebase 在用户发出请求后遍历所有推荐可能不是最好的主意,因为它在 firebase 上可能会变得非常昂贵。我在想的是 using cloudfunctions 总是在某些事情发生变化时计算统计数据,例如当有新申请人申请时,我会将柜台增加一个,而特定部门的柜台也会增加一个。但是我觉得这可以用于总数或预定义查询,例如“上个月”,但一旦我不知道用户 select 的日期,它就开始变得棘手了。
知道如何设计这样的东西吗? 非常感谢!
您正在考虑的是在 Firestore 和大多数 NoSQL 数据库中计算聚合的惯用方法。如果您遵循这种模式,Firestore 非常适合存储统计数据。
它是临时统计数据,例如未知数据范围,比较棘手。通常这归结为存储正确的值,让您无需阅读未知数量的文档来计算值。
例如,如果您为每月、每周、每天和每小时的统计信息存储计数器,您可以通过有限的读取操作次数满足广泛的日期范围。您可能需要读取多个文档,但读取的文档数量取决于范围,而不是数据库中的文档总数。
当然,对于最灵活的临时查询,您可能仍要考虑其他解决方案,例如专为这种用例而设计的 BigQuery。