本期带大家做个实验,测试一下网盘同步的性能,分析共享冲突的原因,引出解决冲突的思路。
前期准备工作(包括相关工具或所使用的原料等)
网盘/Excel实验步骤
第一步:在两台电脑上用同一账号登陆酷盘,同步文件夹都设置成D:\kp。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412263000-0.jpg)
第二步:电脑甲把一个Excel文档放进D:\kp,随即,该文档会出现在电脑乙的D:\kp中。(这个Excel文档的文件名为“e.xls”)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122B058-1.jpg)
第三步:电脑乙打开“e.xls”,随便修改一个字符,存盘退出;然后打开电脑甲的“e.xls”,可以看到文档已发生改变,是刚刚在电脑乙修改后的模样。(同步成功!)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122B026-2.jpg)
第四步:电脑甲的“e.xls”处于打开状态,电脑乙打开“e.xls”输入字符“a”存盘退出,然后电脑甲输入字符“b”存盘退出,这时在两台电脑的D:\kp文件夹中会多出来一个文件:“e(name被冲突后的备份 2015-03-20-18-20-42).xls”。(发生冲突)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122A0H-3.jpg)
第五步:现在,我们分别打开“e.xls”和它的冲突文件看一下,“e.xls”中存有“a”,而冲突文件中存有“b”。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412261137-4.jpg)
现象分析
以上实验说明两件事:其一,酷盘能够做到即时捕捉文件的微小变化并即时同步;其二,共享一个Excel文档,冲突不可避免。解决冲突的方法可以采用共享文档处理机制:一个文档设置n个用户,为每个用户分别划定专属可编辑区域,当发生冲突的时候进行合并。发生冲突进行合并,技术上可以实现,但免费网盘不提供这样的功能,因为管理一套完整有序的“交通规则”是一项比较复杂的技术,技术成本较高,同时搭建配套硬件环境也需要额外的成本。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412264340-5.jpg)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412262464-6.jpg)
另辟蹊径
还有一种冲突解决办法是数据库系统中所采用的,是一套更完备也更复杂的技术。我们这里不必去研究这项技术,因为不会有人为我们免费搭建数据库服务器的。但是我们要借用其中的一些思路来解决我们的问题。数据库系统中的数据库位于系统核心位置,各种用户远程对其“按记录、或按字段读写”共享其中数据,这种读写方式是数据库系统得以广泛应用的基础,其基本思路是细化读写单位,由原来的"以文件为单位"细化到“以记录为单位”甚至“以字段为单位”,对数据的调度管理更加精细。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412261R5-7.jpg)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/1412262E2-8.jpg)
我们知道:没有数据库服务器就无法实现“按记录按字段读写”。现在我们来玩个“空间和时间置换”的游戏。我们的思路是:将一个Excel文件作为“数据库”放置在同步网盘中,各种用户通过宏代码对其进行读写,以本地单元格变化为触发点,即时将修改内容写入“数据库”,每一次写入快速执行一次“打开--读出--写入--关闭”的动作组合,由于时间极短,感觉上就好像“数据库”一直处于打开状态一样。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122B3E-9.jpg)
对“数据库”的读写操作——每次从打开到关闭的时间极短,也大大降低了发生冲突的几率,为编程控制冲突提供了条件。前面做实验的时候不是见过一个冲突文件吗?检测到冲突文件出现就说明写入不成功,需将其删除重新执行写入动作,直到不出现冲突文件为止。这是最终彻底解决冲突的流程。
OK!以单元格为单位对“数据库”进行读写,数据流不发生冲突——这不就是一个数据库系统吗?虽然算不上一个真正的数据库系统,不过具备了数据库的基本特征就可以开发出许多实用的应用,其最大优势在于免费。
(......未完待续!)
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122A3F-10.jpg)
下期预告:
下期开始,我们将利用本文所描述的“数据库系统”模型来动手做一个“远程工单系统”。
![网盘应用—Excel数据库开发:[2]另辟蹊径](http://www.52ij.com/uploads/allimg/160404/14122C5L-11.jpg)
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
