三层中大数据量查询的处理方式(100分)

F

fjnnz

Unregistered / Unconfirmed
GUEST, unregistred user!
现在想实现这么一个功能:
客户端提交查询语句后,服务器端得到了一个大的数据集。为了提高客户段的反应速度,
准备采用类似web查询的做法,根据设定的PageSize,返回第一页的记录,同时,有一个
页面选择拦,用户选中哪一页,就提取那一页的数据,累加到客户端现有的数据集上,
直到取得所有的数据或者用户终止。
clientDataSet和provider结合时,GetNextPacket只能顺序提取数据,功能不全,
特咨询大家的意见,侃侃有什么可选的方案,大家踊跃发言呀!

 
我只有蹩脚的方法,没有流畅的方法,帮你 up
 
使用SOAP或者XML。当然,数据包需要自定义格式,Delphi缺省的格式是不支持非DataSet数据的。
 
在大型应用中,这是个必须解决的问题,这实际上是两个问题:
1 如何在应用程序服务器端随机读取记录块
2 如何在客户端熔合多批次读取的记录块
问题1须与具体数据库相结合。在oracle中可以这样实现:
首先要求客户端的数据读取请求中包括被读取记录的起始号Pagebegin
终止号PageEnd,
之后应用程序服务器端的业务对象就可用下列语句读取数据:
SELECT * FROM
(SELECT rownum "rrr", field1, field2,fieldn FROM table
WHERE condition) WHERE rrr BETWEEN :pagebegin
AND :pageEnd
问题2也很简单了,是如何使当前读取的数据包和已存在数据记录的熔合(Reconcile)的问题在
李维的书中有介绍,比葫芦画瓢便是。
 
顶部