這裏有些問題在StackOverflow的有關NHibernate和多個數據庫(動態連接),解決我認爲,最好的解決辦法是保持的SessionFactory的緩存(每個數據庫)和緩存配置,以更快地構建SessionFactory。緩存的SessionFactory和配置與NHibernate多個數據庫
我想知道,如果這種做法是正確的,和主要表現在:什麼是每實例和時間內存消耗方面的SessionFactory的「權重」要建?
更多關於我的方法:
衆所周知,1號和2級高速緩存住在SessionFactory的「境界」,我們可以假設內存消耗可能(涉及的ISession的開啓量,其中包括第一級緩存級別)。
對於第二級緩存級別,在我的情況下,數據庫共享相同的模式,並有一些通用只讀表,我可以使用全局緩存實現共享所有SessionFactory只讀表,這對我的項目聽起來不錯。
我說錯了嗎?這種方法可能會帶來什麼樣的性能和內存問題?考慮一個Web應用程序(ASP.NET MVC,而不是Webforms)訪問它需要的每個HTTP REQUEST中的數百個(或者可能是數千個)數據庫,找到用戶數據庫並解決對它的訪問(獲取,使用和部署ISession)。
連接池: 又是怎麼回事連接池?它應該有什麼樣的行爲來管理數百或數千個數據庫池,就像這種方法一樣?一些與NHibernate一起使用的實現可能會有所幫助,或者我需要構建自己的?
我們使用的NHibernate的multinenant設置與約20-30會話工廠,我不記得確切的數字,但內存消耗是越來越對每個租戶增加明顯較高。您可以使用自定義的'IConnectionProvider'實現窮人的多租戶支持,但在這種情況下您將無法使用二級緩存。多租戶功能由原始Hibernate(每個多個數據庫連接一個會話工廠)支持,並且存在NHibernate的pull請求,在github上實現此功能的一部分 - https://github.com/nhibernate/nhibernate-core/pull/91。 – Vasea 2013-03-25 15:45:55