Моя команда работает с третьей стороной CMS, которая использует Solr в качестве индекса поиска. Я заметил, что авторы используют Solr как базу данных, в которой каждый возвращаемый документ содержит два поля:
- Идентификатор документа Solr (в основном имя класса и идентификатор базы данных)
- XML-представление всего объекта
Таким образом, в основном он выполняет поиск по Solr, загружает XML-представление объекта, а затем создает экземпляр объекта из XML, а не ищет его в базе данных с использованием идентификатора.
Чувство кишки говорит мне, что это плохая практика. Solr - это индекс поиска, а не база данных... поэтому мне больше нужно выполнять наши сложные поисковые запросы против Solr, получать идентификаторы документов, а затем вытаскивать соответствующие строки из базы данных.
Является ли текущая реализация безупречной, или есть данные для поддержки идеи, что это созрело для рефакторинга?
EDIT: Когда я говорю "представление XML" - я имею в виду одно сохраненное поле, которое содержит строку XML всех свойств объекта, а не несколько сохраненных полей.