笔者今天获悉Guzz 1.2.7发布下载了,由于笔者第一次接触这个ORM框架而且看到了N多优秀特性的介绍于是乎去Guzz官方转了一圈。关注Guzz项目的朋友可以去官方下载最新的Guzz 1.2.7试用下。由于笔者是Hibernate用户,因此喜欢将新东西与自己熟识的东西做个比较于是乎关注了下Guzz到底和笔者使用的Hibernate有什么不同。
按照官方的说法Guzz是一套采用Java编写的用来进行快速开发和高性能网站设计的框架,通过ORM、多数据源数据管理、以及通用数据处理,为系统在数据层的设计提供一站式解决方案。用于替代或者补充hibernate或ibatis,并提供更多的大型系统架构设计支持。
从Guzz的设计理念来看,Guzz主要目标是针对大型应用而设计,而且其设计吸取了Hibernate和iBaits的优点。作为Hibernate用户来说,笔者遇到的比较大的性能瓶颈在于当业务两和数据量极速膨胀的时候由于Hibernate映射的关系导致无法将数据量庞大的表进行水平的切分。与此同时就是Hibernate的CURD操作并不受用户自己控制,而且如果大量使用QBC或者HQL的时候就无法使用SQL优化所带来的各种遍历。
Guzz技术概述
guzz(谷子)是一套用来解决ORM、多数据源数据管理、以及通用数据处理的数据层框架。guzz可以看作是ibatis/hibernate的一个延伸。
ORM:
guzz的ORM功能参考ibatis和hibernate的设计而来,同时具备ibatis的复杂查询在 xml中配置以及简单的CRUD类似hibernate全部对象化管理的特点,适用于大部分数据库操作比较简单(关心进度和技术门槛),而某些性能攸关 sql需要单独维护和调优的项目(关心性能)。
多数据源管理:多数据源管理是指guzz可以同时管理多组数据库,在执行查询时根据要查询的对象,自动分配到正确的数据库机器组执行查询操作。每一组可能包含主从,guzz自动分配主从库的操作。这样做到的效果是:在数据库设计时表的存储位置和主从设计完全对开发人员透明;并在以后需要扩展时,可以按照表将数据库分散到多组机器上,并行扩展。
多数据源管理还包括对异构数据的统一管理,如一些对象的某些属性并不保存在数据库里,如基于某种考虑需要先验证在读取或先查缓存再读数据库等。对于这种另类的方式,往往开发人员都是遇到一个特殊代码处理一个,非常混乱;而guzz可以通过自定义属性加载进行统一管理,在普通开发人员看来,并不需要了解数据的具体存储和读取过程。使用这些异构来源数据,就像使用普通的pojo一样简单。尤其对于后台开发与前端页面分开的开发团队,对前端提供的接口越越简单越统一,成本就越低(如产品部门与实施团队)。
通用数据处理:guzz将某些通用的数据和处理模型定义为服务(Service),如用户登录与认证、Session 管理、IP地址到地理位置的映射、通过字符获取验证码图片等。这些服务包括数据和数据的运算处理,这些数据和数据运算guzz当作一类特殊的数据进行管理,用于多个项目之间实现共享。这些服务合在一起可以构成企业或项目的基础平台,越积累越多,guzz通过对这些服务的重复利用大幅度降低重复开发成本。
Guzz总结:
guzz的目的并不仅仅是提供一种ORM映射,而是提供一套完整的数据层架构,用于解决项目中可能遇到的各种数据类型和数据处理策略,统一数据接口,简化项目架构设计。guzz提供的可配置的多数据源管理方式,相信每个大型系统都有自己的实现策略;guzz抽象出这些,对于新项目就不用再摸索了,尤其是多数据库组和主从分离更是面相未来。
guzz的目标是使得大型化网站设计更加简单,团队分工更加明确,框架在使用时更少出问题。主要功能:
- Guzz 1.2.7更容易的团队管理和人员分工,编程时更难犯错误
- Guzz 1.2.7现代大规模系统设计,技术上吸收了ibatis/hibernate的优点
- Guzz 1.2.7支持像hibernate一样的对象持久,映射和方便的增删改查
- Guzz 1.2.7支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
- Guzz 1.2.7支持应用使用大量的数据库和主从读写分离
- Guzz 1.2.7支持数据表在多组机器中水平分布(Shard),并自动维护多组机器之间的分布式事务
- Guzz 1.2.7支持1张表按照业务规则分切成多张小表(Shadow),并支持每张小表拥有自己特殊的属性字段(Custom)。
- Guzz 1.2.7支持组件化服务(SOA),构建企业/项目实施基础平台
- Guzz 1.2.7提供面向对象的数据库读取标签(JSP Taglib),加快页面展示层的快速变更、开发与部署
- Guzz 1.2.7支持配置管理服务器,可以使用一套软件系统对所有应用程序的配置进行统一管理
Guzz 1.2.7下载地址:
Guzz 1.2.7下载
[ad#468-60]