阅读更多

15顶
0踩

企业架构

原创新闻 guzz1.2.8 beta2发布--支持动态加载在线调试SQL

2010-05-26 09:57 by 正式记者 myreligion 评论(11) 有5234人浏览
SQL

guzz是一套用来解决ORM、多数据源管理、以及通用数据计算的数据层框架,为系统在数据层的设计提供一站式解决方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代这2个东西。

guzz主要功能与特点:
  • 现代大规模系统设计,技术上吸收了ibatis/hibernate的优点
  • 支持像hibernate一样的对象化持久、映射和方便的增删改查
  • 支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
  • 支持在线加载与调试SQL。按照应用策略,从文件/数据库/Web Service等途径,动态提取与使用SQL语句(Dynamic SQL)
  • 支持应用程序使用大量的数据库和主从读写分离
  • 支持超越范式的特殊关联、非结构化数据等异构资源的统一管理
  • 支持数据表在多组机器间水平分布(Shard),并自动维护多组机器之间的分布式事务
  • 支持1张表按照业务规则分切成多张小表(Shadow),并支持每张小表拥有自己特殊的属性字段(Custom)
  • 支持组件化服务(SOA),构建企业/项目实施基础平台
  • 提供面向对象的数据库读取标签(JSP Taglib),加快页面展示层的快速变更、开发与部署
  • 支持配置管理服务器,可以使用一套软件系统对所有应用程序的配置进行统一管理
项目地址:http://code.google.com/p/guzz/
文档:http://code.google.com/p/guzz/wiki/WikiHomePage?tm=6

1.2.8 beta2更新介绍:

支持动态管理SQL:

动态SQL(Dynamic SQL)不是指应用程序动态的拼接SQL语句,动态SQL是指应用程序可以动态的获取配置好的SQL语句。在获取的过程中,SQL语句如何管理,由应用系统自身决定。

换句话说,在ibatis中,SQL语句配置到ibatis.xml文件中,在guzz中,配置到guzz.xml中。但当配置完成后,在系统运行期间这些SQL都是不能变动的,如果需要添加1个或者修改优化1个SQL语句,必须重启应用才能生效。而动态SQL允许应用系统动态的管理(添加/修改/优化/删除)sql语句以及查询结果到对象的映射关系(ORM),对于SQL的变更不再需要重启应用系统,以简化维护与应对需求变化。

动态SQL主要有两种应用场景:SQL优化和动态数据源。具体介绍请参看:http://code.google.com/p/guzz/wiki/TutorialDynamicSQLService

改进远程服务设计:

增加对hessian, burlap协议的支持。目前guzz内置支持phprpc, hessian, burlap三种协议进行RPC远程调用。使用时,三种协议可以透明替换,类似spring对RMI类协议的封装。具体介绍请参看:http://code.google.com/p/guzz/wiki/TutorialFutureService

增加枚举类型与类型参数化支持:

按照TopLink的模式,支持JDK5 enum。Enum在使用时和普通类型一样,不需要实现特殊的接口(hibernate要求实现接口)。Enum支持通过JPA的Enumeration注释声明,也支持在hbm.xml中通过xml定义。通过xml的定义方式参看:http://code.google.com/p/guzz/wiki/TutorialHbmXml

类型参数化为guzz的特殊功能,用于处理动态SQL参数和Jsp Taglib条件参数时,将String类型自动转换成需要的数据类型。参数化类型主要为日期和枚举。详细介绍:http://code.google.com/p/guzz/wiki/TutorialHbmXml

增加对数据库保留字的支持:

