В облачной функции лучше выполнять 2 чтения по одному значению в каждом или 1 чтение, содержащее около 20 полей?

#firebase #firebase-realtime-database #google-cloud-functions

#firebase #firebase-realtime-database #google-cloud-функции

Вопрос:

У меня есть пользовательский объект, который содержит более или менее 20 различных полей, и среди них классические firstName и lastName .

Мне было интересно, с точки зрения производительности, что было бы лучше всего сделать, если бы я хотел получить поля firstName и lastName .

  • выполните 2 чтения в users/user_id/firstName и users/user_id/lastName
  • выполните 1 чтение, чтобы users/user_id захватить все, даже если мне нужно всего 2 поля

Первый из них извлечет только те данные, которые мне нужны, но выполнит 2 «сетевых» вызова между серверами облачных функций и серверами баз данных реального времени, в то время как 2-й вызовет только 1.

Интересно, можно ли пренебречь вызовами между 2 двумя серверами, так как это действительно быстро или нет.

Ответ №1:

Если ни одно из полей в «полной записи» не является большим (100 КБ ), различия в производительности между вариантами, скорее всего, будут незначительными, и вам следует предпочесть более простое решение, которое, скорее всего, представляет собой единственную выборку всей записи. Технически, полная запись может потребовать большей стоимости передачи, но даже в этом нет уверенности, поскольку каждый запрос / ответ сопряжен с накладными расходами.