NHibernate-дружественный дизайн базы данных для динамически воссозданных таблиц - PullRequest
0 голосов
/ 01 марта 2010

У меня есть вопрос дизайна приложения для гуру nhibernate, нашего там. Мое приложение отслеживает список отправленных документов и отображает данные, проанализированные из этих документов, в виде списка транзакций с возможностью поиска.

Лица / организации, предоставляющие эти документы, могут (в любое время) заменить предыдущую версию документа обновленной версией. В списке транзакций с возможностью поиска должны отображаться только транзакции из самой последней версии каждого документа.

Внешний интерфейс этого приложения использует NHibernate для доступа к данным для отображения и поиска транзакций.

Моя первоначальная идея состоит в том, чтобы поместить в мою таблицу документов триггер, который будет отбрасывать и воссоздавать таблицу транзакций после любой вставки, обновления или удаления таблицы документов с использованием сохраненного процесса.

У этой идеи, похоже, есть два недостатка:

1) Поскольку хранимому процессу потребуется, возможно, минута для восстановления списка транзакций, будет период времени, когда таблица списка транзакций будет неполной или даже не существующей.

2) Данные, которые будет считывать NHibernate, станут недействительными после перестроения таблицы транзакций, а любая кэшированная информация будет недействительной.

Я рассмотрел несколько альтернатив:

1) использование представлений в качестве «таблиц», которые NHibernate использует для чтения из базы данных, и обновления этих представлений, чтобы они указывали на новые таблицы данных после успешного перестроения. Однако это не решает возможную проблему кэширования.

2) выполнить перестроение таблицы транзакций через сеанс NHibernate, хотя я не могу понять, как это будет работать. NHibernate должен был бы знать о «живом» наборе транзакций, а также о «ожидающем» наборе транзакций, и ожидающий набор транзакций должен был бы быть сопоставлен с некоторыми динамически именованными таблицами.

Может быть, я просто превращаю себя в крендель.

У кого-нибудь есть идеи о том, какими будут лучшие практики NHibernate для решения подобных проблем?

1 Ответ

2 голосов
/ 02 марта 2010

Я рекомендую использовать Lucene.net для индексации и поиска в этих документах. И вам не нужен триггер, и любой SP - Lucene автоматически обновит все индексы.
А вот несколько уроков по люцену:
Лучшая практика Lucene.Net
Каковы хорошие ресурсы по использованию Lucene.Net?
http://www.lucenetutorial.com/lucene-in-5-minutes.html (это для Java-версии, но API тот же)

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