论文部分内容阅读
随着计算机技术的迅速发展和信息共享要求的不断提高,数据库从集中式逐渐向分布式发展。对于很多分布式应用来说,为了提高运行效率,数据被分散存储于多个不同节点上,而要解决这些不同数据副本的数据一致性问题,就需要用到数据同步技术。数据同步技术的好处在于,当某个节点发生故障时,并不会对其它的节点造成影响,提高了系统的健壮性和稳定性,同时,每个节点可以直接对本地数据库进行查询操作,减少了系统的响应时间,避免了不必要的网络传输,也减轻了中心数据库的负担。SQLite数据库以其源代码开源、占用空间小、移植性好、简单易用和可加载到内存中运行等特点,在实际中得到了广泛的应用,但它却没有提供数据同步方面的支持。本文尝试提出一个同步解决方案,以弥补SQLite在数据同步方面的不足,使其同时具备了分布式和嵌入式的应用特性,以适用于更多复杂的应用场景。本文主要分析了数据同步技术的基本原理,并研究了解决方案相关的几个关键技术:对于变化的表示和变化捕获方法,本文采用了SQL语句作为变化的表示方式,并提出一种基于版本号的变化捕获方法;针对同步过程中可能会发生的数据冲突,研究了各种冲突解决方案,并使用基于时间戳法作为冲突解决方法;根据应用的目标场景,选择了拉模式作为数据同步的分发模型,并使用TCP协议作为网络通信协议;使用缓存的方法,对数据变更情况进行缓存,提高了不同节点数据同步操作的效率;对于数据同步的中心服务器的并发模型,采用了I/O多路复用模式来处理事件的并发。最后本文给出了一个基于SQLite的同步系统原型,并进行了系统测试,测试结果表明了本系统可有效地解决数据冲突问题,同时达到数据一致性的目标,使数据同步过程更加灵活可靠。