使用RDO时,程序可以直接存取ODBC的资料源而不需要本地端的查询处理。这会在存取远程的数据库引擎时大大地提高效率和弹性。
使用RDO可以得到下列的好处。特别是在
客户端/伺服端架构
l 提高自远程ODBC资料源存取资料的效率。
l 建立简单而无光标的
结果集,或是较为复杂的光标。
l 执行查询以及同时运作多
结果集:经由一个单一的查询可以传回多个结果集,这可以提高查询处理器和
系统资源的使用效率。例如可以使用一个查询来提供多个显示资料对象的资料(如data-driven的list box或查询一起运作,可以正确的设定scroll bar和progress status bars。
l 以单一批次(batch)执行多个action查询:在很多状况下可能是以单一的SQL述句来执行多个新增(INSERT)、删除(DELETE)和修改(UPDATE)的动作,这可以减少网络和
远程处理的负载,同时让处理交易(transaction)更方便。
l 可以使用参数输入stored procedure,以及传回结果:从stored procedure输出参数是从Oricle的stored procedure上获得运算结果的唯一来源。这会在单一查询以及许多管理的运作上有用。在很多状况下,必须藉由stored procedure传回的结果来判断所执行的运作是否成功。RDO经由rdoParameter对象来处理这些输入、输出的参数。
l 限制处理以及传回的记录数:在某些状况下,使用者所选的记录数目可能超过实际运作的量,RDO可以设定经查询传回的记录数目量。以这种方式可以预测响应时间,也更容易
管理工作站和服务器的资源。以同样的机制可以限制修改查询(data-modification query)所能影响记录数的量。
l 利用伺服端
光标:一些伺服端
数据库引擎也提供了光标的运作,在某些状况下使用伺服端光标可以减轻网络负荷以及工作站的资源以提升效率。
l 监控远程资料源所产生的讯息或错误但不妨碍正在执行的查询。
l 执行异步查询:能够使用同步、异步
事件驱动((event-driven)异步等处理,使程序不会在执行大量查询时停滞。且不需要使用Polling机制。在异步查询期间,Connection会一直保留着。
l 在初始设定的查询截止时间到时,仍可继续:当查询的运作时间超过QueryTimeout属性时,RDO允许继续另一个查询等待时间,而不直接停止查询。
l 提供改良的多形(polymorphism)和“free-standing”的对象产生方式:RDO支持以DIM宣告且产生对象的方式,这种free-standing的对象可以被连结到其它的对象以执行运作。例如,可以独立的产生rdoQuery和rdoConnection对象,而后联合在一起运作。
l 提供分离的
结果集:RDO允许产生静态的读写光标而后中断与远方服务器的连结。在rdoResultset对象中的资料仍可存取,一但以另一个rdoConnection对象再连结上远程伺服机时,可以以BatchUpdate方法以完成这种离线(offline)的改变。
l 产生和管理开放式的批次更新:当ODBC光标链接库提供开放式更新时,它是以一笔接着一笔的方式而非批次更新。这种做法需要较多的网络和服务器的频宽。RDO提供新的
客户端批次(
ClientBatch)光标,将一群被新增,修改和删除的
记录集合起来。这种方式祇需要与伺服端连结一次,因此可以提升效率
l 让Stored Procedures使用更容易:RDO允许将可输入参数的查询和stored procedure当成rdoConnection对象的方法。可以像使用VB函数传入参数的方式一样传入参数而不需要rdoParameter对象。
l 提供之下的ODBC handles:当需要更直接,更有弹性的资料存取时,RDO提供直接存取ODBC环境(environment),connection和statement 等handles。
l 减少内存使用