Должен ли я загрузить результаты базы данных сразу или сделать несколько запросов? - PullRequest
2 голосов
/ 14 апреля 2020

Я хочу отфильтровать большую базу данных со следующими столбцами:

name - max-height - min-height - range - max-angle - min-angle

Я хочу отфильтровать он должен соответствовать определенным критериям, которые пользователь может вставить ранее, например, если пользователь вводит максимальную высоту (80 см), он должен отобразить список всех записей, максимальная высота которых меньше 80 см. (Пользователь также может ввести больше критериев).

Входные данные выглядят так:

Example-Form

Я планирую использовать свойство onchange, чтобы отфильтровать его, пока пользователь вводит что-то.

Я использую node.js в качестве бэкэнда и Vue. js в качестве основного каркаса внешнего интерфейса. Мой вопрос: лучше ли загрузить все данные из базы данных в массив и отправить их во внешний интерфейс и отфильтровать их там, или лучше отправлять запрос в базу данных каждый раз, когда пользователь вводит критерий?

1 Ответ

1 голос
/ 14 апреля 2020

Это зависит от размера набора данных из-за:

  • используемых ресурсов сервера (ЦП, ОЗУ и т. Д. c.)
  • используемой полосы пропускания
  • Время на передачу
  • Использованные ресурсы клиента (ЦП, ОЗУ и т. Д. c.)

[Ресурсы сервера]: В зависимости от доступности сервера ресурсы, вы можете излишне поглощать выделенную емкость хостинга, генерируя и отправляя большие наборы данных. Это может означать более дорогой хостинг и / или замедление работы сервера и медленный пользовательский опыт. Добавление дополнительных одновременных пользователей будет способствовать эффекту.

[Пропускная способность]: То же самое касается использования слишком большой пропускной способности / пропускной способности.

[Время для передачи]: Если отправка большого набора данных занимает слишком много времени, это может создать излишне медленный пользовательский опыт, особенно для пользователей с более медленными соединениями, которым приходится ждать еще дольше.

[Ресурсы пользователя ]: За исключением времени передачи, если набор данных использует слишком много ресурсов пользователя (ОЗУ и т. Д. c.), Что также может привести к замедлению работы пользователя из-за замедления или зависания устройства, особенно на устройствах с меньшей емкостью. Пользователи могут подключаться с самых разных устройств.

[Заключение]: Если эти проблемы не вызывают проблем или набор данных недостаточно велик, чтобы вызвать любую из следующих проблем: пошлите все это, если хотите . Может быть даже выгодно отправить один всеобъемлющий запрос на сервер вместо многочисленных небольших запросов на подключение.

Другие мысли:

[Кэширование]: Это также может быть разумным в зависимости от приложения, отправлять данные один раз на пользователя и сохранять их локально, например, в localStorage пользователя. Затем выполните некоторые проверки, чтобы подтвердить правильность данных, сохраненных при последующих посещениях. (Некоторые ограничения по размеру применяются к localStorage, и они отличаются в разных браузерах.)

[Тестирование]: Вы можете определить, какой размер отсечения приемлем для вашей ситуации, протестировав и проанализировав упомянутые метрики .

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