首页 > 解决方案 > Firebase Realtime 与 Firebase Firestore 文档加载时间的差异

问题描述

我想知道,即使使用非常简单的代码,为什么 Firestore 比使用 Firebase 的实时数据库慢得多。


云火库:

冷启动:函数执行耗时1562 毫秒

热启动:函数执行耗时132 ms

exports.firestore = functions.https.onRequest((req, res) => {
    var teamRef = instance.collection('teams').doc("TGQ");
    teamRef.get().then(doc => {
        res.status(200).send(doc.data()).end();
        return;
    }).catch(error => {
        res.status(200).send("Document cant be found").end();
    });
});

实时数据库

冷启动:函数执行耗时815 毫秒

热启动:函数执行耗时13 ms

exports.realtimedb = functions.https.onRequest((req, res) => {
    var realtime = admin.database();
    realtime.ref('/teams/' + "TGQ").once('value').then((snapshot) => {
        var document = snapshot.val();
        res.status(200).send(document).end();
        return;
    }).catch(error => {
        res.status(200).send("Document cant be found").end();
    });
});

为什么 Cloud Firestore 使用简单的功能时动作如此缓慢?我个人认为,对于我正在运行的项目,Firestore 是适合我的,但它在冷启动时慢了一倍,在热启动时慢了 10 倍,这似乎非常令人反感。

两台服务器也都托管在 US Central 1 上。我已经研究了它们运行的​​ js 文件的复杂性,这两个示例是从同一个文件运行的,以给出一个均匀的结果。

标签: node.jsfirebasefirebase-realtime-databasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


冷启动加载时间的差异通常纯粹是 SDK 大小的函数。Cloud Firestore 的 SDK(加上它的依赖项)比实时数据库的 SDK 大得多,而且这个额外的代码必须加载到每个新实例中。

文档加载时间的差异更难分解。它通常是您运行 Cloud Functions 的位置与数据库所在位置之间的距离、建立连接所需的跃点数、读取数据的带宽以及使用的协议的开销的混合。

两个数据库之间的基础架构、体系结构和协议非常不同,因此很难将它们进行比较,而不仅仅是一个简单的:“看看,X 更快”,正如您在此处看到的那样。


推荐阅读