Разница во времени загрузки документов Firebase Realtime и Firebase Firestore - PullRequest
0 голосов
/ 23 апреля 2019

Мне интересно, даже с очень простым кодом, почему Firestore значительно медленнее, чем База данных реального времени с Firebase.


Облачное хранилище Fires:

Холодный запуск : выполнение функции заняло 1562 мс

Горячий запуск: Выполнение функции заняло 132 мс

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 мс

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 раз медленнее.

Оба сервера также размещены в Центре США 1.Я посмотрел на сложность js-файла, из которого они запускаются, и эти два примера запускаются из одного и того же файла, чтобы дать ровный результат.

1 Ответ

1 голос
/ 24 апреля 2019

Разница во времени загрузки при холодном запуске, как правило, зависит только от размера SDK. SDK для Cloud Firestore (плюс его зависимости) значительно больше, чем для базы данных реального времени, и этот дополнительный код необходимо загружать в каждый новый экземпляр.

Разницу во времени загрузки документа сложнее устранить. Как правило, это сочетание расстояния между тем, где вы выполняете облачные функции, и базой данных, с количеством прыжков, необходимых для установления соединения, пропускной способностью считываемых данных и накладными расходами используемого протокола.

Инфраструктура, архитектура и протокол между двумя базами данных очень разные, поэтому сравнивать их сложно, кроме простого: «посмотри, Х быстрее», как ты видел здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...