Firestore получает все документы на node.js сервер. Масштабируемость

# #node.js #google-cloud-firestore

Вопрос:

Каждый вечер в 12 вечера я извлекаю всех пользователей из своей базы данных firestore с помощью этого кода.

 const usersRef = db.collection('users');
const snapshot = await usersRef.get();
snapshot.forEach(doc => {
    let docData = doc.data()
    // some code and evaluations
})
 

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

Ответ №1:

Ваш код загружает все документы в коллекцию за один раз. Даже на сервере в какой-то момент у него закончится память.

Вместо этого вы захотите прочитать ограниченное количество документов, обработать эти документы, а затем прочитать/обработать следующую партию документов, пока не закончите. Это называется разбиением данных на страницы с помощью запросов и гарантирует, что вы сможете обрабатывать любое количество документов, а не только то количество, которое может поместиться в памяти.