Где я должен сортировать и фильтровать? внутренний или внешний?

#django #reactjs #graphql

#django #reactjs #graphql

Вопрос:

Я сталкиваюсь с концептуальным конфликтом относительно того, следует ли мне сортировать и фильтровать во внешнем интерфейсе или бэкэнде.

Некоторые предположили, что логика должна быть в бэкэнде и ограниченном количестве данных, т.Е.) клиенту следует предоставлять 10-100 результатов за раз, если у вас есть миллионы наборов данных, чтобы сократить время загрузки страницы. Что меня смущает, так это то, что, если одновременно сортируется и фильтруется много клиентов (т. Е. 100 пользователей) Если это так, то вам приходится постоянно сортировать и фильтровать миллионы записей 100 раз, что, я думаю, замедлит работу сервера.

Если я предполагаю, что мой набор данных составляет около 10000 — 100000, и у меня 10-50 пользователей, одновременно использующих приложение, и если начальная временная загрузка не имеет значения так сильно, как если бы это было приложение частного предприятия, т. Е. ERP, где должна работать логика фильтрации и сортировки?

Ответ №1:

На ваш вопрос нет единственно правильного ответа, ниже приведены плюсы и минусы вашего вопроса.

Сортировка на стороне сервера:

  1. Накладные расходы сервера на сортировку данных.

  2. Меньше передачи данных для пользователя, поскольку вы уже отправляете отфильтрованные данные.

  3. Пользовательский интерфейс может быть плохим, если сортировка занимает много времени, пользователь будет ждать с пустым экраном.

Сортировка на стороне пользователя:

  1. Увеличенное использование сети как для сервера, так и для пользователя, следовательно, длительный процесс для сервера.

  2. Может немного улучшить пользовательский интерфейс, это может увеличить общее время загрузки страницы, но у пользователя будут некоторые данные на его экране.

Лучше всего было бы использовать лучшее из обоих миров, а не придерживаться одного.

Вы можете использовать кэширование на уровне сервера, что может повысить производительность вашего приложения.

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

1. Как бы вы использовали лучшее из обоих миров? Не могли бы вы привести мне пример?

2. Хранение часто запрашиваемых данных в отсортированном виде, если набор данных очень мал, затем обработайте его на стороне потребителя.