关于数据传输和一致性的问题(Server: sybase for unixware / Client: Sql Anywhere 7 / 开发工具:PB 7) ---------整理

ping_ping 2001-06-03 05:31:00
加精
作  者:atuzai
所属论坛:PowerBuilder
问题点数:60
回复次数:61
发表时间:2001-5-29 0:56:00

关于数据传输和一致性的问题
Server: sybase for unixware
Client: Sql Anywhere 7
开发工具:PB 7
连接方式:每天由客户端自动拨号与中心交互数据一次(由于点比较多,无法保持实时 在线)
目前的做法:Client ASA-->datawindow-->TXT-->压缩-->拨号-->解压-->TXT-->datawindow-->SYBASE
我的问题是:非实时系统保持数据的一致性难度不小,这样导出导入的效率也不高,PB的代码过大,版本的更新通过internet也有难度,但这样的应用需求却比较多,有没有更好更成熟的方案,大家多出主意,分数不是问题。
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulee 2001-06-03
  • 打赏
  • 举报
回复


哇。。。好!!!
有心人啊。
呵呵。
liulee 2001-06-03
  • 打赏
  • 举报
回复
流斑竹叫唤一声,就下线了....肚子饿了。
ping_ping 2001-06-03
  • 打赏
  • 举报
回复
回复人:billxia() (2001-5-29 1:04:00) 得0分
远程登陆服务器后,用数据管道直接传送

回复人:atuzai(阿土仔) (2001-5-29 1:15:00) 得0分
你是第一炮,绝对有分, 但我们的拨号连接方式是通过普通Internet连接的,用数据管道对线路和带宽要求太高

回复人:billxia() (2001-5-29 1:38:00) 得0分
Client ASA-->datawindow-->TXT-->压缩-->
在pb里 Client ASA-->datawindow-->datastore-->blob-->压缩-->txt

拨号-->解压-->TXT-->datawindow-->SYBASE
拨号-->TXT-->blob-->解压-->datastore-->SYBASE

回复人:atuzai(阿土仔) (2001-5-29 1:48:00) 得0分
对,我是用的datastore导出成TXT
不过,你给的这一段流程让我有些糊涂
datastore-->blob-->压缩-->txt
能解释一下吗?

回复人:billxia() (2001-5-29 1:51:00) 得0分
datastore 直接生成 blob 大文本
用压缩控间直接压缩 blob 大文本
然后再写到txt中

回复人:atuzai(阿土仔) (2001-5-29 2:05:00) 得0分
我回头去试试你的做法,可惜手头没有象样的压缩控件,可否提供;-)Email:awei_999@163.net。我现在的做法是用外部程序压缩(JAR32)的,感觉不错,我主要的担心是:数据量大、传输慢、客户端导入时太慢,所以能压缩一点是一点。我总觉得我现在的做法太笨,不知有没有更善的方案。

回复人:billxia() (2001-5-29 2:32:00) 得0分
http://my.6to23.com/pb80/default.htm

回复人:freshman113(逍遥子) (2001-5-29 8:06:00) 得10分
我原来的一个项目数据传输也是按这种方式进行的,不算繁,但一定要对“异常数据”进行交互式的再处理,还有,数据字典需对应起来(为了这个,我还花了不少功夫。。。)。

回复人:caolei1974(梦飞扬) (2001-5-29 8:37:00) 得10分
我以前做过类似的数据传输,我不知道你传出的数据量是否很大。
我们的方法是每天将更新或新增或删除的数据写入一张表中,然后用pipeline来传这一张表,然后在server端根据传来的数据更新数据

回复人:powerdzb(power) (2001-5-29 9:45:00) 得10分
server与client端各建一个通讯库,通过通讯库相互之间交换数据,不在通过datawindow这样的效率太低,你可以用数据库本身的机制,用proceduce实现,你可以自己检测是否成功,自己作日志。如果有问题可以详细讨论。

回复人:atuzai(阿土仔) (2001-5-29 11:33:00) 得0分
freshman113, 说得对,为了保持数据的一致和完整,经常要对server端和client端的修改作一定的约束,传输汇总时要做很多的校验,实在是很麻烦。前后台的表的数据类型要保持一致,吐血经验是:需要导表时,前后台能用char就用char(包括时间和日期也最好是char),否则用datastore导起来比较难

回复人:zzxx(zzxx) (2001-5-29 11:44:00) 得10分
我现在做的系统也存在这样的问题,也是通过INTERNET传输的,但我们有一台WEB服务器做中转服务器,装有数据库,是用数据管道导的,测试拨号上网的传输速度是:一张有23个字段的表,2600条记录,5分钟之内搞定。

回复人:atuzai(阿土仔) (2001-5-29 11:46:00) 得0分
caolei1974, 连接的client总数, 100多个;每个点交互数据量压缩前700K左右的TXT,压缩后100K左右;用pipeline显然是不太现实,一是,表的数目比较多,二是,效率不能令人满意

atuzai(阿土仔) (2001-5-29 11:56:00) 得0分
powerdzb(power), 你的方案没说清楚,我也用了些procedure,但也仅限于导入时删表,或是锁表,能不能说详细一点,先谢了

