node.js - 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 文件的复杂性,这两个示例是从同一个文件运行的,以给出一个均匀的结果。
解决方案
冷启动加载时间的差异通常纯粹是 SDK 大小的函数。Cloud Firestore 的 SDK(加上它的依赖项)比实时数据库的 SDK 大得多,而且这个额外的代码必须加载到每个新实例中。
文档加载时间的差异更难分解。它通常是您运行 Cloud Functions 的位置与数据库所在位置之间的距离、建立连接所需的跃点数、读取数据的带宽以及使用的协议的开销的混合。
两个数据库之间的基础架构、体系结构和协议非常不同,因此很难将它们进行比较,而不仅仅是一个简单的:“看看,X 更快”,正如您在此处看到的那样。
推荐阅读
- c++ - 如何在 C 或 C++ 中实现 tss2 API 以在代码中使用功能
- node.js - Swagger UI 在 NodeJS 中无法正确呈现
- javascript - 为什么不迭代?
- html - Angular - 动态创建 HTML 元素和 Angular 组件
- java - 如何将 ResponseEntity 转换为 List
- java - Apache NiFi 替换文本
- angular - Angular 9:如何禁用 ios 移动浏览器双击缩放
- python - 通道层和 Redis 之间的通信错误
- python - python pandas group-by sum and mean在不同轴上
- javascript - 在创建倒数计时器并使用来自 redux 状态的数据时获得最大更新