Delphi开发两层的网络版的程序时,架构怎样设计才比较合理?我的做法是。。。。。(100分)

  • 主题发起人 主题发起人 jihe
  • 开始时间 开始时间
有毛病 的解答的确是问题所在,那我认为在 zxbyh 所说的基础上采用事务处理!应该可以避免问题吧!
请关注。。。
 
采用事务处理完全可以解决问题,
SQL SERVER7 ,SQL Server2000都支持行锁, 在这种系统里我的做法是不用,
尽量少用数据感知控件,比如用edit替换dbedit,combobox替换dbcombobox.
这样做的好处是,在提交的时候启用事务,提交数据。结束事务或者回滚,
把锁定时间做到最小。几乎可以不计的。
如果别人修改了你的数据那,在ado的出错代码里检测是哪个,显示相应的错误就行了。
 
其实有毛病同志说的现象属于‘吊死’现象,我就经常遇到,呵呵
能不能这样处理,大家探讨一下:
如果是连锁店形式的,那客户端的响应级别都应该是同一等级的,如果谁先进入,谁就先
占用服务器,其他的请求只能等待,那在程序里可以实现一个缓存结构,当检测到其他客户
正占用时,系统将要提交的请求写入缓存,当占用结束时,其他的客户就以先到先得的方式
处理,剩下的继续等待,不用设置什么标志位。这样就可以保持数据的完整性。请求等待可以
用一延时器处理,我做过这样的小程序,有点的缓存的味道。呵呵
至于sql server 2000里的锁控制,如果能控制的好的话,那当然是最完美的了,但我不懂
[:P]
 
TO 编程傻子:
我认为在系统中自身在修改时,最好不让其他用户能够修改自己当前正在修改的数据。
其实结合 zxbyh 的方法和事务处理,再加上 小小豆豆龙 的缓存结构思想。那么用户在提交
数据时,就会感到好像是自己独占了系统!我认为啊,在并发处理时,最好不要提示存在其他用户
已经修改了你的数据。
小小豆豆龙 的方法比较好,可以实现对用户透明处理。
但也比较适合三层结构,其的“缓存结构”运行在中间层最好。如果将“缓存结构”设计在
两层结构,那不是要在客户端添加一个计时器在提交后时刻判断是否轮到“自己”。这应该
不是很好吧???
以上是我自己的见解,不对之处请指点哦!学习中。。。。。
 
在用户提交修改的很短很短的时间里,可能不会遇到Down机吧?
如果倒霉透顶,可一在中间层,作一个缓冲!
 
问题的是我在这里只想讨论两层结构中应该怎样处理???
 
请光注........................................
 
我想在这样短的时间Down机的话可能性不会太大吧!
还没有数据库服务器出问题的可能性大!
 
一般说来,服务器都是有USP的。
 
可能没有更好的方法了!
 
大家继续讨论吧!多多学习
 
我的想法是程序编写使用多线程。不要用信号等。

采用数据库自身的锁。

1:比如A,B用户分别操作数据库中两个表,表之间没有必然联系,锁定的只是自身,完全可以异步操作。

2:假如A,B用户操作的是数据库中两个表,有公共关键字,那么只要注意关键字处理方式就可以。

3:假如A,B用户操作的是同一数据库中同一表,那么只能同步。


 
请问lp414:什么是“数据库自身的锁”。我不了解这一概念,在程序中应该怎样设置“数据库自身的锁”?
请指教!
 
in Oracle
use 'select * from my_lock
where clause
for update [no wait or wait]' to add lock,
the other people would run same SQL to check lock

it is basic on the transaction, if the transaction is ending, the lock will
be released, don't worry about the process is hung or died.
 
哦,忘了说明数据库,各位,以上所说的数据库是SQL Server数据库哦![8D]
 
呵呵!让我提提意见吧!
如果服务器是SQL SERVER2000,我建议你使用存储过程,存储过程是单一执行的,它并不
存在并发性,如果多户同时处理某一个表,系统会按时间先后顺序一一执行。
本人建议,如果存在并发性修改数据库的表,就用存储过程,在存储过程里用行锁定。
 
To fonder:那这样不是要将系统中所有的数据库操作都写在存储过程,嘿嘿,这可不是一个好方法的!!!
 
我认为要在双层系统中达到完美的效果,不大实际。如果可以的话就不会出现中间层了如MTS
 
我认为你提的问题DBMS已经解决了, 不用我们再去想办法
大型数据库写事务时会自动锁定记录,写完后自动解锁, 中间的时间可能还不到1毫秒
同时进行的可能性很小(我用的是PB, 写了地铁公司的系统, 100多台终端, 也没考虑这
么多问题, 运行了三个月了, 还没碰到过Down机的事, 我写表是用的存储过程
 

Similar threads

D
回复
0
查看
834
DelphiTeacher的专栏
D
D
回复
0
查看
880
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
617
DelphiTeacher的专栏
D
后退
顶部