J2ME移动数据库的选择
当然PointBase并不是J2ME移动数据库产品的唯一选择。在本文的剩余部分我会比较和讨论几种主流的竞争者。在开始以前先让我来阐述一下这个产品的前景。
高端设备上的JDBC数据库
对于运行PersonalJava或Personal Profile的高端设备,数据库能够通过JDBC API被访问。JDBC数据库对于程序来说是最容易的数据库类型。所有的厂商已经至少有一个这种种类的产品。最大的挑战是如何平衡这些功能。我们想要最小而且最快的数据库。它能够支持应用程序所需功能的准确集合。
MIDP设备上的轻量级数据
CLDC(有限连接设备配置Connected Limited Device Configuration)/MIDP并不支持JDBC接口。在MIDP设备上支持复杂数据管理的两个通用方法是:
执行非常轻量的数据库和RMS上的类似JDBC的访问API。这个方法很耗费资源,但根据开发者开发能力和性能支持证明是最好的。
直接扩展RMS类并在扩展的类上执行简单的行序列化,数据访问,索引/搜索和同步方法。这个扩展类是RMS上的一个细小的层次。它能模拟关系表的行为。
在产品评论的章节里我将讨论这两种方法。
同步服务器
众所周知,同步是移动数据库的一个关键性能。大多数数据库厂商有他们自己专有的同步服务器。这些服务器提供许多附加功能来优化在移动环境下的同步过程。同步服务器的重要性能包括如下几点:
智能冲突解决方案
带宽减少
端到端编密码
后台引擎性能调整
异步和可扩展更新
接下来的几章里我将检查和比较几种主流厂商的产品。
HSQL 数据库引擎
开放源码的数据库引擎?HSQL是基于Thomas Mueller的Hypersonic SQL项目。它完全是由Java是编写的同时也是一种广泛用于嵌入式的数据库。它被包含在许多J2EE应用服务器中。在移动设备上,HSQL运行在PersonalJava和FP/PP平台上。HSQL是完全免费的。你能自由地将它重新部署到你的应用程序中,这对移动应用程序来说是容易的。
HSQL提供一个支持%95JDBC接口和所有JDBC数据类型的JDBC驱程。它支持事务,外键甚至Java存储过程。在HSQL中的表能寄存在内存中和保存在磁盘文件中。HSQL只有少于160-KB的存储器足迹footprint。它也为PersonalJava设备发布了一个数据库管理控制台(经过Sharp Zaurus上的测试)
然而,HSQL缺少一些商业移动数据库上所需的高级性能和安全功能。更重要的是,HSQL不能提供任何同步解决方案。它也缺少一个为MIDP设备的解决方案。
PointBase Micro
PointBase是一个纯Java嵌入式数据库方面的主流厂商。PointBase Micro数据库能运行在FP/PP/PersonalJava和MIDP平台上。
在FP/PP/PersonalJava平台上PointBase Micro 数据库仅用91 KB 存储器足迹就能支持大多数JDBC和SQL功能。它也支持例如数据库编密码这样的高级功能。它不支持存储过程和接口CallableStatement。因此MIDP不支持JDBC,PointBase为MIDP提供它自己的轻量级类似JDBC的API。PointBase Micro 数据库的MIDP版本提供了一个用浏览器打开的MIDlet数据库控制台。
PointBase Micro 数据库通过UniSync 同步服务器能容易地同服务器端PointBase嵌入式数据库和Oracle 数据库同步。
Sybase iAnywhere 解决方案
在膝上型电脑上的轻量级数据库ianywhere的SQL Anywhere Studio已经拥有巨大的市场份额。在普遍设备上的移动数据库市场它也有一个强大的份额。Anywhere SQL Studio 的自定义数据库生成器是它一个关键创新。它让用户而不是数据库厂商决定如何平衡数据库存储器足迹和它所支持的功能。
在Anywhere SQL Studio中用户能指定将在应用程序中调用的SQL状态SQL statement。它根据用户对根本性质和事务功能的选择生成一个自定义数据库。所生成的数据库是一个纯Java类以及伴随的一系列用户应用程序能调用的API。使用iAnywhere MobiLink 同步服务器的数据同步API也能加入到自定义数据库中去。
除了自定义数据库生成器,iAnywhere也提供大存储器足迹和移动数据库的一般用途。它包括支持Java储存过程 Java stored procedure在内的许多安全,优化和可用性方面的功能。这些数据库为了达到更好的性能天生就运行在流行的移动平台上。Sybase iAnywhere SQL Studio 现在仍然不能支持MIDP数据库的自动生成。
IBM DB2 Everyplace
IBM DB2 Everyplace是IBM在移动数据库的礼物。对于IBM的客户来说,DB2 Everyplace非常好地整合了其他IBM企业组件(例如,DB2 Universal Database 和WebSphere MQ Everyplace)和IBM开发工具(例如,IBM WebSphere Studio Device Developer)。DB2 Everyplace本身运行在包括Palm OS,Symbian OS,Pocket PC,QNX 软件系统和嵌入式Linux在内的许多平台上。DB2 Everyplace支持加密数据域和表存储优化功能。
在MIDP平台上,DB2 Everyplace有一个叫FastRecordStore的产品。它仿效在MIDP RMS记录存储之上的可索引和可搜索的关系表。
DB2 Everyplace 数据库和FastRecordStore通过IBM同步引擎与后台数据库同步。DB2 Everyplace也附带一个叫Mobile Application Builder 的工具,它允许开发者可视化地创建DB2 Everyplace 应用程序。
Oracle9i Lite
Oracle9i Lite是Oracle在移动数据库上的产品。它可运行在Plam OS,Pocket PC,Symbian OS和Win32 等平台上。Win32这个版本是为了能运行在膝上电脑上并支持JDBC,多用户模式以及Java存储过程。Oracle9i Lite的Pocket PC和Symbian OS版本支持JDBC。而Palm OS版本仅支持Oracle自身专用的OKAPI(对象核心API Object Kernel API)和ODBC(开放数据库连接Open Database Connectivitiy)。Oracle9i Lite suite包括一个移动开发工具Mobile Development Kit,它能够根据用户自定义需求自动生成和打包移动数据库应用程序。目前它只能生成本身客户端应用程序。
Oracle9i 移动数据库通过Oracle移动服务器和后台Oracle数据库服务器同步。如果我们使用Oracle9i Lite 移动开发工具来创建应用程序则移动服务器会自动为这个应用程序生成同步逻辑。Oracle9i Lite支持任何基于TCP/IP的网络上的同步,包括HTTP,CDPD(单元数字包数据cellular digital packet data),802.11b无线局域网。通过使用移动服务器的开放传输API Open Transport APIs,我们也能增加新的传输。另外Oracle移动服务器支持非同时的同步。在高峰期每个设备只是把同步内容提交到一个队列中然后退出。异步操作是可扩展解决方案的关键。
在MIDP平台上Oracle提供SODA(简单对象数据库访问Simple Object Database Access),这个产品是基于RMS的。SODA实际上是一个支持MIDP设备的面向对象数据库。它允许存储,搜索和恢复类似JavaBean的数据对象。
选择正确的移动数据库
选择正确的移动数据库产品是个复杂的商业决定。由于移动数据库嵌入在客户端应用程序中,你需要为你所开发的每个产品支付版税。为减少总开销而签订一个好的合同是非常重要的。由于同步解决方案所特有的性质每个产品都在某种程度上锁定了厂商。因此开发人员不仅应该考虑到产品的技术优点而且应该考虑到厂商的一贯声誉和稳定性。例如,如果你的移动客户端需要MIDP和Personal Profile 数据库,你应该选择同一厂商中更好传输率的产品和更易管理的同步解决方案。
PointBase和Sybase iAnywhere提供极好的移动数据库解决方案。然而,如果你的企业基础架构主要是IBM或Oracle,那么最好选择DB2 Everyplace 或Oracle9i Lite 移动数据库。
移动数据库和同步解决方案是高可靠性移动应用程序的重要组件。他们提供了新的而且有前途的偶然连接移动应用程序范例。在阅读完本文后,你应该已经能够使用JDBC和PointBase APIs设计和执行移动数据库应用程序。由于移动数据库运行在小设备上,当选择商业产品时你需要仔细权衡特征和储存器足迹而不是性能。