Готово ли производство Nhibernate Shards? - PullRequest
3 голосов
/ 22 июня 2010

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

Кто-нибудь знает статус этого проекта?Кто-нибудь использовал его в производстве?

Если это еще не тот момент, который считается пригодным для использования в производстве, каковы альтернативы?Два основных из них выглядят следующим образом:

  1. Создайте фабрику сеансов для каждой базы данных, а затем обертку для выбора подходящей фабрики для генерации правильного сеанса - мне кажется, это имеет избыточные фабрики сеансов и не слишкомэффективных
  2. Создайте только одну фабрику сеансов, но при вызове opensession передайте ей IDbConnection - что позволит сеансу иметь другое соединение с базой данных.

Меня беспокоит вопрос о том, как NHibernate справится с кэшем 2-го уровня, так как я считаю, что он контролируется фабрикой сеансов - также, как я полагаю, генератор HiLo использует фабрику сеансов.В этих случаях возникнут проблемы с подключением сеансов к различным БД?Например, в итоге мы получим класс MyCompany.Model.User с идентификатором 2 в обеих базах данных, это вызовет конфликты в кэше?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

NHibernate Shards соответствует последним изменениям API NHibernate и теперь поддерживает все модели запросов NHibrrnate, включая Linq.Сложные скалярные запросы в настоящее время не поддерживаются.

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

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

Запросы через шарды плохо подходят для подкачки.Это работает, но может потребовать значительной обработки на стороне клиента.Лучше всего сохранять результирующие наборы как можно меньше и блокировать запросы на отдельные сегменты, где это возможно.

0 голосов
/ 16 февраля 2011

Вы можете взглянуть на Enzo SQL Shard библиотека шардинга для SQL Server. Если вы уже используете NHibernate, возможно, в коде потребуются некоторые изменения,

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