【问题标题】:How to use Firebase for statistics?如何使用 Firebase 进行统计?
【发布时间】:2017-08-06 04:47:01
【问题描述】:

我正在开发一个系统,用户可以订阅地点并且地点可以在他们的 CMS 中看到这些用户。但现在我想为这些地方创建统计数据。

其中一些统计数据是:

  • 有多少男性/女性订阅了该地点。
  • 我所在用户的年龄范围。

这些统计信息如何在 Firebase 中发挥作用?我可以创建一个函数并在添加或删除某些内容时监听placeUsers 节点。但棘手的部分是我需要每个地方的统计数据。

我无法在客户端执行此操作,因为一个地方可能会吸引数百万用户。

在这里,我粘贴了(一小部分)我当前的数据库设置。

{
    "users": {
        "<user-push-key>": {
            "name": "",
            "birthdate": 2138349423489,
            "gender": "male"
        }
    },
    "placeUsers": {
        "<place-push-key>": {
            "<user-push-key-1>": true,
            "<user-push-key-2>": true,
            "<user-push-key-3>": true
        }
    },
    "places": {
        "<place-push-key>": {
            "name": "",
            "location": ""
        }
    }
}

【问题讨论】:

    标签: angular firebase firebase-realtime-database


    【解决方案1】:

    与大多数传统 SQL 数据库不同,Firebase 的实时数据库不太适合临时聚合查询。您必须预先知道要跟踪哪些统计数据,并在数据流入/通过您的系统时更新它们。

    做这个客户端当然是可能的,但确实不理想。这是使用刚刚发布的Cloud Functions for Firebase 的完美用例。它最接近use-case of sanitizing incoming messages

    child counter 是聚合函数的一个很好的简单示例。

    【讨论】:

    • 当然是一个很好的解决方案,但是当用户更改他的生日时,您不需要更新所有 placeStatistics 吗?你不会知道他以前的生日,你仍然需要更新用户订阅的所有 placeStatistics。
    • 您可以适应现有值的变化,因为您的函数获取当前值和先前值。其他用例可能需要不同的方法。
    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多