guzz是一套用來進行快速開發和高性能網站設計的java框架,通過ORM、多數據源數據管理、以及通用數據處理,為系統在數據層的設計提供一站式解決方案。用於替代或者補充hibernate或ibatis,並提供更多的大型系統架構設計支持。
基本介紹
- 中文名:guzz
- 什麼是guzz:guzz是一套用來進行快速開
- 功能與特點:現代大規模系統設計,
- 功能與特點2:支持像hibernate一樣的對象化
簡介,定義,功能特點,設計理念,ORM,數據管理,數據處理,綜述,套用效果,
簡介
定義
guzz是一套用來進行快速開發和高性能網站設計的java框架,通過ORM、多數據源數據管理、以及通用數據處理,為系統在數據層的設計提供一站式解決方案。用於替代或者補充hibernate或ibatis,並提供更多的大型系統架構設計支持。
功能特點
guzz的目標是使得大型化網站設計更加簡單,團隊分工更加明確,框架在使用時更少出問題。主要功能:
1. 現代大規模系統設計,技術上吸收了ibatis/hibernate的優點
2. 支持像hibernate一樣的對象化持久、映射和方便的增刪改查
3. 支持像ibatis一樣,讓dba參與sql設計的複雜資料庫操作和最佳化
4. 支持線上載入與調試SQL。按照套用策略,從檔案/資料庫/Web Service等途徑,動態提取與使用SQL語句(Dynamic SQL)
6. 支持超越範式的特殊關聯、非結構化數據等異構資源的統一管理
7. 支持數據表在多組機器間水平分布(Shard),並自動維護多組機器之間的分散式事務
8. 支持1張表按照業務規則分切成多張小表(Shadow),並支持每張小表擁有自己特殊的屬性欄位(Custom)
9. 支持組件化服務(SOA),構建企業/項目實施基礎平台
10. 提供面向對象的資料庫讀取標籤(JSP Taglib),加快頁面展示層的快速變更、開發與部署
設計理念
ORM
guzz的ORM功能參考ibatis和hibernate的設計而來,同時具備ibatis的複雜查詢在xml中配置以及簡單的CRUD類似hibernate全部對象化管理的特點,適用於大部分資料庫操作比較簡單(關心進度和技術門檻),而某些性能攸關 sql需要單獨維護和調優的項目(關心性能)。
數據管理
多數據源管理是指guzz可以同時管理多組資料庫,在執行查詢時根據要查詢的對象,自動分配到正確的資料庫機器組執行查詢操作。每一組可能包含主從,guzz自動分配主從庫的操作。這樣做到的效果是:在資料庫設計時表的存儲位置和主從設計完全對開發人員透明;並在以後需要擴展時,可以按照表將資料庫分散到多組機器上,並行擴展。
多數據源管理還包括對異構數據的統一管理,如一些對象的某些屬性並不保存在資料庫里,如基於某種考慮需要先驗證在讀取或先查快取再讀資料庫等。對於這種另類的方式,往往開發人員都是遇到一個特殊代碼處理一個,非常混亂;而guzz可以通過自定義屬性載入進行統一管理,在普通開發人員看來,並不需要了解數據的具體存儲和讀取過程。使用這些異構來源數據,就像使用普通的pojo一樣簡單。這類場景尤其適合於後台開發與前端頁面設計分離的開發團隊,對前端提供的接口越簡單越統一,實施成本就越低(如產品部門與實施團隊),對後端產品的侵入也越低。
數據處理
guzz將某些通用的數據和處理模型定義為服務(Service),如用戶登錄與認證、 Session 管理、IP位址到地理位置的映射、通過字元獲取驗證碼圖片等。這些服務包括數據和數據的運算處理,這些數據和數據運算guzz當作一類特殊的數據進行管理,用於多個項目之間實現共享。這些服務合在一起可以構成企業或項目的基礎平台,越積累越多,guzz通過對這些服務的重複利用大幅度降低重複開發成本。
綜述
guzz並不僅僅是提供一種ORM映射,而是提供一套完整的數據層架構,用於解決項目中可能遇到的各種數據類型和數據處理策略,統一數據接口,簡化項目架構設計。guzz提供的可配置的多數據源管理方式,每個大型系統都有自己的實現策略;guzz抽象出這些,對於新項目就不用再摸索了,尤其是多資料庫組和主從分離更是可以為系統提供面相未來的支持。
套用效果
我說下我們自己使用的效果吧:
1. 框架性能上沒有看得出的快慢區別。
2. 以前我們用hibernate較多,一般資料庫設計就是一個庫,讀寫全部做。現在在設計時大家腦子裡面直接就是分出3個資料庫(可能部署在1台mysql上)--業務主庫,臨時信息庫,日誌庫。然後資料庫安裝時直接主從安裝,主從使用。雖然看起來庫複雜了,但程式上沒有任何成本代價,基本上已經形成一種設計流程。
3. 編程上,一開始開發人員還是建個spring action類 + 在dao和manager中增加需要的方法 + 修改dispatcher-servlet.xml配置映射 + jsp實現view。但現在很多功能都是直接jsp,用taglib直接讀庫,基本上後台的讀資料庫操作頁面已經看不到action的影子了。java代碼比先前的工程,同樣的功能少了大概60%-70%。
4. 我們的系統一般後台功能比較複雜,以往編輯要改點東西大家都很鬱悶。現在抵制少了很多,基本上就是改改jsp或者在複製1個新的jsp改改,然後傳到伺服器上,一大堆集群機器的重啟工作都免了,無論是開發還是部署都很省事。和php差不多。
5. 我們是面向網友的web套用,企業系統開發不清楚。希望有幫助。