快速业务通道

Java理论与实践:在没有数据库的情况下进行数据库查询 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
是所需要的结果,那么可以修改 SQL 查询或者编写新 的查询,然后再试一试。如果改变的只是 SQL 查询的话,那么这个编辑-编译- 运行周期可能很快。如果 SQL 不是存储在程序中,那么您甚至可以跳过这个周 期的编译部分,这样可以快速生成报告的原型。确定所需要的报告后,将它们构 建到应用程序中就很容易了。

因此,虽然对于添加新结果、寻找特定的结果和进行特殊传输来说,内存中 的数据结构都表现得很不错,但是对于报告来说,这些变成了不利条件。对于所 有其自身结构与数据库结构不同的报告,Visitor 都必须创建一个全新的数据结 构,以包含报告数据。因此,每一种报告类型都需要有自己的、特定于报告的中 间数据结构来存放结果,还需要一个用来填充中间数据结构的访问者,以及用来 将中间数据结构转换成最终报告的后处理(post-processing)代码。似乎需要 做很多工作,尤其在大多数原型报告将被抛弃时。例如,假定您想要列出所有从 其他网站链接到某个给定网站的页面的报告、所有外部页面的列表报告,以及站 点上链接该页面的那些页面的列表,然后,根据链接的数量对报告进行归类,链 接最多的页面显示在最前面。这个计划基本上将数据结构从里到外翻了个个儿。 为了用 Visitor 实现这种数据转换,需要获得从某个给定网站可以到达的外部 页面链接的列表,并根据被链接的页面对它们进行分类,如清单 3 所示:

清单 3. Visitor 列出被链接最多的页面,以及链接到它们的页面

public class InvertLinksVisitor {    public Map<Page, Set<Page>> map = ...;    public void visitLink(Link link) {      if (link.linkFrom.site.equals(targetSite)        && !link.linkTo.site.equals(targetSite)) {        if (!map.containsKey(link.linkTo))          map.put(link.linkTo, new HashSet<Page> ());        map.get(link.linkTo).add(link.linkFrom);      }    } }

清单 3 中的 Visitor 生成一个映射,将每一个外部页面与链接它的一组内 部页面相关联。为了准备该报告,还必须根据关联页面的大小对这些条目进行分 类,然后创建报告。虽然没有任何困难步骤,但是每一个报告需要的特定于报告 的代码数量却很多,因此快速报告原型就成为一个重要的目标(因为没有提出报 告要求),试验新报告的开销比理想情况更高。许多报告需要多次传递数据,以 便对数据进行选择、汇总和分类。

Java理论与实践:在没有数据库的情况下进行数据库查询(2)

时间:2010-12-20 IBM Brian Goetz

我的数据模型王国

这时,缺少一个正式的数据模型开始成为一项不利因素,该数据模型可以用 于描述收集的数据,并且可以用它更容易地表示选择和聚合查询。也许懒惰不像 开始希望的那样有效。但是,虽然这个应用程序缺少正式数据模型,但也许我们 可以将数据存储到内存中的数据库,并凭借该数据库进行查询,通过这种方式借 用一个数据模型。有两种可能会立即出现在您的脑海中:开源的内存中的 SQL 数据库 HSQLDB 和 XQuery。我不需要数据库提供的持久性,但是我确实需要查 询语言。

HSQLDB 是一个用 Java 语言编写的可嵌入的数据库引擎。它既包含适用于内 存中表的表类型,又包含适用于基于磁盘的表的表类型,设计该引擎为了将表完 全嵌入到应用程序中,消除与大多数真实数据库相关的管理开销。要将数据装载 到 HSQLDB,只需编写一个 Visitor 即可,该 Visitor 将遍历内存中的数据结 构,并为每一个将要存储的实体生成相应的 INSERT 语句。然后可以对这个内存 中的数据库表执行 SQL 查询,以生成报告,并在完成这些操作后抛弃这个“数 据库”。

噢,忘记了关系

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号