阅读更多

18顶
8踩

企业架构

原创新闻 guzz1.2.5 发布(内容已更新)

2010-01-05 10:02 by 正式记者 myreligion 评论(20) 有8645人浏览
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的目的并不仅仅是提供一种ORM映射,而是提供一套完整的数据层架构,用于解决项目中可能遇到的各种数据类型和数据处理策略,统一数据接口,简化项目架构设计。guzz提供的可配置的多数据源管理方式,相信每个大型系统都有自己的实现策略;guzz抽象出这些,对于新项目就不用再摸索了,尤其是多数据库组和主从分离更是面相未来。

项目地址:http://www.guzz.org/
工程地址:http://code.google.com/p/guzz/
基本理念:guzz不仅仅是一套Java API,他将在项目管理、人员管理、产品在中国落地、以及项目质量控制与扩展性设计等方面提供完整的解决办法。guzz提供的功能包括:ORM,异构数据整合,服务化支持以及前端页面分离并快速开发模型。

项目管理
由于项目紧迫,人手不足,新手太多或者老员工已经疲劳,您的项目往往是这样:


同样的资源,同样的工程量,guzz将为你自动产出如下架构:


在此图中,所有模块都是可选的。刚开始可以按照传统架构运行业务,当需要时,随时调整配置自动完成扩展,代码不用修改,以解决项目维护难题。

人员管理
对于中小型公司或项目实施部门,工作分配往往这样:


基于guzz框架后,guzz模型将要求:


其中的橙色部分在传统架构下很难实现,下面一节将重点介绍。总的来说,人员应当按照技术能力,而不是体力分配工作。

中国国情的产品落地

根据经验,在中国肯花钱购买的项目一般都会要求定制。在定制过程中,一般后台功能和内部流程是不变的,往往需要变化的就是页面;例如论坛列表页面要求增加一个公告,要求显示出好友列表,要求把用户A(总裁)的帖子自动放在第1条,等等。对于这些变化,基于传统的MVC架构,需要先修改manager提供接口获取数据,在修改Action提取数据,在修改jsp显示数据,从上往下代码修改无一幸免。如果是一套产品,有几个项目实施下来,产品核心会越来越小,项目间代码相互冲突,管理越来越困难,而产品团队基本上也都全部下放到了项目实施团队(java底层代码实施团队往往不愿意碰)。一套产品计划也就接近宣告结束了。

guzz框架解决了这个问题。guzz设计了一套数据读取标签,用于前端页面的定制。基于guzz的产品,可以完成上图的人员组织架构。在这个架构中产品开发团队和页面团队合作打造出产品,而实施团队负责在已有的前端页面(jsp/css/js等)上进行修改,完成产品落地。在这个过程中,产品团队只需要提供产品的数据库和领域对象模型即可,而实施团队也不需要关心底层代码实现(或许是个jar包)。guzz提供有专门的前端页面文档来培训实施团队的基础技术。

Guzz技术功能

Guzz提取了hibernate和ibatis设计的优点,融合使用,并增加很多全新的功能。总的来说,可以理解为:guzz=hibernate + ibatis + fundemental service platform + more...。主要包括:
   
  • 现代大规模系统设计
  •    
  • 支持像hibernate一样的对象持久,映射和方便的增删改查
  •    
  • 支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
  •    
  • 支持大量的数据库和主从分离
  •    
  • 支持数据表在多组机器中水平分布(Shard)
  •    
  • 组件化服务(SOA),构建企业/项目实施基础服务平台
  •    
  • 提高xx%倍效率的快速开发
  •    
  • 支持配置管理服务器,对所有应用程序的配置进行统一管理

完整的介绍请参看:http://www.guzz.org/wiki/GoodForMe

了解更多:http://www.guzz.org/

入门教程:http://www.guzz.org/wiki/GuzzGuide

前端实施人员或页面工程师教程:http://www.guzz.org/wiki/TaglibGuide

Guzz版本:

Guzz版本从1.2开始。在guzz之前曾经设计过另外一个框架来完成类似理念,前两次由于引入了大量的annotation,涉及很多父子、关联等自动识别的东西,比较复杂。在实际项目实践中发现,很容易用错,也不好理解,现在已经全部废弃。Guzz1.2为第3版设计,到目前我们的几个项目用得都还算顺利,开发人员上手很快,一天就能干活。这也是guzz以后将坚持的:简单,实用。

1.2.6开发计划:

  • 提供byte, smallclob, smallblob, clob, blob/raw数据类型支持
  •    
  • 提供几个常见的异构数据自定义Loader
  •    
  • 提供更多数据库支持和数据库支持测试
  •    
  • 补全guzz mapping的配置说明以及自定义数据loader和service的开发文档

