2014-01-27 49 views
0

我們想通過基於用戶組的數據推送數據來水平擴展。這是必需的,因爲數據會很大。現在我們只關注RDBMS。 Spring和hibernate/Eclipse-link是我們的選擇。我幾乎沒有問題,並且我看到類似的問題已經被多次提出。我想再次問這個,因爲我想了解更多的細節。使用spring和hibernate處理多個數據庫

什麼是使用多個數據庫時應該遵循的最佳做法?(下面詳細問題)

  1. 多個會話工廠或單個會話工廠?什麼是推薦的方法?我看到很多關於創建多個會話工廠的帖子,動態數據源實現使用單個會話工廠,並根據用戶組提供不同的數據源。使用具有許多用戶組的單個會話工廠的任何可伸縮性問題?

  2. 所有會話都與會話工廠或底層數據源綁定?我假設多連接池將基於每個分貝創建我是嗎?

  3. Spring的動態數據源實現來處理多個數據庫還是Hibernate多租戶?

  4. 當涉及到使用動態數據源時,它們是否存在Transaction mgmt的任何問題?除了二級緩存,我沒有看到任何帖子。

  5. 如果使用c3P0進行連接池在動態數據源方式下如何處理它?

  6. 以上方法的任何Dos和donts?

回答

0

有由Hibernate人,谷歌開發了一個項目,叫Hibernate Shards。它正好滿足您的需求,可以跨多個數據庫分割數據。

它提供了一個名爲接口:

  • org.hibernate.shards.session.ShardedSession
  • org.hibernate.shards.ShardedSessionFactory
  • org.hibernate.shards.criteria.ShardedCriteria
  • 組織.hibernate.shards.query.ShardedQuery

每一個擴展Hibernate的經典接口(與類似的n ame!)

通過使用Hibernate Shards,所有多租戶邏輯都落後於Hibernate,大多數情況下您不必處理它。

因此事務管理依然存在,就你而言,你將擁有一個分佈式的JTA事務管理器,如果你使用諸如JBoss的應用服務器,事務管理將會容易得多。

+0

我不確定這個項目有多活躍。請參閱http://hibernate.org/others/ – Milind

相關問題