1

我想从后端云函数内部读取整个火力地堡数据库到一个变量,如下所示:的火力地堡云功能:读取整个数据库到内存

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

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

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

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

  2. 我希望一旦我的数据库来存储外的一个错误,由于生长的功能会崩溃。如果是这种情况,我们可以预计什么样的内存限制会崩溃? (例如,10MB)。

非常感谢您的任何建议!

回答

2

这在技术上是完全可以从你的火力地堡数据库的所有数据读入内存中。

只要宿主进程提供足够的内存,这将工作。如果没有足够的内存,脚本将崩溃。

这是不可能什么的内存量,这将崩溃的说法,因为这取决于JSON数据大小,数据格式(许多小的节点将使用比一个大的节点更多的内存),以及其他因素。

+0

好极了!谢谢你的超级快速反应Frank!我还注意到,在您编辑我的问题时,您添加了一个链接,它解释了256MB是最大DB数据提取大小。这远远超过我的需要!假设我只声明这个单一的“dbData”变量,有一个用户,并且所有其他都相同并且简化:您还知道变量在Firebase云服务中可以实现的最大内存大小是多少? –

+2

Cloud Functions运行在相当标准的Node.js中。最大变量的大小将取决于自身的Node.js和[您的云功能环境的内存大小(https://stackoverflow.com/questions/44500155/how-is-memory-allocated-to-a-google-cloud -功能)。 –

+1

完美!谢谢!该链接非常有用。本来我已经进入这个环节,但那里什么都没有,但是点击我选择了我的组织并找到了这个项目。该链接(https://console.cloud.google.com/functions/list)显示该功能默认分配了256MB的内存(您可以将其增加到2GB)。我另外运行测试,并且能够分配256MB数量级的变量(但从未超过256MB)。我所有的问题都解决了。再次感谢您提供有用的信息! –

相关问题