18
8
评论 共 20 条 请登录后发表评论
20 楼 myreligion 2010-01-08 11:27
wujiazhao88 写道
是不是虚拟数据库之类的东西啊?


实际的数据库都是物理的,可以分布在多台机器上。guzz增加了一层,让开发人员看不到具体的数据库位置,直接操作对象即可,guzz完成对象到具体数据库的映射。

19 楼 wujiazhao88 2010-01-07 19:26
是不是虚拟数据库之类的东西啊?
18 楼 jimmy.shine 2010-01-06 16:13
建议把英文名改成guzzdi,中文名称叫“谷子地”,把产品叫做“集结号”。
最后还是没有吹响!
这一句比较雷:招实习生就行,老员工全部开掉。
17 楼 skydream 2010-01-06 10:05
大致看了一下,感觉很乱,都不知道是干什么用的。

这个感觉很糟糕,如此多的版面却连自己是干什么的都不能表述清晰,我无法相信里面的东西,飘过吧
16 楼 shinezhou 2010-01-06 09:50
太乱了.


15 楼 myreligion 2010-01-06 09:21
liuruncheng 写道
什么玩意啊?写得乱78糟,没看清是啥。这个思路来设计软件就很可怕……


不好意思,写的技术方面少了一些。前面发过一个帖子具体介绍过思路,也与人进行了一些讨论,所以就略过了,而是专注于能够实现的目标来说。目标不仅仅是纯技术上的,技术只是手段。guzz包括3个技术方面:ORM + 异构数据整合读取与操作 + 服务接口进行基本数据处理,这3个方面基本上囊括了应用系统的数据模型架构,所以说guzz是一套数据解决方案架构,不仅仅是ORM。

关于技术方面的思路与讨论请参看:http://www.javaeye.com/topic/511581

14 楼 myreligion 2010-01-06 09:16
lookdd1 写道
看了看你官网上的quick start 没见比起h有多么更简单啊。。也没见你怎么处理OR映射啊,不是你喊开发效率提高xx%  就能提高的,拿出代码来说话啊。。。。


提高效率不是在底层代码上提高,而是在前端页面上上体现的。java设计和映射方面成本与hibernate类似,但使用guzz taglib在前端页面开发与维护方面会降低很多成本。

13 楼 Xsen 2010-01-05 23:19
想法很好,关注
12 楼 cats_tiger 2010-01-05 22:10
看的我都手痒了,要不偶也写一套框架
11 楼 Lunatica 2010-01-05 17:03
又见银弹级框架
10 楼 phoenixup 2010-01-05 17:02
我是来支持一下楼主的~~~~目前,先关注看看~~
9 楼 jansel 2010-01-05 16:34
看了一遍,没看懂到底想表达啥;再看一遍,直接受不了。

建议大家跳过这个新闻,不知所云。
8 楼 lookdd1 2010-01-05 15:10
看了看你官网上的quick start 没见比起h有多么更简单啊。。也没见你怎么处理OR映射啊,不是你喊开发效率提高xx%  就能提高的,拿出代码来说话啊。。。。
7 楼 liuruncheng 2010-01-05 15:08
什么玩意啊?写得乱78糟,没看清是啥。这个思路来设计软件就很可怕……
6 楼 wuzijingaip 2010-01-05 13:42
什么呀?!
5 楼 rocwon 2010-01-05 13:22
ORM怎么又项目管理又人员。。。 
4 楼 超级潜水艇 2010-01-05 12:45
怎么项目名一个比一个怪,比赛呢
3 楼 huruxing159 2010-01-05 12:12
不错 。希望越来越好。支持国人的项目
2 楼 h521999 2010-01-05 12:01
bbyyzhang 写道
不太适用!

