Хорошо, вы вытащили часть данных из базы данных и представили ее пользователю.Все прекрасно в мире.Теперь надоедливый пользователь хочет применить дополнительную фильтрацию к данным.Предполагая, что мы не обращаемся к массивным наборам данных с помощью курсоров и тому подобного, данные уже находятся в памяти.Мне бы очень хотелось их там отфильтровать.
Если данные быстро не меняются и вероятность некоторой степени устаревания приемлема, то нет веских причин возвращаться в базу данных для извлечения.подмножество того, что у вас уже есть.Вы уже перевели данные по проводам один раз, зачем делать это снова.
Если данные действительно нуждаются в обновлении, забудьте все, что я только что сказал, и попросите БД об этом.
Идея, вероятно, находится где-то посередине, которая будет определена вашим уровнем доступа к данным.Здесь вы будете следить за возрастом данных и следить за тем, чтобы, даже если пользователь продолжал изменять фильтрацию одного и того же набора данных в течение нескольких часов, он периодически обновляется из базы данных.Запрос на отфильтрованные данные также должен быть представлен этому слою, чтобы ваше приложение не обращало внимания на то, действительно ли оно выбрано или просто отправлено из памяти.Такое разделение интересов поможет вам двигаться вперед, если вы когда-нибудь решите, что тот или иной подход (память или база данных) на самом деле всегда лучше, поскольку вы сможете изменить базовый код и оставить свое приложение без изменений.