在Firebase JS中记录用户操作

时间:2018-04-15 12:43:42

标签: firebase firebase-realtime-database

我想在Firebase应用上记录以下用户操作:

  • 登录/退出
  • 页面输入/输出
  • 行动时间戳

现在,我使用自己的函数将操作记录到数据库位置" root>用户日志> [用户ID]"。 每个操作都记录为
[以毫秒为单位]:[动作]

这些日志会在我的数据库中放入大量数据 但是,我不会访问存储在用户日志位置的数据,因此我认为这不会降低数据库中其他位置的读取操作速度。

  • 问题1:上述信念是否属实?
  • 问题2:是否有更好的方法来记录自定义用户操作?

我首先考虑在云存储中创建一个csv文件并将用户操作附加到该文件,但后来意识到为了写入csv文件,我首先要下载它,所以我决定写入数据库会更快(更容易)。

感谢。

1 个答案:

答案 0 :(得分:0)

如果将数据写入未读取任何数据的位置,则该写入操作不会影响从数据库中其他位置读取数据的操作。

但是存储您永远不会阅读的数据是不可能的。否则可能没有理由存储它。更有可能的是,您希望在某个时刻读取/查询此数据。

鉴于日志数据的仅追加,日益增长的性质,Firebase不太可能提供您当时所需的查询功能。因此,我建议将数据存储在一个更适合用例的系统中:存储大量数据并查询。这种系统的一个完美例子是Google的BigQuery。

将数据导入BigQuery的一种常用方法是继续从客户端执行您现在所做的操作:将其写入数据库。然后创建一个Cloud Function,它触发来自数据库的传入日志数据,将该数据写入BigQuery,然后从数据库中删除它。

使用这种方法,您只使用Firebase数据库进行临时存储,并在BigQuery中完成繁重工作。