guzz是一套用來解決ORM、多數據源管理、以及通用數據計算的數據層框架,為系統在數據層的設計提供一站式解決方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代這2個東西。
guzz主要功能與特點:
- 現代大規模系統設計,技術上吸收了ibatis/hibernate的優點
- 支持像hibernate一樣的對象化持久、映射和方便的增刪改查
- 支持像ibatis一樣,讓dba參與sql設計的復雜數據庫操作和優化
- 支持應用程序使用大量的數據庫和主從讀寫分離
- 支持超越范式的特殊關聯、非結構化數據等異構資源的統一管理
- 支持數據表在多組機器間水平分布(Shard),并自動維護多組機器之間的分布式事務
- 支持1張表按照業務規則分切成多張小表(Shadow),并支持每張小表擁有自己特殊的屬性字段(Custom)
- 支持組件化服務(SOA),構建企業/項目實施基礎平臺
- 提供面向對象的數據庫讀取標簽(JSP Taglib),加快頁面展示層的快速變更、開發與部署
- 支持配置管理服務器,可以使用一套軟件系統對所有應用程序的配置進行統一管理
項目地址:http://code.google.com/p/guzz/
文檔:http://www.guzz.org/wiki/GuzzGuide
1.2.7正式版 更新介紹:
- 支持表分切。允許同一對象按照業務規則,分別存儲在不同的表中。如新聞評論:新聞頻道的評論存放在 tb_c1,娛樂:tb_c2,體育tb_c3,其他:tb_c4,滿足同類在線數據的數據表平行擴展需要。表分切命名為:Shadow Table。
- 支持自定義屬性表。允許分切后的每張小表擁有自己的動態對象屬性和字段。如購物網站中:商品對象擁有統一的名稱、價格、編號、評分等,但不同的商品可能有自己特殊的屬性,如圖書擁有ISBN和出版社作者,服裝擁有尺碼、顏色、款式等等。自定義屬性允許程序只定義1個商品域對象,然后通過自定義屬性和切表,將每1種特定的商品分切到1張自己特殊的表中,這張表同時擁有商品通用的字段以及這種商品自己的字段,查詢時可以按照特殊字段直接在數據庫中進行關系查詢。在guzz中,自定義屬性的定義允許存儲到數據庫中,像普通對象一樣動態生成和管理,不用配置復雜的xml。自定義屬性命名為:Custom Table。
- 增加并行任務支持。用于多個遠程服務同步的調用,降低等待時間。
- 增加hilo和seqhilo主健生成策略。至此,hibernate支持的常見主健生成策略,guzz都支持了。
- 增加外掛環境接口。如果在spring中啟動,允許在guzz中獲取spring定義的bean。
應用示例說明:
本次更新有很多新概念需要介紹,因此篇幅較長。詳細的示例和說明請參看:
表分切:
http://www.guzz.org/wiki/GuzzShadow
自定義屬性表(基于表分切):[url]http://www.guzz.org/wiki/GuzzCustomTable [/url]
并行任務執行(基于服務):
http://www.guzz.org/wiki/GuzzFutureService
主健生成策略:
http://www.guzz.org/wiki/GuzzHbm
下一版本計劃:
- 數據庫自動分庫支持。允許同一張表,分散在多臺數據庫中。
- 提供更多對服務的支持。
- 探索SASS(軟件就是服務)的數據層模型。
- 其他。