Какие проекты, связанные с большими БД, не подходят для использования с NHIbernate? - PullRequest
4 голосов
/ 10 августа 2011

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

Поэтому мне интересно, когда вы не выберете NHibernate и не предпочтете другую (что именно?) Архитектуру слоя БД?Конечно, я спрашиваю о случаях, когда мы говорим о больших реляционных БД, очевидно, что они не могут решать задачи для нереляционных / sql БД

Ответы [ 3 ]

4 голосов
/ 10 августа 2011

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

Глядя на это с двух сторон, это, вероятно, не подходит для приложений, где:

  • модель объекта / данных проста, и нет существенных затрат, связанных с несовпадением объектов / отношений
  • кодирование рядом с БД важно с точки зрения производительности, архитектуры или удобства обслуживания
  • приложение имеет однонаправленный поток данных (т. Е. В первую очередь это средство записи или считывания данных)
1 голос
/ 10 августа 2011

NHibernate работает только с реляционными базами данных. Если вы использовали на своем сервере решение NoSQL (например, RavenDB / MongoDB / etc), вы не сможете использовать NHibernate.

Тем не менее, я использую NHibernate для каждого проекта, где вышеупомянутое не применяется. После того, как вы преодолели начальную кривую обучения, связанную с ней, у вас действительно нет причин не использовать ее, за исключением, возможно, как упомянуто @degorolls, в сценариях, где ваше приложение в первую очередь выполняет запись данных. Вы получаете слишком много от использования NHibernate, чтобы не использовать его даже в простых приложениях, в которых пользовательский интерфейс расположен прямо над хранилищем данных.

0 голосов
/ 10 августа 2011

NHibernate не лучший выбор, когда вам нужно обрабатывать огромное количество данных, например, когда вы выполняете задачи синхронизации или репликации. Это будет очень медленно. В этом случае лучше использовать некоторые службы интеграции SQL Server.

Также, если вам нужно выполнить действительно сложные запросы, API запросов может встать на вашем пути. QueryOver - это здорово, но когда вам не нужно создавать объединения и сложные подзапросы. LINQ еще недостаточно развит, чтобы решить все вопросы, связанные с SQL.

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