Мультитенанс с Spring JPA - PullRequest
       66

Мультитенанс с Spring JPA

3 голосов
/ 15 марта 2012

Я ищу решение для нескольких арендаторов для моего веб-приложения.Я хотел бы реализовать приложение с отдельной моделью схемы.Я думаю, чтобы иметь источник данных для каждой сессии.Чтобы сделать это, я поместил источник данных и entitymanger в область действия сеанса, но это не работает.Я думаю загрузить файл data-access-context.xml (который включает источник данных и другие bean-компоненты репозитория), когда пользователь ввел имя пользователя, пароль и tenantId.Я хотел бы знать, если это хорошее решение?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Многопрофильность - это немного сложная тема, и ее нужно обрабатывать на стороне провайдера JPA, чтобы с точки зрения клиентского кода ничего или почти ничего не менялось. имеет поддержку мультитенюса (см .: EclipseLink / Development / Indigo / Multi-Tenancy ), только что добавил его недавно.

Другойподход заключается в использовании AbstractRoutingDataSource, см .: Многопользовательский режим в Hibernate .

Использование области видимости является слишком рискованным (также вы получите тысячи соединений с базой данных, по несколько на каждыйсеанс / пользователь. Наконец, EntityManager и базовые соединения с базой данных недоступны для сериализации, поэтому вы не можете перенести сеанс и правильно масштабировать приложение.

0 голосов
/ 10 сентября 2012

Я работал с несколькими мультитенантными системами.Проблема в том, как сохранить открытую архитектуру

  1. и
  2. , чтобы обеспечить решение, которое развивается вместе с вашим бизнесом.

Давайте сначала посмотрим на второй вызов.Многопользовательские системы имеют тенденцию развиваться, когда вам необходимо поддерживать случаи использования, когда к одним и тем же данным (записи) могут обращаться несколько арендаторов с разной емкостью (например, https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458).). Таким образом, в конечном итоге система нуждается в Access Control List.

Чтобы сохранить открытую архитектуру, вы можете кодировать в соответствии со стандартом (например, JPA). Кодирование в EclipseLink или Hibernate делает меня неудобным.

Spring Security ACL предоставляет очень гибкое решение, поддерживаемое сообществом для обоихИспытания. Дайте попробовать. Я справился и был доволен его производительностью. Однако я должен предупредить вас, мне потребовалось некоторое время, чтобы разобраться в этом.

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