CN111200623A - 基于分布式存储实现终端数据同步的方法及其系统 - Google Patents
基于分布式存储实现终端数据同步的方法及其系统 Download PDFInfo
- Publication number
- CN111200623A CN111200623A CN201811376321.6A CN201811376321A CN111200623A CN 111200623 A CN111200623 A CN 111200623A CN 201811376321 A CN201811376321 A CN 201811376321A CN 111200623 A CN111200623 A CN 111200623A
- Authority
- CN
- China
- Prior art keywords
- terminal
- key value
- data
- hash key
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/18—Self-organising networks, e.g. ad-hoc networks or sensor networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供基于分布式存储实现终端数据同步的方法及其系统,方法包括:通过自组网建立任意两个终端之间的蓝牙通讯连接;终端依据蓝牙传输吞吐量将数据拆分成至少两个片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个片段数据构建对应的链表,链表记录有对应的片段数据的哈希键值对和存储路径;与终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。在无网络情况下也能进行数据的处理和信息共享,为项目的协作提供便利,增加工作效率;进一步的还能够实现本地数据同步的实时性,确保终端数据同步后具备检索的条件;再进一步的,支持数据实时更新,同时具备原始数据的溯源功能。
Description
技术领域
本发明涉及数据同步技术领域,具体涉及基于分布式存储实现移动终端间数据同步的方法及其系统。
背景技术
目前,虽然智能移动终端(如手机)4G网络技术已经很成熟了,但是依然会存在有些地方无法联网的案例。
遇到这种情况下,采集人员若想要将设备采集后的数据同步到采集平台上,就必须靠近有网络或信号较好的地方去同步数据。对于单个采集人员处理方式比较简单,但如果遇到多人协作的项目情况下,这是一个灾难性的问题。例如在扶贫的多人协作的项目里,大部分偏远山区都是没有覆盖到网络的,这就给扶贫人员增加了困难。
针对以上问题,就目前国内的组网技术标准,以WIFI热点、近场通讯NFC、蓝牙这些技术均可实现一个组网。然而这种组网的方式都有各自的缺点:
近场通讯-NFC的缺点是需要设备之间靠的很近才可传输数据;WIFI热点的缺点则需要每台手机事先连接到已开启WIFI热点的手机S1(为单独一台手机作为服务接收者,其它手机都连接到这台手机上,并且传输数据都需要这台手机进行转发),并由最新录入数据的手机上传到S1,如果遇到多台手机类似上述操作,S1就会出现卡顿的情况,而且不能任意的使用其它软件。
针对以上组网缺点的技术分析,最优方案的莫过于蓝牙组网。蓝牙传输在4.0以后支持P2P(点对点通讯传输)的方式。采用点对点的方式的好处是当所有手机均开启点对点功能后,数据之间能实现共享。如第一终端开启点对点功能后视为第二终端的服务端和客户端,而第二终端开启点对点功能后是上述第一终端的客户端,同时也是第三终端的服务端,以此类推,则均为:第三终端连接第二终端连接第一终端,形成一个基于点对点的网络环境。当第三终端有新的数据时会通过第二终端同步至第一终端,以达到每台终端数据一致。
一般蓝牙通讯范围最短能在20米范围内,最长能在50米至200米,按照蓝牙4.0技术的标准,满足了偏远山区扶贫人员的项目协作问题。实现手机在无网络的情况下利用蓝牙点对点技术实现分布式数据存储的方案。但是蓝牙组网有个缺点,它本身的吞吐量不高,因此接收的数据包不能过大,如果过大将导致某个终端设备会在组网通讯中突然失去连接,同步失败。而重连后又将重头开始传输,即存在传输不稳定、传输效率低、无法实现实时性传输等缺点。
发明内容
本发明所要解决的技术问题是:提供一种基于分布式存储实现终端数据同步的方法及其系统,在无网络情况下实现实时、高效、稳定地进行数据同步。
为了解决上述技术问题,本发明采用的技术方案为:
基于分布式存储实现终端数据同步的方法,包括:
通过自组网建立任意两个终端之间的蓝牙通讯连接;
终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;
终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
本发明提供的另一个技术方案为:
一种基于分布式存储实现终端数据同步的系统,包括通过自组网建立蓝牙通讯连接的任意两个终端;
终端,用于依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;以及,依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;
与所述终端连接的另一终端,用于依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
本发明的有益效果在于:在无网络的情况下,终端能将数据拆分成以多个链式结构表示,链表记录若干片段数据的哈希键值对和存储路径;然后与其基于蓝牙通讯连接的其他终端再依据所提供的哈希键值对和存储路径在任意时间内从上述终端自行下载片段数据,从而实现基于分布式存储的终端数据同步,无需依赖网络也可实时、高效、完整的进行终端之间的数据处理和信息共享,进而实现项目的协作,增加工作效率。
附图说明
图1为本发明一种基于分布式存储实现终端数据同步的方法的流程示意图;
图2为本发明实施例一的自组网流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:终端将数据拆分成以多个链式结构表示,链表记录若干片段数据的哈希键值对和存储路径;基于蓝牙与其通讯连接的其他终端再依据链表在任意时间内从上述终端自行下载片段数据。
本发明涉及的技术术语解释:
请参照图1,本发明提供基于分布式存储实现终端数据同步的方法,包括:
通过自组网建立任意两个终端之间的蓝牙通讯连接;
终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;
终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
从上述描述可知,本发明的有益效果在于:本方案不仅限于如何利用蓝牙点对点技术做数据同步,重点在于实现在无网络的情况下,从本地数据库中读取数据后在基于蓝牙点对点的组网的环境下,根据蓝牙自身的缺点通过拆包的方式,将某个终端上(这里称节点,所有终端均为P2P场景下的节点)的数据拆分成多个链式结构的数据,并根据链式结构的特点,将数据拆分成多个片段,并根据片段数据生成对应的哈希键值对。
同时将片段数据的哈希键值对记录在所属节点的链式结构中,最终以点对点的方式将链式结构中的哈希键值对发给离该节点最近的终端(这里称为邻近节点)。
邻近节点根据片段数据对应的哈希键值对从上述的节点中下载数据,且同时可以在任意时间段内自行下载片段数据。
进一步的,还包括:
终端更新数据后,对应所更新的片段数据生成新的哈希键值对,并标记所述片段数据的原哈希键值对为其父哈希键值对。
由上述描述可知,通过追加更新前对应的原哈希键值对为更新后片段数据的父哈希键值对,可用于溯源,根据原哈希键值对查找到原始数据。
进一步的,还包括:
自组网内所有终端同步完成后,删除所述原哈希键值对及其对应的片段数据和在本地数据库的记录。
由上述描述可知,当所有终端均同步完成,系统将自行删除原哈希键值对及其对应的文件及其在数据库中所对应的记录,有利于优化存储资源。
进一步的,还包括:
所述另一终端将所同步的片段数据存储至本地数据库。
由上述描述可知,为保证终端数据具备检索的条件以及实时性,将节点中的数据均添加至终端数据库中进行存储。
进一步的,链表还记录有对应的每个片段数据与其相邻的片段数据的哈希键值对。
由上述描述可知,由于链表结构中还记载片段数据之间的依赖关系,因此,即使同步突然中断,也能在重连后继续中断前的同步,而无需重头开始,实现在任意时间段自行下载所需的片段数据,从而显著提高终端数据同步的效率。
进一步的,所述终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径,具体为:
终端依据蓝牙传输吞吐量拆分输入的数据为至少两个的片段数据,并分别存储至对应个数的第一文件中;
对应每个第一文件的片段数据分别生成哈希键值对;
依据蓝牙传输吞吐量依次选取至少两个的第一文件构成一条链表,获取对应所述片段数据的至少一条链表,每条链表记录有对应的每个第一文件的哈希键值对和存储路径。
由上述描述可知,以独立文件存储方式实现数据对应链表结构的构建。
进一步的,所述终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径,具体为:
终端依据输入的数据对应本地数据库的表名以及终端的IP地址生成哈希键值对TL;
终端依据蓝牙传输吞吐量将输入的数据拆分成至少两个的片段数据,并分别存储至对应个数的第一文件;
对应每个第一文件的文件名和终端的IP地址生成各自的哈希键值对AL;
依据蓝牙传输吞吐量,依次选取至少两个的哈希键值对AL及其对应的第一文件的存储路径AL_PATH,并分别存储至不同的第二文件构成至少一条链表;
以所述哈希键值对TL和编号命名第二文件。
进一步的,所述以所述哈希键值对TL和编号命名第二文件,之后,还包括:
终端依据其唯一标识符和IP地址生成哈希键值对DL;
依据蓝牙传输吞吐量,依次选取至少一个的第二文件,并分别存储至不同的第三文件;
以所述哈希键值对DL和编号命名第三文件。
由上述描述可知,在一具体实施方式中,通过上述方式对数据进行拆包构建链表,并对应不同文件分别计算哈希键值对作为标识,为后续依据标识定位所需数据提供支持。
进一步的,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据,具体为:
所述终端发送待同步的第三文件至所述另一终端;
所述另一终端对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;
所述另一终端在对应的第三文件内创建相同的第二文件集TL_LIST,并依据每个第二文件的文件名称向所述终端获取对应的第二文件内的哈希键值对集AL_LIST及其对应的存储路径AL_PATH;
所述另一终端将每个哈希键值对AL及其对应的存储路径AL_PATH写入对应的第二文件中;
所述另一终端向终端发起对应所述存储路径AL_PATH的下载指令。
由上述描述可知,在一具体实施方式中,依据文件对应的包含哈希键值对的文件名称逐级定位到片段数据的存储位置,并进行下载。
进一步的,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端下载对应的片段数据,具体为:
所述终端发送第一数据包至与其连接的另一终端,所述第一数据包包括待同步的第三文件;
所述另一终端解析第一数据包,对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;
终端对应第三文件的数量依次发送第二数据包至所述另一终端,所述第二数据包包括待同步的当前第三文件及其包含的第二文件;
所述另一终端解析接收到的第二数据包,对应创建相同的第二文件,并将每个第二文件的哈希键值对TL及其存储路径写入对应的第三文件中;
所述另一终端依次发送第二文件的文件名至终端;
终端依据接收到的文件名查找本地对应的第二文件,并发送第三数据包至所述另一终端,所述第三数据包包括待同步的当前第二文件及其包含的至少两个的哈希键值对AL;
所述另一终端解析接收到的第三数据包,对应创建相同的哈希键值对AL,并将每个哈希键值对AL及其存储路径写入对应的第二文件中;
所述另一终端依次发送哈希键值对AL至所述终端;
所述终端读取接收到哈希键值对AL对应的存储路径AL_PATH,并发送第四数据包至所述另一终端,所述第四数据包包括待同步的当前哈希键值对AL及其对应的存储路径AL_PATH;
所述另一终端解析接收到的第四数据包,依据其中的存储路径AL_PATH更改对应的第二文件中所述当前哈希键值对AL对应的存储路径AL_PATH;
所述另一终端发送查找更改后的存储路径AL_PATH的指令至所述终端;
所述终端依据指令对应的存储路径AL_PATH发送下载指令至所述另一终端。
由上述描述可知,在一具体实施方式中,数据同步的终端之间,基于数据包实现所需数据的获取。
进一步的,还包括:
所述另一终端接收到下载指令后创建以对应哈希键值对AL命名的文件;
所述终端读取指令对应的存储路径AL_PATH所对应的片段数据传输至所述另一终端。
由上述描述可知,在定位到片段数据的存储路径后,可直接触发下载指令获取同步的数据。
进一步的,还包括:
所述另一终端读取第三文件的哈希键值对DL中的文件内容后解析出第二文件的哈希键值对TL及其对应的存储路径TL_PATH,并依据所述哈希键值对TL解密得到对应的表名;
所述另一终端判断所述表名对应的数据表是否存在,若不存在,则在本地数据库创建所述表名对应的数据表;
依据所述存储路径TL_PATH读取对应的内容,解析出所包含的第一文件及其存储路径AL_PATH;
判断本地数据库中是否存在所述第一文件对应的哈希键值对AL,若不存在,则创建所述哈希键值对AL;
依据所述存储路径AL_PATH读取对应的内容,并将读取出的内容写入数据库中,且与所述第一文件对应;
以所述哈希键值对AL命名对应的第一文件。
由上述描述可知,能够在数据同步后,将数据也同步至终端本地数据库中,以获取终端数据检索功能。
进一步的,自组网内的终端数量为4个以上。
由上述描述可知,区别于现有的蓝牙组网方式最多只支持4个终端的点对点连接,本发明支持4个以上终端的自组网连接。
进一步的,所述通过自组网建立任意两个终端之间的蓝牙通讯连接,具体为:
任意两个终端通过预设的UUID建立蓝牙通讯连接;
通讯连接的终端依据自身IP地址和终端序列号生成对应的哈希键值对X,并将其发送至与其连接的其他终端。
由上述描述可知,采用路由寻址方式进行组网,以此实现构建4个以上终端的自组网点对点蓝牙通讯连接。
进一步的,所述通讯连接的终端依据自身IP地址和终端序列号生成对应哈希键值对X,并将其发送至与其连接的其他终端,具体为:
第一终端依据自身IP地址和终端序列号生成哈希键值对X1;
第一终端发送哈希键值对X1至第二终端;
第二终端存储第一终端发送过来的哈希键值对X1至本地;
第二终端依据自身IP地址和终端序列号生成哈希键值对X2;
第二终端发送哈希键值对X2至第一终端;
第一终端存储第二终端发送过来的哈希键值对X2至本地;
第二终端发送哈希键值对X2至第三终端;
第三终端存储第二终端发送过来的哈希键值对X2至本地;
第三终端依据自身IP地址和终端序列号生成哈希键值对X3;
第三终端发送哈希键值对X3至第二终端;
第二终端存储第三终端发送过来的哈希键值对X3至本地。
由上述描述可知,以路由寻址的方式进行自组网,以确保终端能准确找到对应的终端。
进一步的,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据,之前,还包括:
所述另一终端依据所述终端对应的哈希键值对X创建一文件目录,用于从所述终端同步的片段数据。
由上述描述可知,对应终端建立具备唯一标识作用的文件目录用于存储由其同步过来的片段数据,方便片段数据的准确和快速定位,同时有利于资源管理。
本发明提供的另一个技术方案为:
一种基于分布式存储实现终端数据同步的系统,包括通过自组网建立蓝牙通讯连接的任意两个终端;
终端,用于依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;以及,依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;
与所述终端连接的另一终端,用于依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
实施例一
请参照图1和图2,本实施例提供一种基于分布式存储实现终端数据同步的方法,支持所有具备蓝牙4.0版本以上的终端设备之间进行数据同步。
方法包括:
一、通过自组网建立任意两个终端之间的蓝牙通讯连接
(1)基于目前的自组网方式建立任意两个终端之间点对点的蓝牙通讯连接;
目前的自组网方式,仅支持最多4个终端之间的点对点蓝牙通讯连接。
(2)基于路由寻址的自组网方式建立任意两个终端之间点对点的蓝牙通讯连接。
此种自组网方式支持4个以上终端(IOS系统可支持8个以上终端蓝牙自组网,安卓系统可支持5个以上终端蓝牙自组网)的点对点蓝牙通讯连接,且能保证终端依据路由准确的找到对应的终端。
具体而言,上述第二种基于路由寻址的自组网方式可以包括:
1、终端分别创建GATT CLIENT线程、GATT SERVER线程、消息队列线程和一路由表;
2、任意两个终端通过预设的UUID建立蓝牙通讯连接;每个终端再依据自身IP地址和自身序列号生成一个哈希键值对X,并将其发送给蓝牙通讯连接的其他终端;每个终端接收其他终端发送过来的哈希键值对X后存储至本地。
在一具体实施方式中,该步骤可以包括以下子步骤:
2.1终端依据预设UUID扫描获取至少一个其他终端;
2.2将所述其他终端的蓝牙设备IP地址写入到对等网络节点的列表中;
2.3终端的GATT CLIENT线程遍历所述列表,依据列表中的蓝牙设备IP地址建立与所述其他终端的蓝牙通讯连接;若所述蓝牙通讯连接建立成功,则将对应的蓝牙设备IP从列表中移除,并将对应的终端的设备对象写入路由表中。
请同时参阅图2,下面以三个终端为例,详细说明第2步骤中任意两个终端之间建立蓝牙通讯连接可以包括的步骤:
S1:第一终端和第二终端通过系统预设的UUID建立蓝牙通讯连接;
S2:第二终端和第三终端通过系统预设的UUID建立蓝牙通讯连接;
S3:第一终端依据自身的IP地址和终端序列号生成哈希键值对X1;
S4:第一终端发送哈希键值对X1至第二终端;
S5:第二终端接收并存储第一终端发送过来的哈希键值对X1至本地;
S6:第二终端依据自身IP地址和终端序列号生成哈希键值对X2;
S7:第二终端发送哈希键值对X2至第一终端;
S8:第一终端接收并存储第二终端发送过来的哈希键值对X2至本地;
S9:第二终端发送哈希键值对X2至第三终端;
S10:第三终端接收并存储第二终端发送过来的哈希键值对X2至本地;
S11:第三终端依据自身IP地址和终端序列号生成哈希键值对X3;
S12:第三终端发送哈希键值对X3至第二终端;
S13:第二终端接收并存储第三终端发送过来的哈希键值对X3至本地。
若存在通讯连接的其他终端,则以此类推按照上述过程进行组网。
上述自组网方式采用的是在终端上同时启动客户端也启动服务端。比如第一终端的客户端连接第二终端的服务端;第二终端的客户端连接第一终端的服务端;第三终端的客户端连接第二终端的服务端,以此类推。
连接关系描述如下(第一终端名称:Z1;第二终端名称:Z2;第三终端名称:Z3;客户端为C;服务端为S):
Z1.C→Z2.S.
Z2.C→Z1.S
Z3.C→Z2.S。
3、终端将与其GATT CLIENT线程连接的其他终端的设备对象写入路由表中,所述设备对象包括蓝牙广播ID、蓝牙设备IP地址和GATT SERVER线程的服务地址。
二、数据录入后的同步
通过上述步骤构建了不限终端数量的蓝牙自组网络后,便可基于自组网进行终端之间数据的同步,其实现原理是:
4、终端将所述其他终端发送过来的数据依序放入消息队列线程;
5、终端依序从所述消息队列线程中读取出数据,并依据路由表中各设备对象的GATT SERVER线程的服务地址,将所述数据分别写入所述各设备对象对应的终端。
6、终端依据接收到的哈希键值对分别创建对应的文件目录;
7、终端通过回调GATT SERVER线程的服务地址获取其他终端写入的数据,并依据写入的终端将所述数据存入对应的文件目录。
对应本实施例,基于分布式存储方式实现终端之间数据同步的过程中,同样是基于消息队列线程进行数据的传输,下面我们将不做详细说明,而是针对如何基于分布式存储来进行数据同步做重点的详细解释。
通过将片段数据的键值对记录在所属节点的链式结构中,最终以点对点的方式将链式结构中的键值对发给离该节点最近的终端(这里称为邻近节点)。
下面,以上述自组网络中任意两个终端之间基于分布式存储方式的数据同步为例进行说明,可以包括:
1、终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径。优选链表还记载有对应的每个片段数据之间的关联关系。
具体而言,链式结构的特点为:假设某个数据为30MB,则将这个数据拆完成每个仅存放256K的数据片段区(其内存储的即片段数据),每个数据片段区都有一个序号和一个片段代号,即哈希键值对(HASH值)。
假设30MB文件BX.MP4,将其拆分成多个片段数据(1、2、3和4为序号):
XXX_1、XXX_2、XXX_3、XXX_4…..;
XXX_1的节点(节点对应终端)包含了XXX_2的HASH值,XXX_2的节点包含了XXX_1的HASH值,也包含了XXX_3的HASH值;
按照链路结构则形成:
XXX_1:
XXX_2:
XXX_3:
XXXX_4
最终形成一条链路。
在一实施方式中,该步骤可包括:
1.1终端拆分输入的数据为若干片段数据,并分别存储至对应个数的第一文件;即一个片段数据单独存储至一个第一文件中。
1.2对应每个第一文件的片段数据分别生成哈希键值对;即一个第一文件对应生成一个哈希键值对。
1.3依据蓝牙传输吞吐量依次选取至少两个的第一文件构成一条链表,获取对应所述片段数据的至少一条链表,每条链表记录有对应的的每个第一文件的哈希键值对和存储路径。即依据蓝牙传输最大吞吐量选取适当个数的第一文件构建出一条链表,对应所有的第一文件构建出多条能够保证蓝牙传输数据传输稳定性的链表数量。可选的,链表中对应每个第一文件,不仅记载有其对应的哈希键值对,还记载有其相邻的第一文件对应的哈希键值对,以形成具备片段数据(即第一文件)之间依赖关系的链式结构,方便准确、快速地定位到相邻的片段数据,能够在同步过程实现片段数据的定位,即使中断同步,也能在重连后继续下载而无需重头开始,进而显著提升数据同步效率。
对应上述实施方式的更加具体的实施步骤可包括:
1.1终端依据(用户)输入的数据对应本地数据库的表名以及终端的IP地址生成哈希键值对TL;其中,对应用户输入的数据,终端会将其添加至终端本地数据库的某张表,这张表的名字就是上述的表名。为了保证每台终端数据同步的表一致,所以需要表名来做匹配。
1.2终端依据蓝牙传输吞吐量将输入的数据拆分成若干片段数据(一般至少有两个),并分别存储至对应个数的第一文件;
1.3依据每个第一文件的文件名和终端的IP地址生成各自的哈希键值对AL,即每个第一文件具备一个对应的哈希键值对,且该哈希键值对依据第一文件的文件名和终端的IP地址生成,同时建立了第一文件、终端和哈希键值对之间的关联,有利于追溯。
1.4依据蓝牙传输吞吐量,依次选取适当数量(一般至少两个)的哈希键值对AL及其对应的第一文件的存储路径AL_PATH,并分别存储至不同的第二文件构成多条链表,并以所述哈希键值对TL和编号命名第二文件。也就是说,一个第二文件对应一条链表,每条链表记载有所包含的哈希键值对AL及各个哈希键值对AL各自对应的第一文件的存储路径。优选的,对应各个哈希键值对AL还记载有与其相邻的第一文件的哈希键值对。因此,上述步骤即创建一个TL的文件,文件中有两个属性:所包含的各个片段数据的HASH值和各个片段数据所指向的路径,也可理解为一个片段拆分的记录表。
1.5终端依据其唯一标识符和IP地址生成哈希键值对DL;
1.6依据蓝牙传输吞吐量,依次选取适当数量(至少一个)的第二文件,并分别存储至不同的第三文件,并以所述哈希键值对DL和编号命名第三文件。如对应吞吐量,选取两个第二文件存储至一个第三文件中,并以DL 1命名这个第三文件;再选取两个第二文件存储至另一个第三文件中,以DL 2命名这个第三文件,以此类推。
2、与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
在一实施方式中,该步骤可以包括以下子步骤:
2.1所述终端发送待同步的所有第三文件至所述另一终端;
2.2所述另一终端对应创建相同的第三文件,并依据每个第三文件的文件名称(以哈希键值对DL和编号命名,如DL 1)向所述终端获取对应的第三文件内的第二文件集TL_LIST;
2.3所述另一终端在对应的第三文件内创建相同的第二文件集TL_LIST,并依据每个第二文件的文件名称(如TL 1)向所述终端获取对应的第二文件内的哈希键值对集AL_LIST及其对应的存储路径AL_PATH;
2.4所述另一终端将每个哈希键值对AL及其对应的存储路径AL_PATH写入对应的第二文件中;
2.5所述另一终端向终端发起对应所述存储路径AL_PATH的下载指令。
对应上述实施方式的更加具体的实施步骤可包括:
2.1所述终端发送第一数据包至与其连接的另一终端,所述第一数据包包括待同步的若干个第三文件;
2.2所述另一终端解析第一数据包,对应创建相同的若干个第三文件,并依据每个第三文件的文件名称,如DL 1向所述终端获取对应的第三文件内的第二文件集TL_LIST;
2.3终端对应每个第三文件依次发送第二数据包至所述另一终端,所述第二数据包包括待同步的当前第三文件及其包含的第二文件;
2.4所述另一终端解析接收到的第二数据包,对应创建相同的第二文件,并将每个第二文件的哈希键值对TL及其存储路径写入对应的第三文件中;
2.5所述另一终端依次发送第二文件的文件名至终端;
2.6终端依据接收到的文件名查找本地对应的第二文件,并发送第三数据包至所述另一终端,所述第三数据包包括待同步的当前第二文件及其包含的若干个哈希键值对AL;
2.7所述另一终端解析接收到的第三数据包,对应创建相同的哈希键值对AL,并将每个哈希键值对AL及其存储路径写入对应的第二文件中;
2.8所述另一终端依次发送哈希键值对AL至所述终端;
2.9所述终端读取接收到哈希键值对AL对应的存储路径AL_PATH,并发送第四数据包至所述另一终端,所述第四数据包包括待同步的当前哈希键值对AL及其对应的存储路径AL_PATH;
2.10所述另一终端解析接收到的第四数据包,依据其中的存储路径AL_PATH更改对应的第二文件中所述当前哈希键值对AL对应的存储路径AL_PATH;
2.11所述另一终端发送查找更改后的存储路径AL_PATH的指令至所述终端;
2.12所述终端依据指令对应的存储路径AL_PATH发送下载指令至所述另一终端;
2.13所述另一终端接收到下载指令后创建以对应哈希键值对AL命名的文件;
2.14所述终端读取指令对应的存储路径AL_PATH所对应的片段数据传输至所述另一终端。
三、数据转译
即将终端已同步的数据重新同步至终端数据库,具体可以包括:
1、所述另一终端读取第三文件的哈希键值对DL中的文件内容后解析出第二文件的哈希键值对TL及其对应的存储路径TL_PATH,并依据所述哈希键值对TL解密得到对应的表名。
2、所述另一终端判断所述表名对应的数据表是否存在,若不存在,则在本地数据库创建所述表名对应的数据表;
3、依据所述存储路径TL_PATH读取对应的内容,解析出所包含的第一文件及其存储路径AL_PATH;
4、判断本地数据库中是否存在所述第一文件对应的哈希键值对AL,若不存在,则创建所述哈希键值对AL;
5、依据所述存储路径AL_PATH读取对应的内容,并将读取出的内容写入数据库中,且与所述第一文件对应;
6、以所述哈希键值对AL命名对应的第一文件。
实施例二
本实施例对应实施例一的第二大步骤“数据录入后的同步”以及第三大步骤的“数据转译”分别做进一步的扩展,以三个终端之间的数据同步,且终端为手机为例进行详细说明,具体包括:
二、数据录入后的同步
1、第一终端接收到第一终端输入的数据(包含数据内容和表名)。
2、第一终端根据输入的数据的表名加上手机(即第一终端)的IP地址生成键值对TL。
3、第一终端保存上述获取到的用户输入的内容数至第一终端的文件。
4、第一终端将上述的文件名和手机IP地址生成键值对AL。
5、第一终端将上述的AL以及AL所对应的文件路径存储路径AL_PATH保存至本地文件(重新保存一份文件)。
6、第一终端更改上述的文件名为TL的键值对,如:文件名:TL,TL中保存片段(AL)的和片段对应的路径(即AL的路径)AL_PATH。
下表一为一个片段的结构体,包含片段名和片段地址。同时为保证蓝牙传输数据的稳定性,每个TL文件中仅存放20条记录。假设TL文件中的数据有60条,则拆分为3个文件:TL_1,TL_2,TL_3。
表一
AL | AL_PATH |
7、第一终端将TL保存至第一终端的文件中(将上述的片段记录信息写入到TL文件中)。
8、第一终端根据手机序列号加上手机的IP地址生成MD5的键值对DL。
如:文件名为DL,DL中保存多个TL,如下表二所示。
表二
TL | TL_PATH |
9、为保证蓝牙数据的传输稳定性,每个DL文件中仅存放20条记录。假设DL文件中的数据有60条,则拆分为3个文件:DL_1,DL_2,DL_3。
10、为保证数据的实时更新,且可方便溯源,则在传输给第二终端时,数据包体结构为:
节点包体结构DATA:
其中,“from”指的是节点的数据来源,其值在此对应发送端的键值对;“to”的值指的是目标节点,其值在此对应为接收端的键值对;“data_msg”为数据项,如根据终端下发的数据中带有多条链,分别是DL_1,DL_2,DL_3。
11、第二终端接收到第一终端发来的数据包,解析包体中的内容。
12、第二终端从本地缓存中读取出第一终端的键值对X1,并创建文件目录为X1。
13、第二终端根据数据包中的data_msg中的内容创建文件DL_1,DL_2,DL_3,即根据data_msg中的链的HASH命名去创建文件夹,如果上述json串中没有node节点,则就会创建文件夹DL_1,DL_2,DL_3。
14、第二终端从本地缓存中读取出第三终端的键值对修改包体中的“from”的值为第二终端的键值对和“to”的值为第三终端的键值对。
15、第二终端读取包体内容并根据包体内容中的“data_msg”字段获取到节点数据,并将节点中的键值对如上的DL_1发送给第一终端。
16、第一终端接收到第二终端发来的DL_1,查找本地DL_1文件,并解析出DL_1文件中的内容TL_LIST(即表集合,只取出键值对TL的列表);
17、第一终端发送AL_List(内容集合)给第二终端。交互数据如下所示:
获取指定节点的中的数据包体结构Link
18、第二终端根据”data_msg”中的键值对创建TL_1,TL_2,TL_3文件。并将TL_1,TL_2,TL_3以及所对应的文件路径写入至DL_1文件中。
19、第二终端发送TL_1给第一终端;
20、第一终端接收到第二终端发来的TL_1,查找本地的TL_1文件,并计解析出TL_1文件中的AL_List(只去除键值对AL的列表),具体交互数据如下所示:
获取指定Link的中的数据包体结构Segment
21、第二终端根据”data_msg”中的键值对创建AL_1,AL_2,AL_3文件。并将AL_1,AL_2,AL_3以及所对应的文件路径写入至TL_1文件中。
22、第二终端发送AL_1给第一终端;
获取指定Segment的中的数据包体结构内容:
23、第一终端读取AL_LIST列表,查找出AL_1所对应的AL_PATH。
24、第一终端发送AL_PATH至第二终端。
25、第二终端接收到AL_PATH,并更改TL1文件中的AL_PATH的值。
26、第二终端发送查找AL_PATH的指令给第一终端。
27、第一终端接收到第二终端发起的查找AL_PATH的指令后,从本地中检索AL_PATH。
28、第一终端发送下载内容的指令给第二终端。
三、数据转译
以上的操作均为无网络情况下一种组网的策略,因此需要将上述已同步后的数据重新同步至终端数据库中,以保证移动端数据具备检索的条件以及实时性。具体过程包括:
29、第二终端接收到第一终端发来的下载内容的指令后创建文件,并修改文件名为上述的AL_1。
30、第二终端发送开始下载的指令给第一终端。
31、第一终端接收到第二终端发来的开始下载指令后,发送请求同步的指令给第一终端。
32、第一终端接收到请求同步的指令,读取AL_PATH所对应的文件FILE_PATH_AL1的内容以流的方式传输给第二终端。以此类推,第二终端和第三终端的通讯同上所述。
33、第一终端发送同步完成的指令给第二终端。
34、第二终端接收到第一终端发送的同步完成的指令后,从本地缓存中读取X1。
35、第二终端根据X1读取DL_1。
36、第二终端读取DL_1中的文件内容后解析出TL_1以及TL_1所对应的文件路径TL_1_PATH,并根据TL_1的生成算法进行解密形成具体的表名Table_1。
37、第二终端判断Table_1是否存在,如果Table_1不存在,则在数据库中创建Table_1。
38、第二终端读取TL_1_PATH的内容,解析出AL_1以及AL_1所对应的文件路径AL_1_PATH。
39、第二终端判断数据库中是否存在DATA_HASH字段,如果不存在,则创建DATA_HASH字段。
40、第二终端读取AL_1_PATH中的内容,并将读取出的内容写入至数据库中。
41、第二终端更新DATA_HASH字段为AL的值。
其它终端均同上。
本实施例充分利用蓝牙组网技术,提供邻近节点根据片段中提供的哈希键值从其他节点中下载数据,支持任意时间段内自行下载片段数据;实现在无网络情况下也能进行数据的处理和信息共享,为项目的协作提供便利,增加工作效率。
实施例三
本实施例在实施例一或实施例二的基础上做进一步的扩展,增加用户更新(新增或修改)数据后的数据同步更新过程,其具体可以包括:
当片段数据被更新后,原始的片段数据将为更新后的片段数据的父哈希键值对。具体而言,终端更新数据后,对应所更新的片段数据生成新的哈希键值对,并标记所述片段数据的原哈希键值对为其父哈希键值对。
用户新增或修改数据时都将会形成一个片段,所有终端设备均可根据片段文件来更新数据。
用户修改某条记录时,指的是数据库中的记录,就是片段HASH所对应的文件中的内容(即文章具体实施方式中阐述的AL_PATH),系统本身已存有该记录所对应的原始DATA_HASH值,该字段用于溯源,可根据该字段查找出原始数据;当用户修改该记录后,会重新生成一个新的DATA_HASH的键值对,并追加原始DATA_HASH为父哈希键值对。等到所有终端均同步完成后,系统会自行删除原始的DATA_HASH以及DATA_HASH所对应的文件(以DATA_HASH为命名的文件名,即AL_1.TXT)及DATA_HASH在数据库中所对应的记录。
实施例四
本实施例对应实施例一或实施例二,提供一具体运用场景:
提供一种基于无网络情况下一种通讯组网方式,假设用于背景技术中所述的扶贫山区的业务协作。一些扶贫信息采集人员需要共享数据的时候,就可以通过实施例一或实施例二的步骤将采集数据同步至每台手机上。
按照以往的技术领域,在蓝牙方面,单台手机可连接4台,但是要连接到更多手机的话,数据传输不稳定,经常会断连。
而实施例一所述的P2P组网的方式后,单台手机仅支持2台手机连接。而在每台手机即可做服务端也可以做客户端。当手机的客户端向其它手机的服务端请求下发数据时,其它手机下服务端下发的数据会发回给这台手机的客户端,而这台手机的客户端会把数据放到消息队列中,然后这台手机的服务端处会从消息队列中取出数据,下发给其它手机的客户端。
使用上述实施例一或实施例二的节点数据同步方式,就是使得每台手机都能更好的了解到数据来源,应该从哪台手机下载数据。当出现蓝牙断链的情况下,手机的客户端可以根据已经接收好的链去向目标存放数据的手机发起请求,进行下载未下载完的数据,以达到每台手机的数据资源的同步。
假设手机A向手机B发送请求下载数据。如果手机B找不到该数据会向手机C请求下载数据(节点溯源),当手机C找到数据后,下发给手机B,手机B将数据再下发给手机A。
实施例五
本实施例对应上述实施例一至实施例四,提供一种基于分布式存储实现移动终端间数据同步的系统,具体包括:
包括通过自组网建立蓝牙通讯连接的任意两个终端;
终端,用于依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;以及,依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;
与所述终端连接的另一终端,用于依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
在一具体实施方式中,任意两个终端通过预设的UUID建立蓝牙通讯连接;通讯连接的终端在建立蓝牙通讯以后,依据自身IP地址和终端序列号生成哈希键值对X,并发送至与其连接的其他终端。
具体的,自组网内的终端至少包括第一终端、第二终端和第三终端,
所述第一终端,用于依据自身IP地址和终端序列号生成哈希键值对X1;以及发送哈希键值对X1至第二终端;以及存储第二终端发送过来的哈希键值对X2至本地;
第二终端,用于存储第一终端发送过来的哈希键值对X1至本地;以及依据自身IP地址和终端序列号生成哈希键值对X2;以及发送哈希键值对X2至第一终端;以及发送哈希键值对X2至第三终端;以及存储第三终端发送过来的哈希键值对X3至本地。
第三终端,用于存储第二终端发送过来的哈希键值对X2至本地;以及依据自身IP地址和终端序列号生成哈希键值对X3;以及发送哈希键值对X3至第二终端。
在一具体实施方式中,所述终端,还用于终端更新数据后,对应所更新的片段数据生成新的哈希键值对,并标记所述片段数据的原哈希键值对为其父哈希键值对,以及
用于自组网内所有终端同步完成后,删除所述原哈希键值对及其对应的片段数据和在本地数据库的记录。
优选的,所述另一终端,还用于将所同步的片段数据存储至本地数据库。
优选的,另一终端,还用于依据所述终端对应的哈希键值对X创建一文件目录,用于从所述终端同步的片段数据。
在一具体实施方式中,所述终端具体用于:
终端依据蓝牙传输吞吐量拆分输入的数据为至少两个的片段数据,并分别存储至对应个数的第一文件中;以及
用于对应每个第一文件的片段数据分别生成哈希键值对;以及
用于蓝牙传输吞吐量依次选取至少两个的第一文件构成一条链表,获取对应所述片段数据的至少一条链表,每条链表记录有对应的每个第一文件的哈希键值对和存储路径。
在另一具体实施方式中,所述终端具体用于:
依据输入的数据对应本地数据库的表名以及终端的IP地址生成哈希键值对TL;以及
用于终端依据蓝牙传输吞吐量将输入的数据拆分成至少两个的片段数据,并分别存储至对应个数的第一文件;以及
用于对应每个第一文件的文件名和终端的IP地址生成各自的哈希键值对AL;以及
用于依据蓝牙传输吞吐量,依次选取至少两个的哈希键值对AL及其对应的第一文件的存储路径AL_PATH,并分别存储至不同的第二文件构成至少一条链表;以及
用于以所述哈希键值对TL和编号命名第二文件;以及
用于终端依据其唯一标识符和IP地址生成哈希键值对DL;以及
用于依据蓝牙传输吞吐量,依次选取至少一个的第二文件,并分别存储至不同的第三文件;以及
用于以所述哈希键值对DL和编号命名第三文件。
对应本具体实施例,所述终端还用于发送待同步的若干个第三文件至所述另一终端;
所述另一终端,还用于对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;以及
用于在对应的第三文件内创建相同的第二文件集TL_LIST,并依据每个第二文件的文件名称向所述终端获取对应的第二文件内的哈希键值对集AL_LIST及其对应的存储路径AL_PATH;以及
用于将每个哈希键值对AL及其对应的存储路径AL_PATH写入对应的第二文件中;以及
用于向终端发起对应所述存储路径AL_PATH的下载指令。
在另一具体实施方式中,
所述终端,还用于发送第一数据包至与其连接的另一终端,所述第一数据包包括待同步的第三文件;以及
用于对应第三文件的数量依次发送第二数据包至所述另一终端,所述第二数据包包括待同步的当前第三文件及其包含的第二文件;以及
用于依据接收到的文件名查找本地对应的第二文件,并发送第三数据包至所述另一终端,所述第三数据包包括待同步的当前第二文件及其包含的至少两个的哈希键值对AL;以及
用于读取接收到哈希键值对AL对应的存储路径AL_PATH,并发送第四数据包至所述另一终端,所述第四数据包包括待同步的当前哈希键值对AL及其对应的存储路径AL_PATH;以及
依据指令对应的存储路径AL_PATH发送下载指令至所述另一终端。
所述另一终端,还用于解析第一数据包,对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;以及
用于解析接收到的第二数据包,对应创建相同的第二文件,并将每个第二文件的哈希键值对TL及其存储路径写入对应的第三文件中;以及
用于依次发送第二文件的文件名至终端;以及
用于解析接收到的第三数据包,对应创建相同的哈希键值对AL,并将每个哈希键值对AL及其存储路径写入对应的第二文件中;以及
用于依次发送哈希键值对AL至所述终端;以及
用于解析接收到的第四数据包,依据其中的存储路径AL_PATH更改对应的第二文件中所述当前哈希键值对AL对应的存储路径AL_PATH;以及
用于发送查找更改后的存储路径AL_PATH的指令至所述终端。
在另一具体实施方式中,所述另一终端,还用于接收到下载指令后创建以对应哈希键值对AL命名的文件;
所述终端,还用于读取指令对应的存储路径AL_PATH所对应的片段数据传输至所述另一终端。
在一具体实施方式中,所述第二终端,还用于读取第三文件的哈希键值对DL中的文件内容后解析出第二文件的哈希键值对TL及其对应的存储路径TL_PATH,并依据所述哈希键值对TL解密得到对应的表名;以及
用于判断所述表名对应的数据表是否存在,若不存在,则在本地数据库创建所述表名对应的数据表;
依据所述存储路径TL_PATH读取对应的内容,解析出所包含的第一文件及其存储路径AL_PATH;
判断本地数据库中是否存在所述第一文件对应的哈希键值对AL,若不存在,则创建所述哈希键值对AL;
依据所述存储路径AL_PATH读取对应的内容,并将读取出的内容写入数据库中,且与所述第一文件对应;
以所述哈希键值对AL命名对应的第一文件。
综上所述,本发明提供的一种基于分布式存储实现终端数据同步的方法及其系统,在无网络情况下也能进行数据的处理和信息共享,为项目的协作提供便利,增加工作效率;进一步的还能够实现本地数据同步的实时性,确保终端数据同步后具备检索的条件;再进一步的,支持数据实时更新,同时具备原始数据的溯源功能。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (17)
1.基于分布式存储实现终端数据同步的方法,其特征在于,包括:
通过自组网建立任意两个终端之间的蓝牙通讯连接;
终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;
终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;
与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
2.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,还包括:
终端更新数据后,对应所更新的片段数据生成新的哈希键值对,并标记所述片段数据的原哈希键值对为其父哈希键值对。
3.如权利要求2所述的基于分布式存储实现终端数据同步的方法,其特征在于,还包括:
自组网内所有终端同步完成后,删除所述原哈希键值对及其对应的片段数据和在本地数据库的记录。
4.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,还包括:
所述另一终端将所同步的片段数据存储至本地数据库。
5.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,链表还记录有对应的每个片段数据与其相邻的片段数据的哈希键值对。
6.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径,具体为:
终端依据蓝牙传输吞吐量拆分输入的数据为至少两个的片段数据,并分别存储至对应个数的第一文件中;
对应每个第一文件的片段数据分别生成哈希键值对;
依据蓝牙传输吞吐量依次选取至少两个的第一文件构成一条链表,获取对应所述片段数据的至少一条链表,每条链表记录有对应的每个第一文件的哈希键值对和存储路径。
7.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述终端依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;终端依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径,具体为:
终端依据输入的数据对应本地数据库的表名以及终端的IP地址生成哈希键值对TL;
终端依据蓝牙传输吞吐量将输入的数据拆分成至少两个的片段数据,并分别存储至对应个数的第一文件;
对应每个第一文件的文件名和终端的IP地址生成各自的哈希键值对AL;
依据蓝牙传输吞吐量,依次选取至少两个的哈希键值对AL及其对应的第一文件的存储路径AL_PATH,并分别存储至不同的第二文件构成至少一条链表;
以所述哈希键值对TL和编号命名第二文件。
8.如权利要求7所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述以所述哈希键值对TL和编号命名第二文件,之后,还包括:
终端依据其唯一标识符和IP地址生成哈希键值对DL;
依据蓝牙传输吞吐量,依次选取至少一个的第二文件,并分别存储至不同的第三文件;
以所述哈希键值对DL和编号命名第三文件。
9.如权利要求8所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据,具体为:
所述终端发送待同步的第三文件至所述另一终端;
所述另一终端对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;
所述另一终端在对应的第三文件内创建相同的第二文件集TL_LIST,并依据每个第二文件的文件名称向所述终端获取对应的第二文件内的哈希键值对集AL_LIST及其对应的存储路径AL_PATH;
所述另一终端将每个哈希键值对AL及其对应的存储路径AL_PATH写入对应的第二文件中;
所述另一终端向终端发起对应所述存储路径AL_PATH的下载指令。
10.如权利要求7所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端下载对应的片段数据,具体为:
所述终端发送第一数据包至与其连接的另一终端,所述第一数据包包括待同步的第三文件;
所述另一终端解析第一数据包,对应创建相同的第三文件,并依据每个第三文件的文件名称向所述终端获取对应的第三文件内的第二文件集TL_LIST;
终端对应第三文件的数量依次发送第二数据包至所述另一终端,所述第二数据包包括待同步的当前第三文件及其包含的第二文件;
所述另一终端解析接收到的第二数据包,对应创建相同的第二文件,并将每个第二文件的哈希键值对TL及其存储路径写入对应的第三文件中;
所述另一终端依次发送第二文件的文件名至终端;
终端依据接收到的文件名查找本地对应的第二文件,并发送第三数据包至所述另一终端,所述第三数据包包括待同步的当前第二文件及其包含的至少两个的哈希键值对AL;
所述另一终端解析接收到的第三数据包,对应创建相同的哈希键值对AL,并将每个哈希键值对AL及其存储路径写入对应的第二文件中;
所述另一终端依次发送哈希键值对AL至所述终端;
所述终端读取接收到哈希键值对AL对应的存储路径AL_PATH,并发送第四数据包至所述另一终端,所述第四数据包包括待同步的当前哈希键值对AL及其对应的存储路径AL_PATH;
所述另一终端解析接收到的第四数据包,依据其中的存储路径AL_PATH更改对应的第二文件中所述当前哈希键值对AL对应的存储路径AL_PATH;
所述另一终端发送查找更改后的存储路径AL_PATH的指令至所述终端;
所述终端依据指令对应的存储路径AL_PATH发送下载指令至所述另一终端。
11.如权利要求10所述的基于分布式存储实现终端数据同步的方法,其特征在于,还包括:
所述另一终端接收到下载指令后创建以对应哈希键值对AL命名的文件;
所述终端读取指令对应的存储路径AL_PATH所对应的片段数据传输至所述另一终端。
12.如权利要求8所述的基于分布式存储实现终端数据同步的方法,其特征在于,还包括:
所述第二终端读取第三文件的哈希键值对DL中的文件内容后解析出第二文件的哈希键值对TL及其对应的存储路径TL_PATH,并依据所述哈希键值对TL解密得到对应的表名;
所述另一终端判断所述表名对应的数据表是否存在,若不存在,则在本地数据库创建所述表名对应的数据表;
依据所述存储路径TL_PATH读取对应的内容,解析出所包含的第一文件及其存储路径AL_PATH;
判断本地数据库中是否存在所述第一文件对应的哈希键值对AL,若不存在,则创建所述哈希键值对AL;
依据所述存储路径AL_PATH读取对应的内容,并将读取出的内容写入数据库中,且与所述第一文件对应;
以所述哈希键值对AL命名对应的第一文件。
13.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,自组网内的终端数量为4个以上。
14.如权利要求1所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述通过自组网建立任意两个终端之间的蓝牙通讯连接,具体为:
任意两个终端通过预设的UUID建立蓝牙通讯连接;
通讯连接的终端依据自身IP地址和终端序列号生成对应的哈希键值对X,并将其发送至与其连接的其他终端。
15.如权利要求14所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述通讯连接的终端依据自身IP地址和终端序列号生成对应哈希键值对X,并将其发送至与其连接的其他终端,具体为:
第一终端依据自身IP地址和终端序列号生成哈希键值对X1;
第一终端发送哈希键值对X1至第二终端;
第二终端存储第一终端发送过来的哈希键值对X1至本地;
第二终端依据自身IP地址和终端序列号生成哈希键值对X2;
第二终端发送哈希键值对X2至第一终端;
第一终端存储第二终端发送过来的哈希键值对X2至本地;
第二终端发送哈希键值对X2至第三终端;
第三终端存储第二终端发送过来的哈希键值对X2至本地;
第三终端依据自身IP地址和终端序列号生成哈希键值对X3;
第三终端发送哈希键值对X3至第二终端;
第二终端存储第三终端发送过来的哈希键值对X3至本地。
16.如权利要求14所述的基于分布式存储实现终端数据同步的方法,其特征在于,所述与所述终端连接的另一终端依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据,之前,还包括:
所述另一终端依据所述终端对应的哈希键值对X创建一文件目录,用于从所述终端同步的片段数据。
17.一种基于分布式存储实现终端数据同步的系统,其特征在于,包括通过自组网建立蓝牙通讯连接的任意两个终端;
终端,用于依据蓝牙传输吞吐量将数据拆分成至少两个的片段数据;以及,依据蓝牙传输吞吐量依次从所述片段数据中选取至少两个的片段数据构建对应的链表,获取至少一条链表,所述链表记录有对应的片段数据的哈希键值对和存储路径;
与所述终端连接的另一终端,用于依据链表的哈希键值对和存储路径从所述终端同步对应的片段数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811376321.6A CN111200623B (zh) | 2018-11-19 | 2018-11-19 | 基于分布式存储实现终端数据同步的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811376321.6A CN111200623B (zh) | 2018-11-19 | 2018-11-19 | 基于分布式存储实现终端数据同步的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111200623A true CN111200623A (zh) | 2020-05-26 |
CN111200623B CN111200623B (zh) | 2022-03-29 |
Family
ID=70747544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811376321.6A Active CN111200623B (zh) | 2018-11-19 | 2018-11-19 | 基于分布式存储实现终端数据同步的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111200623B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112153696A (zh) * | 2020-09-25 | 2020-12-29 | Oppo广东移动通信有限公司 | Rlc sdu分段处理方法、装置及终端 |
CN113723180A (zh) * | 2021-07-19 | 2021-11-30 | 山东大学 | 构建服务机器人主动物品检测模型数据集的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211365A (zh) * | 2006-12-28 | 2008-07-02 | 国际商业机器公司 | 用于建立搜索索引的方法和系统 |
CN102640118A (zh) * | 2009-10-16 | 2012-08-15 | 赛门铁克公司 | 用于高效文件存储的具有多个索引的去重复存储系统 |
CN104660308A (zh) * | 2015-01-26 | 2015-05-27 | 武汉健坤科技有限公司 | 基于蓝牙低功耗技术的文件传输方法和系统 |
CN105281810A (zh) * | 2014-06-10 | 2016-01-27 | 西安中兴新软件有限责任公司 | 一种传输数据的方法、设备和系统 |
-
2018
- 2018-11-19 CN CN201811376321.6A patent/CN111200623B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211365A (zh) * | 2006-12-28 | 2008-07-02 | 国际商业机器公司 | 用于建立搜索索引的方法和系统 |
CN102640118A (zh) * | 2009-10-16 | 2012-08-15 | 赛门铁克公司 | 用于高效文件存储的具有多个索引的去重复存储系统 |
CN105281810A (zh) * | 2014-06-10 | 2016-01-27 | 西安中兴新软件有限责任公司 | 一种传输数据的方法、设备和系统 |
CN104660308A (zh) * | 2015-01-26 | 2015-05-27 | 武汉健坤科技有限公司 | 基于蓝牙低功耗技术的文件传输方法和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112153696A (zh) * | 2020-09-25 | 2020-12-29 | Oppo广东移动通信有限公司 | Rlc sdu分段处理方法、装置及终端 |
CN113723180A (zh) * | 2021-07-19 | 2021-11-30 | 山东大学 | 构建服务机器人主动物品检测模型数据集的方法和系统 |
CN113723180B (zh) * | 2021-07-19 | 2023-08-01 | 山东大学 | 构建服务机器人主动物品检测模型数据集的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111200623B (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8375436B2 (en) | Session migration over content-centric networks | |
EP2803006B1 (en) | Cloud-based distributed data system | |
Song et al. | Content centric peer data sharing in pervasive edge computing environments | |
CN111200805B (zh) | 基于蓝牙设备的蓝牙组网方法及其系统 | |
US10305729B2 (en) | Systems and methods of providing an edge cloud storage and caching system operating over a local area network | |
CN101247316A (zh) | 一种通信终端的数据共享方法 | |
US11343225B2 (en) | Sharing media among remote access clients in a universal plug and play environment | |
CN111200623B (zh) | 基于分布式存储实现终端数据同步的方法及其系统 | |
CN109474896B (zh) | 一种去中心化的区块链实现方法、系统及存储介质 | |
TW201543365A (zh) | 在一服務導向架構(soa)網路中尋求服務之技術 | |
US8984100B2 (en) | Data downloading method, terminal, server, and system | |
CN110909030B (zh) | 一种信息处理方法及服务器集群 | |
JPWO2011114584A1 (ja) | 情報共有方法および通信端末 | |
KR101600717B1 (ko) | P2p 방식의 가상머신 운영체제 이미지 다운로드 방법 및 장치 | |
CN112511993B (zh) | 一种群组传输数据的方法、装置及终端 | |
US11892984B2 (en) | Method of building and searching a multi-dimensional cross-linked distributed ledger | |
Lombera et al. | Peer-to-peer publication, search and retrieval using the Android mobile platform | |
WO2014180436A1 (zh) | 一种终端间进行通信的方法及终端 | |
WO2016177135A1 (zh) | 资源管理方法、装置及控制终端 | |
JP4546538B2 (ja) | モバイルネットワーク内の共有ファイルに関する情報を管理する方法、装置およびプログラム製品 | |
JP4206487B2 (ja) | 通信システム、同システムにおけるアドレス重複検出方法、アドホックノード、プログラム | |
CN114048270B (zh) | 区块链数据同步的方法和计算机可读存储介质 | |
KR100545744B1 (ko) | 클러스터링 환경에서의 모바일 비즈니스 응용 서버간 콘텐츠 캐시 동기화 방법 | |
CN111200804B (zh) | 基于蓝牙传输的数据同步方法及其系统 | |
CN111200472B (zh) | 新入网设备的数据同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |