Это скорее вопрос дизайна / архитектуры, хотя он также легко может найти свое отражение в коде. Какая методология является наилучшей при улучшении производительности приложения Java, развернутого на сервере приложений, которое обращается к базе данных для получения записей?
Повысьте производительность на уровне базы данных, настроив SQL, ORM, любую другую форму настройки ИЛИ в коде Java, выбирая лучшие коллекции на основе данных, настраивая код и т. Д.
В одном из реальных сценариев у меня было требование проанализировать некоторые данные из большого двоичного объекта в поисках некоторых атрибутов.
Один из вариантов заключался в том, чтобы получить все данные из дБ и перебрать список в поисках определенных атрибутов, тем самым фильтруя записи;
Другой вариант - ограничить данные из БД с помощью сложных запросов / хранимых процедур и построить REG Ex с использованием функций Oracle для BLOB.
Хотел бы узнать несколько практических указателей из реальных проблем. Здесь мы говорим о миллионах строк данных, о которых я говорю. Я действительно прибегал к фильтрации с использованием уровня БД, но до сих пор плохо тестировал очень большие наборы данных.
Изменить:
Вопрос прост: это приложение / модуль имеет внешний интерфейс и серверную часть, которые общаются с Oracle. Необходимо получить и отфильтровать данные из большого двоичного объекта, содержащего сериализованный объект Java. Что эффективнее?
Разбор BLOB с помощью функции RAW и построение регулярных выражений (которые могут завершиться ошибкой из-за изменения данных в BLOB) ИЛИ получить данные через JDBC (API строится поверх некоторого уровня сохраняемости с использованием спящего режима), а затем фильтровать его на уровне Java.
Это реальная проблема с работающим приложением. Я даже поговорил с администратором баз данных, и мне предложили фильтровать его на уровне Java.
Справочные вопросы:
Как избежать необработанной переменной ошибка слишком длинная длина в SQL Developer?