快速业务通道

一个轻量级数据管理与分析平台的实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
的子句替换。对应到操作中,就是可以实现不同地区数据的对比查询,再 使用 JFreeChart 提供图表支持,就可以实现一系列有价值的数据分析功能。

另外,代码 2 的SQL 示例查询的结果集中,POPULATION 表的AREAID 字段虽 然是查询结果集的一部分,但是这个字段并不应该显示在最终用户界面中,查询 出这个字段是为了满足结果集可更新的必要条件。因此,可以提供一个额外的配 置信息,指明查询结果集中的哪些字段在传输到客户端 Applet 后需要被“隐藏 ”起来,客户端 Applet 处理显示时,不显示这些字段,但需维持这些字段和数 据行之间的关联关系不被破坏。

具体的实现细节,请参见本文附带的参考实现代码。

记录用户的增删改操作

如何实现查询操作,前面的小节已经表述了,本节的核心是解决用户的数据修 改如何保存到数据库中。

首先重复一下对关系数据库中的一行记录进行修改的两个必要条件:一是能获 得数据表的名称,二是唯一定位数据行的条件,通常是主键值。通过上一节描述 的模板 SQL中查询列的约定,可以确保目标数据表的主键列都被查询到数据结果 集中,并被封装后传送到客户端 Applet 以供显示。因此,对数据增删改支持的 实现,其实就是需要实现记录用户的增删改操作,并由服务器端根据该记录生成 系列 SQL 语句并执行。

修改操作,可以分为两种情况,一种情况是修改非主键数据列,另一种情况是 修改主键数据列。前者是安全的,也是容易记录的;后者则会带来一些问题:一 是主键重复问题,不过这个无法由程序替用户解决,二是主键被修改后,相当于 数据行的唯一定位条件丢失,如果不能找回原来的主键值,则无法完成相应的 Update 操作,还可能更新错误的数据行。

删除操作,也有两种情况,一种情况是删除时,该行数据的主键列未被修改, 另一种情况时,删除操作时,主键列已经被修改过了。结合修改情况考虑,也会 出现类似的情况,由于主键列已经被修改而造成删除操作无效(主键对应的记录 不存在)或者删除了错误的记录(主键修改后,与另一条已经存在的数据记录一 致)。

对于增加,情况稍微复杂一点,一来是像表 1 所示的地区列,是属于外键关 联数据,要求用户记住描述字段来填写是不合理的,理应提供下拉列表供用户选 择;二来数据表中可能有标识性的ID 字段作为主键,例如自动增加的ID 主键, 可能由数据库维护,也可能由程序维护,需要特别处理。考虑到需要适应不同数 据库平台的限制,保险起见,可以约定都使用程序维护。

维持关联数据的一致性

一旦涉及到数据修改,就有可能涉及到数据一致性问题,例如前面列举的 POPULATION 表记录了人口数据,本文附件的参考实现中,还有一个 ECONOMIC 表 记录了经济数据,其中的人均 GDP 数据是和 POPULATION 表中的总人口以及 ECONOMIC 表中的GDP 有逻辑计算关系的。如果用户修改了总人口数据,那么人均 GDP 理应一并被修改,如果用户修改了 GDP 总值数据,那么人均 GDP 同样也应 重新计算。

数据库触发器理论上是一种选择,但在本文的场景下,它至少有两方面缺点。 首先,它是数据库平台相关的,编写的触发器和存储过程有移植代价;其次,数 据之间的计算关系,属于业务逻辑,在当前分层而治的主流架构思想下,在数据 库中处理部分业务逻辑,这属于业务逻辑的不合理蔓延。

只要换种思路,事情就变得简单了。维持关联数据一致性的逻辑,在 Java 类 中实现;当对应的数据被修改后,只要能够出发相应 Java 类的调用就行了。对 于图 1 所示的一个被管理的数据类别,数据被修改后,可能出发的关联数据计算 是既定的。在配置时,增加一个新的配置项,即数据修改后需要调用的统计实现 Java 类就可以了。配置项的内容可以直接使用 Java 的类名,约定提供默认无参 数构

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号