2009-05-14 5 views
0

Я новичок в NHibernate. Кто-нибудь может объяснить мне, как это связано с большим набором данных?NHibernate Информация

Если у меня есть 100gb данных, я хочу получить через Nhibernate, я думаю, что это возможно с ISession. Если я использую ISession, он будет хранить в памяти? Если он хранится в памяти, если какие-либо изменения в базе данных будут выполнены, что произойдет?

Эти сомнения могут привести меня в замешательство. Может кто-нибудь предложить мне?

Заранее спасибо

+0

Я не понимаю вашу ситуацию. Что вы подразумеваете под «большим набором данных»? Как он структурирован? Является ли это столько строк, или это один капля? Является ли модель базы данных уже определенной? Является ли объектная модель уже определенной? Какова фактическая проблема, которую вы должны решить? –

ответ

0

Сессия NHibernate не только реализовать «единицы работы» модели, но также реализует паттерн «Identity Map».

То есть, когда вы извлекаете сущность из хранилища данных в первый раз в сеансе, NHibernate будет извлекать этот объект из БД.

Если вы хотите получить тот же объект снова , используя тот же сеанс, то NHibernate не будет извлекать его из БД, но он вернет ссылку, которую он уже выбрал. Конечно, это верно только в том случае, если вы используете один и тот же экземпляр сеанса, когда вы получаете этот же объект во второй раз.

Когда вы вносите изменения в сущность, а тем временем кто-то другой меняет один и тот же объект и сохраняет эти изменения в БД, то, в конце концов, вы не увидите этих изменений, так как вы не можете ожидать, что NHIbernate отслеживает всю базу данных и проверяет, изменил ли кто-то другой (и сохранил) объект, который у вас есть в памяти.

Поэтому рекомендуется, чтобы ваши сессии были недолговечными. Чтобы не перезаписывать какие-либо изменения elses, вы можете легко реализовать оптимистичную блокировку в NHibernate.

Но, интересно ... Вы уверены, что NHibernate - хорошее решение для вашей проблемы? Какое приложение вы собираетесь строить?

+0

Спасибо за ваш ответ. Обычно мое приложение предназначено для работы с большими кусками данных. Чтобы получить большие куски данных за раз и делать манипуляции и передавать эти данные в окна и веб-формы. Целесообразно использовать NHibernate для этой цели? – user98454

+0

Что вы будете делать с вашими данными? В основном это CRUD-операции с очень небольшой логикой? Как вы моделируете эти данные? Вы сможете это сделать в NHibernate, но в некоторых случаях было бы лучше не использовать NHibernate. –

+0

Я буду использовать эти данные в основном только для операций CRUD. Не могли бы вы объяснить мне некоторые случаи, которые не используют nhibernate? Спасибо – user98454

0

Я не знаю, что вы хотите делать с данными, поэтому я не могу дать вам хороший ответ. Когда вы говорите о 100 ГБ, я предполагаю, что вы хотите передать данные в другую базу данных или среду хранения. Почему вы не смотрите на инструмент ETL?

Смежные вопросы