2013-07-14 83 views
6

我們目前正在從事web項目的設計,我們必須使用java堆棧。Java堆棧 - ORM與數據庫的可擴展性

考慮到有限的負載,我們可以使用單個數據庫(在我們的例子中爲PostgreSQL)。在這種情況下,像Hibernate這樣的ORM將是一個很好的決定,因爲對象/關係問題始終是最耗費時間和成本的一個。這是使用ORM工具的全部理由 - 便宜,節省很多時間。

但是,這個問題是,我們期待在數據庫層中進行分片和主/從(讀/寫)複製,這對於ORM是一個真正的問題(至少據我所知)。

如果我錯了,請糾正我,我們可以使用java堆棧有一個好的ORM工具。根據鏈接,我知道有一個名爲Hibernate Shards的項目可以解決這個問題,但是它從未通過beta版本,並且在2007年停止了它的開發。

使用常規的Hibernate與分佈式2級高速緩存,我們可以使用節點

與業務邏輯的數量,但這不會解決數據庫的可擴展性的問題,我們仍然可以只使用一個數據庫應用。底線:開源/免費ORM是否適合我們的情況(Java堆棧),還是應該自己實施,即使成本相當高,以提供數據庫可伸縮性以及其他可能的好處。

謝謝!

+0

你在考慮水平分割還是垂直分割? –

+0

鮑里斯,我們考慮水平分割。坦率地說,我不知道「垂直分片」這個詞,你是說垂直分區? –

+0

好的,在這種情況下,您應該可以使用Hibernate的MultiTenant sessionfactory - 您可以爲每個數據庫分配一個連接源,然後選擇使用哪一個。 –

回答

0

我必須對Java數據對象,尤其是對於在http://www.datanucleus.org的實現,特別是如果您使用註釋和類型安全查詢語言,很容易趕上速度和非常快速地做非常有趣的東西。另外,JDO與數據庫無關,因此如果您決定寧願使用關係數據庫以外的其他東西,轉換就相對簡單。由於它使用JDBC驅動程序連接到數據庫,因此在該級別附加的集羣/分片解決方案應該相對透明。 (這完全是我的想法 - 我不知道它是真的,但應該是吧?)

我給了自己兩三天的Hibernate和一本大書,並決定我重複我自己太頻繁,限制自己RDB系統。看一看,看看你的想法。

-1

需要考慮的一個解決方案是購買水平可伸縮性解決方案,它將爲您解決所有這些問題。

存在幾種解決方案,可以在不改變應用程序的情況下進行水平縮放(如分片等技術所需的更改)。