【问题标题】:Cloud Functions for Firebase: Reading the Entire Database into MemoryFirebase 的 Cloud Functions:将整个数据库读入内存
【发布时间】:2018-01-24 22:46:41
【问题描述】:

我想将整个 Firebase 数据库从后端 Cloud Function 中读取到一个变量中,如下所示:

exports.transformUserData = functions.https.onRequest((request, response) => {

    admin.database().ref('/').on('value', function (snapshot) {

        var dbData = snapshot.val();
        ...

    });
    ...
});
  1. 这样安全吗? (从内存或美元成本的角度来看,在这种情况下速度不是问题)。

  2. 我预计一旦我的数据库因内存不足错误而增长,该函数将崩溃。如果是这种情况,我们可以期望它在多大的内存限制下崩溃? (例如,10MB)。

提前感谢您的任何建议!

【问题讨论】:

    标签: node.js firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    技术上完全可以将 Firebase 数据库中的所有数据读入内存。

    只要托管进程有足够的可用内存,它就可以工作。如果内存不足,脚本将崩溃。

    不可能说这会在多大的内存量下崩溃,因为这取决于 JSON 数据大小、数据格式(许多小节点将比一个大节点使用更多内存)和其他因素。

    【讨论】:

    • 太棒了!感谢您的超快速响应弗兰克!我还注意到,在您编辑我的问题时,您添加了一个链接,说明 256MB 是最大的 DB 数据提取大小。这远远超出了我的需要!假设我只声明了这个单一的“dbData”变量,只有一个用户,其他一切都相同且简化:您是否还知道一个变量在 Firebase 云函数中可以实现的近似最大内存大小是多少?
    • 云函数在相当标准的 Node.js 中运行。最大变量大小取决于 Node.js 本身和 memory size of your Cloud Functions environment
    • 完美!谢谢!该链接非常有用。最初我进入了这个链接,但那里什么都没有,但点击周围我选择了我的组织并找到了该项目。链接 (console.cloud.google.com/functions/list) 显示该函数默认分配了 256MB 内存(您也可以将其增加到 2GB)。我还进行了测试,并且能够以 256MB 的数量级分配变量(但从不超过 256MB)。我所有的问题都解决了。再次感谢您提供有用的信息!
    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 2021-05-20
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多