在定义数据库列名时,可以用`(ESC下面的键)将列名引起来,避免字段名称与数据库保留字冲突。此功能与hibernate提供的处理保留字方法相同,但guzz只支持字段,不支持`表名`。

增加对Microsoft SQL Server的支持(未测试):

参考hibernate实现了一个SQL Server 2000 & 2005的dialect,不支持分页。没有测试过。Dialect实现类:org.guzz.dialect.MSSQLDialect

Guzz已经能够支持的数据库和数据类型请参看:
http://code.google.com/p/guzz/wiki/TutorialGuzzXml

应用示例说明:

http://code.google.com/p/guzz/wiki/TutorialDynamicSQLService

下一版本计划:

  • 修复发现的bug。
  • 设计一些常见的服务,推广guzz基础服务理念。

15
0
评论 共 11 条 请登录后发表评论
11 楼 wendal 2010-06-06 21:15
7454103 写道
狠狠的回答:用的人不多 !

刚起步,是这样的啦. Nutzhttp://nutzam.com 不也一样.
持续改进,慢慢就会多起来的 
10 楼 myreligion 2010-05-31 15:15
llade 写道
myreligion 写道
lzstone 写道
hibernate还没整明白又出来一个guzz,orm也是分场合的

和hibernate的应用场景并不一样,某些情况下无论hibernate还是ibatis都不够好用。对于一些简单的小系统,hibernate的确是更好,因为大家都熟悉;而对于某些场景下的某些系统,hibernate会让你非常郁闷。


稍微据几个非常郁闷的例子。可以讨论一下。


举个例子:我们公司之前开发了一套社区产品,基于hibernate和spring开发,标准的dao+action+jsp模型,jsp只做展示,数据由action,manager,dao一层层的传递。产品做得还可以,在一个客户的地方获得了不错的成功,然后就开始以此为样板,到处兜售,销售效果也还不错,很快卖了几家。

然后我们就开始郁闷了,每一家都花了不少钱,都要求定制以融入网站整体,也都要求加入一些小功能,页面做些调整(如增加几个页面展示某些固定分类的数据,把某个论坛版块的帖子当作公告来显示等等)。接着便是整个产品组被分配到实施前线,因为实施团队,从来只做页面二次开发,不改代码(公司的主要业务是发布系统,以前主要是发布系统二次开发),而且源代码他们也没有。由于每一家都要改点东西,一旦改动就是从头到脚的改,最后代码被迫分成很多份,产品变成了项目实施基础代码,每家代码都不一样。

我觉得这是分层架构的一个弱点,如果在之前能够有类似guzz的框架,实现页面获取灵活获取数据的功能,产品实施时,只需要改动jsp即可,这样可以确保项目实施团队完成实施和代码管理。如果配合freemarker和动态SQL将显示模板和定制查询sql配置到数据库,项目相关内容都可以通过数据库来解决,代码只需要一份,项目实施和代码管理会方便很多。
9 楼 norain2050 2010-05-31 14:10
太好了,这是WEB在线应用——经常改变的saas应用关注的重点呀。
8 楼 llade 2010-05-27 16:01
myreligion 写道
lzstone 写道
hibernate还没整明白又出来一个guzz,orm也是分场合的

和hibernate的应用场景并不一样,某些情况下无论hibernate还是ibatis都不够好用。对于一些简单的小系统,hibernate的确是更好,因为大家都熟悉;而对于某些场景下的某些系统,hibernate会让你非常郁闷。


稍微据几个非常郁闷的例子。可以讨论一下。
7 楼 myreligion 2010-05-27 09:38
lzstone 写道
hibernate还没整明白又出来一个guzz,orm也是分场合的

和hibernate的应用场景并不一样,某些情况下无论hibernate还是ibatis都不够好用。对于一些简单的小系统,hibernate的确是更好,因为大家都熟悉;而对于某些场景下的某些系统,hibernate会让你非常郁闷。
6 楼 myreligion 2010-05-27 09:35
wwwcom 写道
奇怪,hibernate也支持写sql的啊,也可以卸载配置文件里读进来执行啊,不过对表切分和多数据源支持倒是有新意

这个和“卸载配置文件重读”并不是一个概念,用途也不一样。
5 楼 luoyahu 2010-05-27 09:09
还是jdbc好。
4 楼 wwwcom 2010-05-27 08:54
奇怪,hibernate也支持写sql的啊,也可以卸载配置文件里读进来执行啊,不过对表切分和多数据源支持倒是有新意
3 楼 lzstone 2010-05-27 08:47
hibernate还没整明白又出来一个guzz,orm也是分场合的
2 楼 7454103 2010-05-27 08:33
狠狠的回答:用的人不多 !
1 楼 liuwenbo200285 2010-05-26 21:33
弱弱的问下,用的人多吗?

发表评论

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

相关推荐

  • 一个完整的SSH项目

    网上下的一个SSH源码。代码没什么问题,就是缺少包(现在我这个版本已经添加好了)。调试了差不多1个星期,各个功能都试了一遍确保没问题。挺经典的一个实例,各个方面都有讲到一点,做为入门类的项目还是非常合适。 ...

  • 【每天一个 Linux 命令】ssh 命令

    ssh 是一个用于登录到远程机器并在远程机器上执行命令的程序。它的目的是取代 rlogin 和 rsh,并在一个不安全的网络上提供两个不受信任的主机之间的安全加密通信。X11 连接和任意 TCP 端口也可以通过安全通道进行...

  • SSH基本概念及常见问题解决

    SSH基本使用

  • vscode使用ssh远程连接失败(及其他问题合集)

    使用xshell或者mobaxterm等远程连接工具,去查看上面这个日志文件,例如: vim /home/user/.vscode-server/.dfd34e8260c270da74b5c2d86d61aee4b6d56977.log 找到其中的报错信息,例如我的是 [15:13:51] [Error: ...

  • kali ssh问题解决

    开机自动启动ssh命令 sudo systemctl enable ssh 关闭ssh开机自动启动命令 sudo systemctl disable ssh 单次开启ssh sudo systemctl start ssh 单次关闭ssh sudo systemctl stop ssh 设置好后重启系统 reboot ...

  • 解决paramiko.ssh_exception.SSHException: Error reading SSH protocol banner问题

    本文主要解决python通过paramiko模块ssh连接linux服务器的时候出现的ssh protocol的失败问题

  • ssh用法及命令

    如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,...

  • 解决Linux ubuntu下SSH无法连接的问题

    转自http://www.kongzid.com/archives/linuxs,SSH服务分为客户端和服务器。顾名思义,我想用 putty/...因为Ubuntu默认是不安装SSH服务的,所以在安装之前可以查看目前系统是否安装,通过以下命令: ps -e|grep ssh

  • 使用Linux ssh远程登录另一个Linux设备

    根据我的需要,这个需求被分成两个部分: 一、vscode终端远程打开另一台机器上的代码。 通过remote-ssh插件解决。 二、通过一个linux终端向另一个linux终端发送命令 通过linux的ssh命令。

  • vscode ssh远程连接失败问题及解决

    当我们使用 Remote 连接到远程服务器时,在服务器会有一个 .vscode-server 的隐藏目录,该目录的作用,就是存放不同 VSCode 版本的远程连接信息。把上面连接的替换成 提交的最长的一串号,比如这个版本就得到下面的...

  • windows开启ssh服务教程及常见问题

    3.搜索ssh,然后将两个都进行安装。 4.使用上面提供的步骤进入Windows PowerShell或者命令提示符窗口,输入启动SSH服务,想要关闭则输入。 5.最后输入ssh查看是不是和图上一样,如果是,你就安装成功了。希望回答对...

  • SSH使用问题:无法免密登录

    ssh

  • linux ssh连接问题总结与解决方案

    问题一: [root@linuxpcom ~]# vim /etc/ssh/sshd_config [root@linuxpcom ~]# systemctl restart sshd 时 出现Job for sshd.service failed because the control process exited with error code. See "systemct

  • 如何建立一个足够安全的SSH连接?

    使用SSH连接服务器是一件很平常的事,但是,连接是否足够安全是一个令人担忧的问题。本文从如下几个方面介绍了如何建立一个足够安全的SSH连接: 端口 协议 用户 密码 密钥对 ssh-agent 2 端口 第一步就是修改默认...

  • ssh无法远程登陆问题汇总

    注:这里以ubuntu系统为例。ubuntu 20.04 LTS默认安装openssh-server,如果没有安装就需要使用apt...如果没有,则需要重启ssh服务: 2. 检查sshd配置 将PermitRootLogin prohibit-password前面加上#注释掉,添加Perm

  • ssh安装和出现的问题

    一:ssh检查 使用命令ps-e|grep ssh后: 结果显示ssh没有安装成功 二:检测本机与主机连通性 Ping 198.168.174.125 说明主机没有问题 三,重新安装ssh 如果缺少sshd,说明ssh服务 没有启动 或者 ...

  • 解决ssh远程登录不上的问题

    ssh默认端口号为22,查看本机的ssh监听端口号。如果未开启,则开启sshd服务。1、检查sshd服务是否启动。3、保存退出重启sshd服务。查看端口号是否被占用。

  • SSH连接问题:ping通,ssh连接失败

    在同一个局域网中,一台电脑能ping通服务器,但是不能ssh连接; 服务器自身能ssh连接:ssh username@localhost; 解决办法: 我的解决办法是:关闭服务器防火墙 服务器为:Ubuntu系统: 查看防火墙当前状态 sudo ...

  • SSH的工作原理、加密方式以及配置多个ssh key

    本文从SSH工作原理、加密方式开始探究,引出多主机配置ssh连接的密钥选择问题,继续分析ssh_config配置,配以示例配置,干货满满。

  • Ubuntu18.04版本安装ssh及连接ssh的常见问题

    Ubuntu18.04版本安装ssh及连接ssh的常见问题 1.ssh安装远程连接虚拟机的方法 2.安装Ubuntu时会提示一句Please remove the installation medium then reboot: 3.sudoaptinstallnet-tools安装失败问题的解决方法 4....

Global site tag (gtag.js) - Google Analytics