为什么?说说见解
1 楼 bbyyzhang 2010-01-05 11:38
不太适用!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • RUP 迭代开发计划的两种方法

          李 华领, 项目经理, IBM2009 年 5 月 14 日随着软件技术的发展、客户需求的变化越来越快、对应用软件项目的交付的要求也越来越要跟上市场的变化,RUP 非常适合这样的开发场景,

  • 项目规划技巧(转)

    项目规划技巧项目计划技巧对于现今的软件开发人员来说是必需的。这里有一些帮助您有效地计划下一个项目的建议。   认识到信心来自规划的过程,而不是计划本身。  创建项目计划会迫使您早在编写代码之前就考虑如何构建您的系统——减少项目的...

  • 什么是粗粒度与细粒度,它们的区别又是什么?

    爱的

  • 粗粒度与细粒度

    <br />粗粒度和细粒度的区别主要是出于重用的目的,像类的设计,为尽可能重用,所以采用细粒度的设计模式,将一个复杂的类(粗粒度)拆分成高度重用的职责清晰的类(细粒度).对于数据库的设计,原责:尽量减少表的数量与表与表之间的连接,能够设计成一个表的情况就不需要细分,所以可考虑使用粗粒度的设计方式.<br /> <br />简单点,给你两个接口,你看看<br />细粒度的查询任务的接口<br />interface TaskService{<br />  public List getTaskById(int

  • POI基于事件模式解析百万数据,完成百万数据导入

    事件模式:它逐行扫描文档,一边扫描一边解析。由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是个巨大优势。

  • poi和easyExcel基于Java操作Excel学习笔记

    Excel和读写和文件的读写没有本质的区别,都是属于IO操作,我们使用原生的IO就能解决Excel的导入和导出,当然操作起来比较麻烦,性能也不高,这次我们就学习poi和easyExcel(它们都属于第三方工具)的方式去基于Java和Mysql...

  • 详解POI的使用方法(DOM和SAX的方式)及存在的不足

    本文包含以下内容,由于篇幅较长,可以根据需要选择阅读: 1. POI的介绍 2. 如何使用POI及POI的不足 3. 如何使用easyexcel

  • 基于机器学习方法的POI品类推荐算法

    在美团商家数据中心(MDC),有超过100w的已校准审核的POI数据(我们一般将商家标示为POI,POI基础信息包括:门店名称、品类、电话、地址、坐标等)。如何使用这些已校准的POI数据,挖掘出有价值的信息,本文进行了...

  • 基于大数据POI基因图谱的再生技术研究

    摘要:本文从海量POI数据中找出再生特征,构建基因图谱,基于大数据技术提出了POI数据横向扩展、地理描述纠正、错误信息的最优处理标准和方案。 关键词:大数据 POI再生技术 1.引言 伴随着网络数字地图与位置...

  • springboot 基于自定义注解poi导入导出excel

    1.导入poi 依赖 &lt;!-- poi导入导出 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&lt;/artifactId&gt; &lt;version&gt;3.13&lt;/version&gt; &lt...

  • POI

    Poi(适合小数据量) Apache POI 官网:https://poi.apache.org/ POI是Apache软件基金会的,POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。 所以POI的主要功能是可以用Java操作...

  • poi的使用以及详解,poi的maven依赖

    POI 常用场景 将用户信息导出为excel表格(导出数据…) 将Excel表中的信息录入到网站数据库(习题上传…)大大减轻网站的录入量! 开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中! 操作...

  • POI报表入门,excel,使用事件模型解析百万数据excel报表

    POI报表入门,excel   1.pom依赖: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;...

  • POI、easyExcel、Hutool-poi

    POI、easyExcel、Hutool-poi

  • 深度解析论文 基于 LSTM 的 POI 个性化推荐框架

    基于 LSTM 的 POI 个性化推荐框架AbstractQuestionMethodModelIntroduction作者为什么研究这个课题?参考模型介绍① word2vec②CBOW模型③ LSTM长依赖存在的问题LSTM 网络LSTMs的核心思想一步一步理解LSTM相关工作与...

  • POI导出excel的几种方式及HSSFWorkbook的代码实现

    由于时间问题,文中代码没有进行细致的分析讲解  POI是Apache软件基金会的开放源码函式库是Apache下的顶级项目,提供API给... POI导出Excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生报错...

  • 【狂神说Java】POI技术详解

    目录狂神视频地址1、常用信息2、Apache POI3、easyExcel4、xls和xlsx区别5、POI Excel 写 03和07版本方式5.1小数据量5.2大文件写HSSF(03)5.3大文件写XSSF(07)5.4大文件写SXSSF6、POI Excel读 03和07版本方式6.1 ...

  • poi导出excel

    JavaPOI导出Excel有三种形式,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWorkbook。 HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls; XSSFWorkbook:是操作Excel2007后的版本,...

  • easyexcel和poi对比_POI 和 EasyExcel

    POI 和 easyExcel 讲解转自狂神老师,仅作为个人笔记使用一、POI常用进程1、将用户信息导出为excel表格(导出数据....)2、将Excel表中的信息录入到网站数据库(习题上传....)开发中经常会设计到excel的处理,如导出...

  • POI兴趣点在地图显示上进行聚合算法的研究

    在实现基于地图的业务时,当地图上需要展示的兴趣点(POI)过多时,一般会基于图面效果和渲染性能的考虑,在大比例尺展示完整的业务数据,而在小比例尺展示聚合态数据。在处理不同数量级、不同分布形态的POI时,如何...

Global site tag (gtag.js) - Google Analytics