NHibernate와 여러 데이터베이스 (동적 연결)에 대한 StackOverflow의 몇 가지 질문은 SessionFactory (데이터베이스 당) 캐시와 캐시를 유지하는 것이 최선이라고 생각합니다. 구성으로, SessionFactory를 더 빠르게 빌드 할 수 있습니다.NHibernate를 사용하는 다중 데이터베이스를위한 SessionFactory와 설정
이 접근 방식이 올바른지 알고 싶습니다. : 주로 인스턴스와 시간당 메모리 소비 측면에서 SessionFactory의 "가중치"는 무엇입니까?
MY 접근 방식에 대해 자세히 1, 2 레벨 캐시는 SessionFactory에 "영역"에 살고 있다고 알려진을
, 우리는 메모리 사용량이 포함 (연 ISession의 양에 관련이있을 수 있다고 가정 할 수 1 차 캐시 레벨).
제 2의 캐시 레벨의 경우 데이터베이스가 동일한 스키마를 공유하고 일부 COMMON 읽기 전용 테이블이있는 경우 모든 세션 팩터에서 읽기 전용 테이블 만 공유하는 글로벌 캐시 구현을 사용할 수 있습니다.
맞습니까?이 방법으로 어떤 종류의 성능 및 메모리 문제가 발생할 수 있습니까? 수 백 또는 수천 개의 데이터베이스에 액세스하는 웹 응용 프로그램 (ASP.NET MVC, Webforms가 아닌)을 고려하여 각 HTTP REQUEST에서 사용자 데이터베이스를 찾고 액세스 권한을 지정해야합니다 (ISession 가져 오기, 사용 및 폐기).
연결 풀 : 연결 풀은 어떻게됩니까? 그러한 접근 방식과 같이 수백 또는 수천 개의 데이터베이스 풀을 관리해야하는 행동에는 어떤 종류가 있습니까? NHibernate와 함께 사용되는 현재 구현 중 일부는 도움이 될 수도 있고 내 자신을 생성해야 할 수도 있습니까?
우리는 대략 20-30 세션 팩토리의 다중 설치 프로그램에서 NHibernate를 사용했는데 정확한 숫자는 기억하지 못합니다. 그러나 추가 된 각 테넌트에 대해 메모리 소비가 눈에 띄게 높아졌습니다. 커스텀'IConnectionProvider'를 사용하여 가난한 사람의 멀티 테넌시 지원을 구현할 수 있지만이 경우에는 2 차 캐시를 사용할 수 없습니다.멀티 테넌시 기능은 원래의 Hibernate (다중 db 커넥션 당 하나의 세션 팩토리)에 의해 지원되며, github에서이 기능의 일부를 구현하는 Hibernate에 대한 pull 요청이있다 - https://github.com/nhibernate/nhibernate-core/pull/91. – Vasea