回复人:atuzai(阿土仔) (2001-5-29 12:03:00) 得0分
zzxx(zzxx), 对,我也用了一个小服务器专门对付传输, 我最大的一张必须交互的表有10000多行,40多列,显然用数据管道不行。不过现在我的系统已经在跑,如果你正在开发的东东遇到什么问题,如果需要支持可以Email给我。我现在只是觉得我的方案不爽,欢迎兄弟们多议议,因为现在这样的应用太多了

回复人:zzxx(zzxx) (2001-5-29 12:19:00) 得0分
呵呵,我们的东东没有那么大的数据量,只有第一次安装时需要传输的数据多些,而且只上行不下行,简单多了,谢谢你了,有什么问题一定找你哦!

回复人:jeking(苦命人) (2001-5-29 12:52:00) 得0分
这里都是高手,看样子我又有很多东西可以学了。
^_^.
小弟有一事不明,如果我不是传一张表,而是一个数据库,该怎么样呢?
那不是更麻烦了?

回复人:zzxx(zzxx) (2001-5-29 13:02:00) 得0分
传数据库那就简单了!备份——》打包——》传输——》解压——》恢复——》搞定!

呵呵!

回复人:atuzai(阿土仔) (2001-5-29 13:17:00) 得0分
jeking(苦命人),我们现在讨论的就是怎样使服务端的数据库和客户端的数据库的数据保持一致,当然不仅仅限于一张表。可以肯定的是,不能将SQL ANYWHERE的DB文件拿来传,因为实在是太大了

回复人:Hanson_bati_zhu(Hanson_bati_zhu) (2001-5-29 14:52:00) 得20分
兄弟现在做的项目有类似的工作
我要传的是部分表中的部分数据
流程为:
ASA->PipeLine->MDB->ZIP->MDB->PipeLine->MSS
传输过程通过ASP和PowerTCP的WebTool组件,Server端建立ASP做权限控制和数据下发打包,安全通过SSL
用MDB是因为压缩率高,由于还有从MSS到ASA的过程,所以在SERVER端还有数据动态打包生成ZIP的组件。
总之,比较繁

回复人:atuzai(阿土仔) (2001-5-29 15:07:00) 得0分
to Hanson_bati_zhu(Hanson_bati_zhu):
你的方法颇有新意, MDB?,会比导成TXT后的压缩率要高吗?我要去试试看。
传输部分包括拨号我们是用winsocket做,server端用VC++起的多线程。这样主要是方便自己做实时监控程序来观测当前所有client的传输情况

回复人:Hanson_bati_zhu(Hanson_bati_zhu) (2001-5-29 15:23:00) 得0分
to 阿土仔
非也
MDB压缩率没有TXT高,但MDB是个完整的库,而且肯定要比一个一个的TXT管理起来方便
MDB压缩率一般在95%左右
我的Server端装IIS,用HTTPS上、下传(方便、快捷、安全而且我的下一个版本的程序要加入续传功能[现在还没实现,但BOSS要])
IIS肯定比自己写的Server端进程好使

回复人:atuzai(阿土仔) (2001-5-29 15:38:00) 得0分
to Hanson_bati_zhu(Hanson_bati_zhu):
有道理,管理起来是要方便些,把要传的表及数据用pipeline打成一个小库,压缩后再传,可能打的包比TXT要稍大一些.
你的传输方法我不太明白,估计你的应用相对简单,client是web,还是PB?

回复人:Hanson_bati_zhu(Hanson_bati_zhu) (2001-5-29 16:42:00) 得0分
to 阿土仔
不知你对应用复杂度的定义是什么
我的Client是用PB开发的

My E-Mail:bati_zhu@sina.com.cn

回复人:atuzai(阿土仔) (2001-5-29 17:15:00) 得0分
to Hanson_bati_zhu(Hanson_bati_zhu):
client用PB做的就好,传输的方案也是用PB实现的吗?你能不能把你传输方案说得详细一点,比如,具体一点的实现方法,还有client与server端的通讯是不是可以做到完全自动,不需要人为干预。
先谢了 ,不管本次的讨论有何结果,我都将Email一个方案给你,如果你需要的话。

回复人:powered(水无痕) (2001-5-29 19:56:00) 得0分
我用的是sqlserver7.0。
客户和服务器端均采用两个事务处理,
服务器采用tcp/ip协议,实现对等联接,
利用事务处理联接服务器和客户端,
编写程序实现数据的交换,
保持数据的一致性采用的是校验位的办法。
缺点是对大量的数据可能会有问题,我的数据量比较小。

回复人:atuzai(阿土仔) (2001-5-29 20:57:00) 得0分
to powered(水无痕):
由于我对sqlserver不是太熟,不了解它的事务处理机制。不过从成本来讲,所有的client端都用sqlserver是不太合算的,尽管如此,我还是打算用一段时间看看sqlserver。
讨论结束时,会Email给各位朋友,敬请继续关注

回复人:Hanson_bati_zhu(Hanson_bati_zhu) (2001-5-30 15:14:00) 得0分
to :atuzai(阿土仔) 
我的办法:
1)数据的导入导出都是使用PipeLine,中间库为MDB(大约40张表,根据变更频度不同分为4类,根据需要传递)

2)Internet传递使用Client端是PowerTCP WebTool ActiveX组件,Server端是MS IIS,用户数据上传后,由Server端用户人为决定或程序定时接收数据

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