Превышен срок действия хранилища Firestore для узла

#firebase #google-app-engine #google-cloud-firestore #gcloud

#firebase #google-app-engine #google-облако-firestore #gcloud

Вопрос:

Я хотел бы загрузить коллекцию, которая составляет ~ 30 тыс. записей. Т.е. загрузить ее через.

 const db = admin.firestore();
let documentsArray: Array<{}> = [];
db.collection(collection)
  .get()
  .then(snap => {
    snap.forEach(doc => {
      documentsArray.push(doc);
    });
  })
  .catch(err => console.log(err));
  

Это всегда будет выдавать Deadline Exceeded ошибку. Я искал какой-нибудь механизм, который позволит мне разбивать его на страницы, но я нахожу невероятным, что не могу запросить не такую большую сумму за один раз.

Я думал, что, возможно, из-за моей довольно медленной машины я достиг предела, но затем я развернул приложение simple Express, которое выполняло бы выборку в app engine, и все еще не повезло.

В качестве альтернативы я мог бы также экспортировать коллекцию с помощью gcloud beta firestore export , но она не предоставляет данные JSON.

Комментарии:

1. Почему вы находите это невероятным? Это ожидается в GAE: cloud.google.com/appengine/articles/deadlineexceedederrors . В какой среде?

2. Исправлено, но ~ 30 тыс. повторных записей, каждая из которых составляет примерно несколько кб, не должны быть проблемой. С другой стороны, на гораздо более мощной машине с 64 ГБ оперативной памяти он все еще зависает.

3. У меня возникла эта проблема с моим приложением localhost node при чтении только одного документа.

Ответ №1:

Я не уверен насчет firestore, но в datastore мне никогда не удавалось получить столько данных за один раз, мне всегда приходилось извлекать страницы примерно из 1000 записей за раз и накапливать их в памяти перед обработкой. Вы сказали:

Я искал какой-нибудь механизм, который позволит мне разбивать страницы на корыта

Возможно, вы пропустили эту страницу

https://cloud.google.com/firestore/docs/query-data/query-cursors

Комментарии:

1. Я смог получить 30 тысяч записей, но на гораздо более мощной машине. Если вы получите ответ менее чем за 60 секунд, все в порядке.

Ответ №2:

В итоге проблема заключалась в том, что машина, которая обрабатывала 30 тысяч записей из Firestore, была недостаточно мощной, чтобы своевременно получать необходимые данные. Решаемая с помощью, GCE с n1-standard-4 GCE.