Docm 三層, 如何處理大量數據的更新?(100分)

  • 主题发起人 主题发起人 rixin
  • 开始时间 开始时间
R

rixin

Unregistered / Unconfirmed
GUEST, unregistred user!
Docm 三層, 如何處理大量數據的更新?
例如:月底需要對倉庫撥用量統計, 結果放入一表中, (大約2000筆數據)
用TClientdataset對遠端server中數據處理,當使用Applyupdates時
確不能將所有數據更新, 在服務器端報警, 原因是當客戶端執行Applyupdates時, 會將server端所有數據下載到客戶端,這是不希望的.
請問如何Applyupdate遠端的大量數據?
 
可以将变化数据在APP SERVER上处理三。定制一个UPDATESQL方法,就OK
 
用高速缓存更新应能解决再不就用一个笨办法每200个ApplyUpdates一次。
 
用clientdataset.provider.datarequest回传给服务器端一个sql语句, 让服务器
来执行就可以了.
 
应该用app server的远程方法实现,然后由client调用(rpc)
app server一般来说和database server处于同一局域网中,
因此在app server中执行大量数据处理的过程速度会很快
多层结构的思想中本来就包括这一点,在以下情况下应该使用rpc:
1、数据量极大
2、逻辑复杂
3、希望将细节封装在app server中,对client端透明
4、其他
你的情况可能两种情况都有,而且和客户端完全没有关系,
使用rpc,不仅效率高,而且程序整体逻辑也清晰
rpc是多层结构程序设计的重要方法,应该掌握,
不仅是效率问题,而且可以学习先进的思想
 
誰有具體例子
 
類似問題: 3層Dcom, 大量數據, 如何使用QuickReport 打印資料?
誰有做過?請談一談..
 
各位好兄弟, 拉小弟一把吧...
 
其实可以设置TClietdataset中的RecordPacket参数的值
 
实在不行就不要用ApplyUpdate,可以在服务器端加一个函数用于执行客户端传来
的SQL语句。在客户端每录入一行就把每一列的值取出来生成相就的Insert语句。
将这个SQL发给服务器,由服务器完成数据更新,修改记录再用ApplyUpdate。
 
我是这么实现的:
在远端单独做一个DCOM服务,专门用于更新
在这个服务中只调用你原来的主服务中用于刷新的服务,通过OleViarant
打包将要更新的数据从客户端发过来(客户端用CoXXXX.createremote来
调用远端的这个服务.),再将包拆开(用动态数组打包),分发到各刷新
服务用于刷新多个表.
 
Crane老兄很在行吗,给一个demo好吗?
 
Crane:呵呵,厉害,塞过自己开发半个MIDAS啦:")
 
hntangwei,CJ:
看到帖子时正在老板(导师)的机器上偷着上网,心跳150t/m
快不行了,其实我的方案事务的问题还没想好,
不行!有情况!!!
等回家在说!
各位回见!
 
CRane兄:請詳細點.另
NT4.0+SQL7.0+DCOM+Delphi5
關於主從表的建立方法有兩種:
1. Server端建立主從關係. 僅用一個Provider.
2. Client端建立主從關係.
請問:
以上兩種哪種適用於大量數據.(主數據15000筆以上, 從表總數75000筆以上)
增,刪,改. 效率最高(不能ApplyUpdates()後很長時間才反應)?
請詳細些, 多謝!
 
rixin:
别客气。
其实真正的三层结构,client端的代码应该是很少的,甚至要
尽量避免往Server端发Sql,我原来没注意到这一点,所以改起来也
颇麻烦。所以我认为不管数据量有多大,能作在S端就作在S端。至于
我的那个方案,手头的项目我就是这么作的,但事务的处理还是个
问题,等解决后再贴出来也不迟。很抱歉这个月我得应付考试,下月
19号后我一定贴出来。
 
利用參數傳遞的方法已可以將Client端做的很小, 大部分工作由/server端做.
請問:若新增一條記錄時且為主從表,應怎樣為好? (大量數據下)
我目前用Clientdataset直接引出DBedit,確無法快速applyupdata...
急救火,多謝
 
上世紀的問題不知這世紀是否有人回答?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
800
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部