Время входа в систему MongoDB Realm и Stitch - почему Realm такая медленная?
Я создал веб-инструмент с использованием баз данных MongoDB, размещенных на Atlas, подключенных через Stitch. Насколько я понимаю, Stitch теперь обесценивается и был преобразован в MongoDB Realm. Поэтому я попытался обновить свой сайт, используя новое приложение Realm вместо Stitch. Хотя это работает, анонимный вход в систему теперь по некоторым причинам намного медленнее. Я провел небольшое тестирование, используя код, предложенный в документации MongoDB:
let t0 = performance.now()
app.logIn(Realm.Credentials.anonymous()).then(() => {
let t1 = performance.now()
db.collection('test').find({
category: "test"
}, {limit: 10})
console.log("Login took " + (t1 - t0) + " milliseconds.")
})
Мне нужно невероятное
1200 ms
чтобы залогиниться.
let t0 = performance.now()
app.auth.loginWithCredential(new stitch.AnonymousCredential()).then(() => {
let t1 = performance.now()
db.collection('test').find({
category: 'test'
}, {limit: 10}).asArray()
console.log("Login took " + (t1 - t0) + " milliseconds.")
})
Со старым приложением Stitch обычно требуется меньше
20 ms
чтобы залогиниться.
Есть идеи, что здесь происходит или как это решить? Я знаю, что есть возможность сначала аутентифицировать пользователя, как описано в их документации, однако я пробовал это, и это так же медленно.
Есть ли на самом деле необходимость в обновлении до нового приложения Realm, например, перестанет ли старая реализация Stitch работать в недалеком будущем? Любая информация по этому поводу будет оценена;)
Обновление: я провел немного больше исследований, и, похоже, причина, по которой Realm работает медленнее, заключается в том, что вход в систему с использованием
logIn(Realm.Credentials.anonymous()).then(() => ...
приводит к двум запросам на публикацию, но с использованием
auth.loginWithCredential(new stitch.AnonymousCredential()).then(() => ...
выполняет ли аутентификация и загрузка содержимого в одном запросе. С Realm я дважды получаю время ожидания TTFB 500-700 мс, со Stitch это происходит только один раз.
1 ответ
В настоящее время я создаю серверную часть приложения с нуля с помощью MongoDB Realm. Я использую их веб-SDK для аутентификации с использованием учетных данных электронной почты и пароля. Моя производительность в оба конца составляет в среднем около 600-800 мс.
Для моего приложения (использующего интерфейс Vue) это приемлемо для меня. Я не знаю, каковы ваши требования, но вы можете попробовать использовать новый SDK. К сожалению, я сталкиваюсь с низкой производительностью запросов в службе конечных точек GraphQL, которую предоставляет Realm. Согласно ветке, которую я начал на их форуме, их инженеры изучают это.