2011-06-08 62 views
6

我的部門決定轉移到我們的一些大型Oracle數據庫的哈希分區/分片。我們將在不同的模式下分割我們的實體。我一直負責做一個尖峯來評估不同JPA實現的適用性。用於哈希分區/使用JPA分片的庫

我已經告訴過的兩個重點是EclipseLink和Apache OpenJPA/Slice。我們以前只使用Hibernate,但Hibernate Shards處於測試階段,似乎不再積極開發(最新版本是在2007年),所以我們沒有考慮它。

我會做我自己的評估和試驗實施,但我不相信我會得到這些實施的整體質量的良好感受。如果您在生產環境中使用OpenJPA和/或EclipseLink,特別是在共享數據庫的情況下,我希望瞭解您的經驗(正面和負面),您對整體質量的看法,以及是否可以製作相同的如果有機會,再次選擇。

回答

4

OpenJPA的切片可能是在一個分片數據庫環境JPA應用程序的一個選項。

OpenJPA Slice自1.2版開始提供,並且隨Websphere 7.0和更高版本一起提供。 Slice的基本使用合同是保留完全相同的基於JPA的應用程序代碼,以便以水平分區的數據庫分片工作,而不會以任何方式影響數據庫模式。數據庫碎片可能來自不同的供應商。

切片遵循基於策略的設計,讓用戶的應用程序來控制哪些碎片/片將堅持新的情況下,查詢如何有針對性地進行切片等

基本限制的子集(這是典型的任何分片環境)是持久性域模型應該遵守樹約束模式。本質上,給定一個存儲在分片A中的實例x,x的持續閉包,即直接或間接從x到達的一組實例,也必須存儲在同一個分片A中。當持久化x時,分片會自動計算閉包。

如果應用程序可以忍受這樣的限制,Slice可能是一個很好的選擇。

有時,某些實例可能在閉包中共享,例如,國家代碼或貨幣代碼。 Slice確實提供了在多個分片中複製這種「主數據」實例的規定。

支持abelian /可交換分片的聚合操作(MAX,MIN,SUM)。不支持AVG等非阿貝爾聚合。排序或前N個查詢也受支持。

有關切片的更多信息可以在下面的參考文獻中找到

[1] OpenJPA的用戶手冊:http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_slice

[2] IBM developerWorks文章:http://www.ibm.com/developerworks/java/library/os-openjpa/?ca=drs-

+0

我聽說切片是自切片面包以來最好的。 – Rick 2011-06-09 17:51:37

4

EclipseLink的數據分區支持作爲2.2版本基本產品的一部分發布。

它支持哈希分區和其他幾種類型的分區(值,範圍)以及用戶定義的策略。 2.3版本還包括對Oracle RAC,UCP和WebLogic GridLink的集成支持。

見, http://java-persistence-performance.blogspot.com/2011/05/data-partitioning-scaling-database.html

+1

那麼,你有我們嗎?編輯它?如果是這樣,你對此有何看法?我不在尋找文檔鏈接,我已經知道他們都支持散列分區。 – 2011-06-09 15:47:03

0

如果你希望你可以使用外部工具,這不僅隱藏了來自應用程序開發人員的分片邏輯,還隱藏了來自BI用戶,DBA等的分片邏輯。 退房ScaleBase