CN115443458A - 数据同步中的多模式版本支持 - Google Patents
数据同步中的多模式版本支持 Download PDFInfo
- Publication number
- CN115443458A CN115443458A CN202080100157.5A CN202080100157A CN115443458A CN 115443458 A CN115443458 A CN 115443458A CN 202080100157 A CN202080100157 A CN 202080100157A CN 115443458 A CN115443458 A CN 115443458A
- Authority
- CN
- China
- Prior art keywords
- application
- data
- computing device
- version number
- object type
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/213—Schema design and management with details for schema evolution support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的由计算机实现的方法包括由第一设备从第二设备检索应用程序数据。应用程序数据包括驻留在第二设备上的app的app ID和第一应用程序版本号。使用与app ID和第一应用程序版本号相关联的对象类型对第一数据库表进行更新。对象类型标识app使用的数据对象的数据库表模式和数据对象的多个数据字段。基于驻留在第三设备上的app的第二应用程序版本号和第一数据库表,将多个数据字段中的一个或更多个数据字段存储的数据与第三设备同步。
Description
技术领域
本公开涉及与通信网络(诸如移动后端即服务(或MBaaS)架构)中的数据同步技术结合的模式(schema)版本支持,包括跨多个设备的应用程序数据一致性管理的技术以及数据同步中的多模式版本支持的技术。
背景技术
计算设备(例如,移动计算设备)正在生成更多的数据并且正在消耗更多功率来处理增加的数据量。此外,随着便携和移动设备数量的增加,可能需要在网络架构内的多个网络位置处访问和同步从此类设备收集的数据以用于不同目的,包括分析、人工智能(AI)处理、商业智能处理、或者其他分析或数据处理功能。
网络架构可以包括MBaaS架构,其可以用作集成分布式数据管理系统,该系统可以简化用户应用程序(“app”)开发,也可以简化设备上和网络中的数据管理。在一些方面,MBaaS架构可以用于为网络app和移动app的开发者提供一种将他们的应用程序链接到后台数据存储和API的方式,包括由托管方提供的服务。在这点上,MBaaS架构辅助app开发者进行后台数据服务的设置和维护。
在网络架构内(例如,在MBaaS架构内)的计算设备上执行的每个app都可能在其生命周期中进行多次更新,以修复缺陷(或“漏洞”)或者添加新功能。然而,用户可能拥有/使用多个计算设备,并且用户可能不会将所有计算设备同时更新到app的相同版本。就此而言,用户可能会在不同设备上继续使用不同版本的app,这可能会导致用户的计算设备之间的数据变化问题和数据同步问题。
发明内容
现在描述各示例以简化形式对下面将在具体实施方式中进一步描述的一组概念进行介绍。本发明内容并非旨在标识所要求保护的主题的关键或必要特征,也不旨在用于限制所要求保护的主题的范围。
根据本公开的第一方面,提供了一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的由计算机实现的方法。所述方法包括由所述多个计算设备中的第一计算设备从所述多个计算设备中的第二计算设备检索应用程序数据。所述应用程序数据包括在所述第二计算设备上驻留(或执行)的应用程序的应用程序标识(ID)和第一应用程序版本号。由所述第一计算设备使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新。所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段。响应于由所述第一计算设备向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知,从所述第三计算设备接收第二应用程序版本号。所述第二应用程序版本号与在所述第三计算设备上驻留(或执行)的所述应用程序相关联。由所述第一计算设备基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段。由所述第一计算设备向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
在根据上述第一方面的方法的第一实现形式中,以在更新所述第一数据库表之前,应用程序代码由所述第一计算设备执行,以在所述第一计算设备处安装具有所述第一应用程序版本号的所述应用程序。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第二实现形式中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第三实现形式中,由所述第一计算设备基于所述对象类型更新第二数据库表。所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第四实现形式中,由所述第一计算设备使用所述第一数据库表确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第五实现形式中,由所述第一计算设备使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表确定所述更新后的数据字段中的所述一个或更多个数据字段。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第六实现形式中,所述第一计算设备响应于来自所述第三计算设备的数据下载请求向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的所述数据。所述数据下载请求包括所述第二应用程序版本号。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第七实现形式中,所述应用程序数据包括用户信息,所述用户信息标识被授权在所述第二计算设备上使用所述应用程序的用户。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第八实现形式中,由所述第一计算设备执行所述用户是否被授权使用所述第三计算设备上的所述应用程序的验证。
在根据上述第一方面或者第一方面的任一前述实现形式的方法的第九实现形式中,由所述第一计算设备在所述验证成功时向所述第三计算设备传送所述更新后的数据字段中的所述一个或更多个数据字段存储的数据。在所述验证不成功时生成通知。
根据本公开的第二方面,提供了一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的系统,所述系统包括存储指令的存储器以及与所述存储器通信的一个或更多个处理器。所述一个或更多个处理器执行所述指令以从所述多个计算设备中的第二计算设备检索应用程序数据,所述应用程序数据包括在所述第二计算设备上驻留(或执行)的应用程序的应用程序ID和第一应用程序版本号。使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新。所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段。响应于向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知,从所述第三计算设备接收第二应用程序版本号。所述第二应用程序版本号与在所述第三计算设备上驻留(或执行)的所述应用程序相关联。基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段。向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
在根据上述第二方面的系统的第一实现形式中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
在根据上述第二方面或者第二方面的任一前述实现形式的系统的第二实现形式中,所述一个或更多个处理器执行所述指令以基于所述对象类型更新第二数据库表。所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
在根据上述第二方面或者第二方面的任一前述实现形式的系统的第三实现形式中,所述一个或更多个处理器执行所述指令以确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号,所述确定使用所述第一数据库表。
在根据上述第二方面或者第二方面的任一前述实现形式的系统的第四实现形式中,所述更新后的数据字段中的所述一个或更多个数据字段是使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表确定的。
在根据上述第二方面或者第二方面的任一前述实现形式的系统的第五实现形式中,响应于来自所述第三计算设备的数据下载请求,向所述第三计算设备传送所述更新后的数据字段中的所述一个或更多个数据字段存储的所述数据。所述数据下载请求包括所述第二应用程序版本号。
根据本公开的第三方面,提供了一种存储用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的指令的非暂时性计算机可读介质,所述指令在由多个计算设备中的第一计算设备的一个或更多个处理器执行时,使所述一个或更多个处理器执行操作。所述操作包括从所述多个计算设备中的第二计算设备检索应用程序数据。所述应用程序数据包括在所述第二计算设备上驻留(或执行)的应用程序的应用程序ID和第一应用程序版本号。使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新。所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段。响应于向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知,从所述第三计算设备接收第二应用程序版本号。所述第二应用程序版本号与在所述第三计算设备上驻留(或执行)的所述应用程序相关联。基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段。向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
在根据上述第三方面的非暂时性计算机可读介质的第一实现形式中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
在根据上述第三方面的非暂时性计算机可读介质的第二实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:基于所述对象类型更新第二数据库表。所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
在根据上述第三方面的非暂时性计算机可读介质的第三实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号,所述确定使用所述第一数据库表。
在根据上述第三方面的非暂时性计算机可读介质的第四实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:确定所述更新后的数据字段中的所述一个或更多个数据字段,所述确定使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型的所述对象类型版本号并且使用所述第二数据库表。
在根据上述第三方面的非暂时性计算机可读介质的第五实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:向所述第三计算设备传送由所述更新后的数据字段中的上述一个或更多个数据字段存储的所述数据,所述传送响应于来自所述第三计算设备的数据下载请求。所述数据下载请求包括所述第二应用程序版本号。
在根据上述第三方面的非暂时性计算机可读介质的第六实现形式中,所述应用程序数据包括用户信息,所述用户信息标识被授权在所述第二计算设备上使用所述应用程序的用户。
在根据上述第三方面的非暂时性计算机可读介质的第七实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:执行所述用户是否被授权使用所述第三计算设备上的所述应用程序的验证。
在根据上述第三方面的非暂时性计算机可读介质的第八实现形式中,一旦执行,所述指令还使所述一个或更多个处理器执行的操作包括:向所述第三计算设备传送所述更新后的数据字段中的上述一个或更多个数据字段存储的数据,所述传送是在所述验证成功时进行的。在所述验证不成功时生成通知。
根据本公开的第四方面,提供了一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的系统。所述系统包括用于从所述多个计算设备中的第二计算设备检索应用程序数据的装置。所述应用程序数据包括在所述第二计算设备上驻留(或执行)的应用程序的应用程序ID和第一应用程序版本号。所述系统包括用于使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新的装置,所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段。所述系统包括用于从所述多个计算设备中的第三计算设备接收第二应用程序版本号的装置。响应于向所述第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知,所述第二应用程序版本号与所述在所述第三计算设备上驻留(或执行)的所述应用程序相关联。所述系统包括用于基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段的装置。所述系统包括用于向所述第三计算设备传送所述更新后的数据字段中的上述一个或更多个数据字段存储的数据以进行同步的装置。
在根据上述第四方面的系统的第一实现形式中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
在根据上述第四方面的系统的第二实现形式中,所述系统还包括用于基于所述对象类型更新第二数据库表的装置。所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
在根据上述第四方面的系统的第三实现形式中,所述系统还包括用于确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号的装置,所述确定使用所述第一数据库表。
在根据上述第四方面的系统的第四实现形式中,所述系统还包括用于使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表确定所述更新后的数据字段中的一个或更多个数据字段的装置。
前述示例中的任意一个都可以与前述其他示例中的任意一个或更多个进行组合以在本公开的范围内创建新的实施例。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图通过示例而非限制的方式大体上示出了本文中讨论的各实施例。
图1是根据一些示例实施例的,使用app数据一致性管理(ADCM)功能的网络架构的高级别系统概览。
图2是根据一些示例实施例的,示出了在通信网络内的不同计算设备上执行的app的不同版本所使用的数据对象表的框图。
图3是根据一些示例实施例的,示出了在通信网络内的多个计算设备处的初始app安装以及用于数据一致性管理的数据库表的初始配置的框图。
图4是根据一些示例实施例的,示出了在图3中的通信网络内的app升级的框图,该app升级包括对用于数据一致性管理的数据库表进行更新。
图5是根据一些示例实施例的,示出了在通信网络内的不同计算设备上执行的app的不同版本所使用的数据对象表的框图。
图6是根据一些示例实施例的,示出了在通信网络内的多个计算设备处的初始app安装以及用于数据一致性管理的数据库表的初始配置的框图。
图7是根据一些实施例的,示出了在图6中的通信网络内的app升级的框图,该app升级包括对用于数据一致性管理的数据库表进行更新。
图8是根据一些示例实施例的,适用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的方法的流程图。
图9是根据一些示例实施例的,示出了可以与本文所描述的各设备硬件结合使用的代表性软件架构的框图。
图10是根据一些示例实施例的,示出了实现算法和执行方法的设备的电路的框图。
具体实施方式
首先应当理解,尽管下面提供了一个或更多个实施例的示例性实施方式,但结合图1至图10描述的所公开的系统和/或方法仍可以使用任何数量的技术(无论该技术当前是已知的还是尚不存在的)来实现。本公开绝不应被局限于在下面说明的包括本文说明和描述的示范性设计和示范性实施方式的示例性实施方式、附图和技术,而是可以在所附权利要求的范围连同所附权利要求的全部等同物的范围之内进行修改。
在以下描述中,参考了构成本文一部分的附图,并且在附图中以示例方式示出了可以实践的具体实施例。对这些实施例进行了足够详细的描述以使本领域技术人员能够实践发明的主题,并且应当理解的是,可以利用其他实施例,并且可以在不脱离本公开的范围的情况下进行结构上的改变、逻辑上的改变以及电气改变。因此,以下对示例实施例的描述不具有限制性意义,并且本公开的范围由所附权利要求定义。
如本文所使用的,术语“基于网络的服务基础设施”包括多个网络设备(也称为主机、节点或服务器),其将按需计算能力(例如,通过在网络设备上运行的一个或更多个虚拟机或者其他虚拟资源执行数据同步功能)以及存储能力作为服务提供给端接收者(例如,服务基础设施的客户)的社区,其中端接收者经由网络通信地耦合到服务基础设施内的网络设备。服务基础设施的客户可以使用一台或更多台计算设备(也称为客户设备或用户设备)以通过网络访问和管理由服务基础设施提供的服务(包括MBaaS)。客户设备、网络和基于网络的服务基础设施可以统称为“网络架构”。服务基础设施的客户也可以称为“用户”。
如本文所使用的,术语“模式”表示数据库表的列布局,而术语“元组”表示数据库表的行布局(即,数据)。如本文所使用的,术语“对象类型(ObjectType)”(或“对象类型(Object Type)”)标识数据对象的类型,诸如数据对象的数据库表模式。如本文所使用的,术语“对象”(或“数据对象”)表示计算设备的存储层内的数据库表元组的抽象(或映射)。如本文所使用的,术语“字段”(或“数据字段”)表示数据对象的属性。例如,“学生”可以是描述学生的对象类型,而“学生ID”可以是对象类型“学生”中的字段。
如本文所使用的,术语“应用程序版本”表示在计算设备上驻留或执行的应用程序的版本。在同一用户拥有的不同设备上驻留或执行的同一app的应用程序版本可能不同。如本文所使用的,术语“对象类型版本”表示由app的特定版本所使用的对象类型的版本。由于对app进行更新不一定包括对该app所使用的所有对象类型(即,所有类型的数据对象)进行更新,因此对象类型可以具有其自己的版本。
应用程序可以被配置为以实时方式在app的不同版本上跨设备同步(或sync)数据变化。本文所公开的技术可以用于通信网络(例如,无线自组网)中的计算设备之间的实时app数据同步,其中网络服务器(例如,MBaaS架构中的云后端服务器)经由应用程序数据一致性管理(ADCM)模块执行集中协调。
在一些方面,执行app的计算设备包括对象类型表(OTT),其将该app使用的数据对象的类型(例如,对象类型)映射到其数据字段以及该数据对象的数据对象表(DOT)。换句话说,对象类型标识该app所使用的数据对象的数据库表模式。DOT为与(由OTT标识的对象类型的)数据对象关联的数据字段提供(由该app使用的)特定数据。在这点上,可以在计算设备中为OTT标识的每个对象类型配置DOT。
ADCM模块(例如,具有MBaaS架构的ADCM模块)使用以下表格执行多个计算设备之间的应用程序数据一致性管理:(a)应用程序版本历史表(AVHT),其将应用程序版本映射到对象类型以及该对象类型的版本;以及(b)对象类型版本历史表(OTVHT),其将对象类型版本映射到对象类型及其数据字段。
当每个计算设备正在执行(与app ID和应用程序版本关联的)app时,ADCM模块维护应用程序版本历史(在AVHT中)以及对象类型版本历史(在OTVHT中)。ADCM模块基于计算设备正在执行的该app的版本并使用AVHT和OTVHT将数据从一个或更多个数据对象表同步到各计算设备。在模式升级时(例如,当app在计算设备上更新引起该app所使用的对象类型更新时),在该设备上的数据对象被升级到(与升级后的app关联的)更高版本,并且该数据对象存储的数据由ADCM模块使用AVHT和OTVHT进行同步。在数据同步过程中,仅增加的数据对象变化被用于同步,从而对app数据进行更高效的实时同步。
本文所讨论的数据同步功能可以由ADCM模块执行并且可以包括在通信网络内的每个计算设备处配置OTT、AVHT和OTVHT中的一个或更多个。更具体地,在一个(例如,结合对等网络的)示例实施例中,ADCM模块可以在每个计算设备处被配置为(例如,如图9所示出的)设备操作系统的部分或者可以作为应用程序安装。在另一示例实施例中,ADCM模块可以被配置为仅在集中式网络服务器(例如,网络同步服务器116)处执行,该网络服务器可由多个计算设备访问。一旦在计算设备处安装app,集中式网络服务器处的ADCM模块就会(例如,通过同步请求的传送或者来自设备的通知消息)检测到该app下载或安装,并导致在该计算设备处生成OTT和DOT。ADCM模块也在集中式网络服务器处生成AVHT和OTVHT,以便执行本文所讨论的数据同步功能。
所公开的app数据一致性管理技术的一些好处包括在不同应用程序版本的设备(例如,智能手机、平板电脑、便携计算机等)之间以最小延迟进行数据的通信和同步。在一台设备处进行app升级不需要在执行同一app的其他连接设备上进行升级。app升级可以被停止以及从停止的状态重新启动。即使在没有MBaaS网络时,也可以在对等(P2P)的基础上完全支持app的升级以及应用程序数据一致性管理,其中每台设备都可以被配置为像耦合到具有ADCM功能的MBaaS架构的设备一样操作。
图1是根据一些示例实施例的,使用app数据一致性管理(ADCM)功能的网络架构的高级别系统概览。参考图1,网络架构100可以包括多个设备(例如,用户设备)102A、...、102N(统称为设备102),这些设备经由网络112通信地耦合到基于网络的服务基础设施(例如,MBaaS架构)114。设备102A、...、102N与用户111关联并且可以被配置为使用网络访问客户端,诸如客户端110A、...、110N中的一个,与基于网络的服务基础设施114交互。为清楚起见,设备102A、...、102N可以统称为设备102。网络访问客户端110A、...、110N可以被实现为网页客户端或者应用程序(app)客户端。
设备102A、...、102N(也统称为设备102)还包括对应的app 104A、...、104N、OTT106A、...、106N以及DOT 108A、...、108N。app 104A、...、104N可以是app的不同版本(或相同版本)。OTT 106A、...、106N中的每一个将app 104A、...、104N中的对应的一个app所使用的数据对象的类型(或对象类型)映射到其数据字段。DOT108A、...、108N中的每一个为与相应OTT标识的对象类型的数据对象相关联的数据字段提供(由该app使用的)特定数据。
用户111可以是人类用户(例如,人类)、机器用户(例如,由软件程序配置为与设备102和基于网络的服务基础设施114交互的计算机)或者其任意适当组合(例如,由机器辅助的人或者由人监督的机器)。用户111不是网络架构100的一部分但与设备102(例如,用户111可以是设备102的所有者)相关联(并且可能是设备102的用户)。例如,设备102可以包括属于用户111的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备或者智能手机。用户111可以使用设备102A、...、102N来访问由基于网络的服务基础设施114内的ADCM模块122所提供的用户正在订阅的服务(例如,包括应用程序数据一致性管理服务的与MBaaS相关的服务)。在这方面,用户111也可以被称为基于网络的服务基础设施114的“客户111”或者“租户111”。
网络112可以是能够在机器、数据库和设备(例如,MBaaS架构114内的设备102A、...、102N和网络同步服务器116、...、118)之间或其中的两者之间进行通信的任何网络。相应地,网络112可以是有线网络、无线网络(例如,移动网络或者蜂窝网络)或者其任意适当组合。网络112可以包括构成专用网络、公共网络(例如,因特网)或其任意适当组合的一个或更多个部分。
基于网络的服务基础设施114可以包括多个计算设备(例如,网络同步服务器116、...、118)。图1更详细地示出了网络同步服务器116,其包括MBaaS ADCM模块122和ADCM应用编程接口(API)120。
MBaaS ADCM模块122包括合适的电路、逻辑、接口和/或代码并且被配置为执行与MBaaS架构114通信地耦合的诸如用户111的设备102A、...、102N的多个计算设备之间的应用程序数据一致性管理。更具体而言,MBaaS ADCM模块122维护DOT 128、...、130(具有在设备102A、...、102N上执行的app 104A、…、104N所使用的数据对象)、AVHT 124(将应用程序版本映射到对象类型和对象类型的版本)和OTVHT 126(将对象类型版本映射到对象类型及其字段)。此外,MBaaS ADCM模块122基于在每个设备上驻留或正在每个设备上执行的应用程序版本并且使用AVHT 124和OTVHT 126将由DOT 128、...、130中的数据对象存储的数据与设备102A、...、102N中的一个或更多个设备同步。结合图2和图5提供了对DOT的更详细的描述。结合图3和图4提供对由MBaaS ADCM模块122进行的应用程序数据一致性管理的更详细的说明。结合图6和图7提供了对由ADCM模块在P2P网络中的设备内进行的应用程序数据一致性管理的更详细的描述。
图1中示出的设备中的任意一个都可以在通用计算机中实现,该通用计算机由软件修改(例如,配置或编程)为专用计算机以执行本文所描述的用于该机器、数据库或设备的功能。如本文所使用的,“数据库”是存储数据的数据存储资源,其中数据被结构化为文本文件、表格、电子表格、关系数据库(例如,对象关系数据库、NoSQL数据库、网络数据库或图形数据库)、三元组存储、分级数据存储或其任意适当组合。此外,经由应用编程接口(API)或远程过程调用(RPC)访问的(或存储的)数据可以被认为是从数据库访问的(或存储到数据库的)。此外,图1中示出的设备或数据库中的任何两个或更多个可以被组合成单个机器、数据库或设备,并且本文针对任意单个机器、数据库或设备描述的功能可以在多个机器、数据库或设备之间细分。
图2是根据一些示例实施例的,示出了在通信网络内的不同计算设备上执行的app的不同版本所使用的数据对象表的框图200。参考图2,设备202可以正在执行app的第一版本,其使用具有数据字段“ID”和“姓名”的DOT 208。例如,在设备202上执行的该app的第一版本使用对象类型“学生”,其具有描述“学生”数据对象的数据字段“ID”和“姓名”,并且DOT208提供与该数据对象的数据字段相关联的数据。
设备206可以正在执行app的第二版本,其使用具有数据字段“ID”、“姓名”、“年龄”和“州”的DOT 212。例如,在设备206上执行的该app的第二版本使用对象类型“学生”的升级版本,其具有数据字段“ID”和“姓名”(出现在DOT 208中)以及附加的(新)字段“年龄”和“州”,形成升级后的“学生”数据对象的DOT 212。MBaaS架构204配置有DOT 210,该DOT 210与该app的最新版本所使用的DOT(例如,在设备206上执行的app所使用的升级后的“学生”数据对象的DOT 212)相同。MBaaS架构204的MBaaS ADCM模块使用本文所讨论的应用程序数据一致性管理技术进行执行app的相同或不同版本的多个设备(例如,设备202和设备206)之间的数据(例如,来自DOT 210的数据字段中的一个或更多个字段的数据)的同步。
图3是根据一些示例实施例的,示出了在通信网络内的多个计算设备处的初始app安装以及用于数据一致性管理的数据库表的初始配置的框图300。图3还示出了用带圈的数字指示的app数据一致性管理操作1至6。
参考图3,设备304和306以及MBaaS架构308形成通信网络,诸如自组织无线网络或其他类型的网络。设备304配置有OTT 310和DOT 312。设备306配置有OTT 320和DOT 322。MBaaS架构308包括配置有AVHT 314、OTVHT 316和DOT 318的ADCM模块(未示出在图3中)。
在操作1处,app商店302在例如设备304处安装app 303。例如,在设备304处下载app 303的应用程序代码,并且ADCM模块执行该应用程序代码以安装app 303。app303与应用程序标识(ID)和应用程序版本号(例如,应用程序版本1)相关联。在设备304处安装app303导致生成OTT 310,该OTT 310指定由app 303使用的对象类型。更具体而言,app 303使用具有数据字段学生ID和学生姓名的对象类型“学生”以及具有数据字段学校ID和学校名称的对象类型“学校”。在设备304上安装app 303还导致生成对应的DOT,该DOT具有由OTT310指定的对象类型的数据对象。例如,图3示出了设备304被配置有“学生”类型的数据对象的DOT 312。更具体而言,DOT 312为“学生”类型的数据对象的数据字段学生ID和学生姓名提供数据。
在示例实施例中,app商店302在与设备304的用户相关联的一个或更多个附加设备(例如,设备306)处安装app 303。在设备306上安装app 303导致生成OTT 320,该OTT 320指定app 303在设备306处使用的对象类型。更具体而言,app 303使用具有数据字段学生ID和学生姓名的对象类型“学生”以及具有数据字段学校ID和学校名称的对象类型“学校”。在设备306上安装app 303还导致生成对应的DOT,其具有由OTT320指定的对象类型的数据对象。例如,图3示出了设备306被配置有“学生”类型的数据对象的DOT 322。更具体而言,DOT322为“学生”类型的数据对象的数据字段学生ID和学生姓名提供数据。即使图3示出了设备304和设备306被配置有“学生”类型的数据对象的DOT 312和DOT 322,但是也可以为app303所使用的其他对象类型的数据对象配置其他DOT(例如,“学校”类型的数据对象的DOT)。
在示例实施例中,在app 303被安装在设备304上之后,应用程序数据被传送到MBaaS架构308(或者MBaaS架构308基于app 303安装在设备304上的通知从设备304检索应用程序数据)。来自设备304的应用程序数据包括app 303的应用程序ID和应用程序版本号。在一些方面,该应用程序数据还包括对授权在设备304上使用app的用户(例如,发起从app商店302下载和安装app 303的设备304的用户)进行标识的用户信息。MBaaS架构308中的ADCM模块使用应用程序数据来确定用户是否已经在另一设备上下载并安装了app 303。
如果设备304是唯一具有app 303的设备,则ADCM模块将app 303安装在MBaaS架构308中(例如,安装在托管ADCM模块的网络同步服务器上),并且配置AVHT314、OTVHT 316和DOT 318对设备304处的app 303所使用的每个数据对象的数据库表模式进行同步。如果ADCM模块确定用户已经在另一设备(例如,设备306)上下载并安装了app 303,则ADCM模块验证安装在设备306处的app 303是否具有与安装在MBaaS架构308中的版本相同的版本。如果设备306处的app 303与安装在MBaaS架构308中的app 303的版本不同,则ADCM模块对数据对象的数据库表模式(例如,由AVHT 314和OTVHT 316指定的对象类型)进行同步,以匹配安装在设备306处的app303的版本所使用的数据对象的数据库表模式。
图3示出了当相同应用程序版本(例如,应用程序版本1)的app 303安装在MBaaS架构308中托管ADCM模块(例如,ADCM模块122)的网络同步服务器116处、设备304处以及设备306处时的MBaaS架构308处的AVHT、OTVHT以及DOT配置。在MBaaS架构308从设备304接收到应用程序数据之后,ADCM模块在MBaaS架构308中的网络同步服务器上安装app 303并且(例如,基于应用程序数据)确定与app 303相关联的对象类型。例如,ADCM模块确定app 303使用具有数据字段学生ID和学生姓名的对象类型“学生”以及具有数据字段学校ID和学校名称的对象类型“学校”。
然后,ADCM模块配置AVHT 314以将应用程序版本号(例如,应用程序版本1)映射到对象类型和对象类型版本。在一些方面,当应用程序升级时,对象类型可以升级或者可以不升级。就这一点而言,对象类型版本可以指示同一对象类型的不同版本,其中不同版本具有一个或更多个不同的数据字段。为了解释同一对象类型具有由同一应用程序的不同版本所使用的不同版本的可能性,ADCM模块还配置了OTVHT 316,其将对象类型版本映射到对应的对象类型及其数据字段。例如,OTVHT 316将对象类型“学生”的对象类型版本1映射到该数据对象的数据字段学生ID和学生姓名。类似地,OTVHT316也将对象类型“学校”的对象类型版本1映射到该数据对象的数据字段学校ID和学校名称。
在操作2处,在DOT 312中为“学生”类型的数据对象输入新数据(例如,(01;Tom)和(02;Alex))。在操作3处,添加到DOT 312的新数据与MBaaS架构308同步并且被添加到DOT318,从而更新DOT的相应数据字段。在操作4处,DOT 318的更新后的数据字段的通知被传送到设备306。在操作5处,设备306向MBaaS架构308的ADCM模块传送数据下载请求,该数据下载请求包括安装在设备306处的app 303的应用程序版本号。
在操作6处,MBaaS架构308的ADCM模块对照从设备306接收的应用程序版本号核查AVHT 314以确定该应用程序版本所使用的对象类型和对象类型版本。ADCM模块使用OTVHT316确定与在设备306上执行的应用程序版本所使用的对象类型中的每一个对象类型相关联的数据字段。ADCM模块确定DOT 318的更新后的数据字段中的哪些数据字段被DOT 322使用,并且向设备306传送DOT 318中的这些数据字段所存储的数据以用于同步(例如,使用所传送的数据更新DOT 322)。
在示例实施例中,MBaaS架构308中的ADCM模块使用应用程序数据(包括用户信息)来执行以下验证,验证用户是否被授权在一个或更多个附加设备(例如,设备306)上使用该应用程序。此外,当验证成功时,DOT 318中的数据字段存储的数据被传送到设备306以用于同步。如果验证不成功,ADCM模块生成用户未被授权访问设备306的通知并且该同步被暂停。
图4是根据一些实施例的,示出了在图3中的通信网络内的app升级的框图400,该app升级包括对用于数据一致性管理的数据库表进行更新。图4还示出了用带圈的数字指示的应用数据一致性管理操作7至13。
参考图4,设备304配置有OTT 402和DOT 404。设备306配置有OTT 412和DOT414。MBaaS架构308包括配置有AVHT 406、OTVHT 408和DOT 410的ADCM模块(未示出在图4中)。
在操作7处,app商店302在设备304和设备306处安装app 305(其是app 303的升级后的应用程序版本2)。app 305与app ID(其与app 303的app ID相同)和应用程序版本号(例如,应用程序版本2)相关联。app 305在设备304上的安装导致对象类型“学生”更新为包括附加数据字段学生年龄,而对象类型“学校”保持不变,没有改变任何数据字段。因此,OTT310被更新为OTT 402以反映对象类型“学生”使用的更新后的数据字段。
在示例实施例中,在app 305安装在设备304上之后,应用程序数据被传送到MBaaS架构308(或者MBaaS架构308基于app 305安装在设备304上的通知从设备304检索应用程序数据)。来自设备304的应用程序数据包括应用程序ID和app 305的应用程序版本号。在一些方面,应用程序数据还包括与设备304的用户(例如,发起从app商店302下载和安装app 305的设备304的用户)相关联的用户相关信息。MBaaS架构308中的ADCM模块使用应用程序数据来确定用户是否已经在另一设备上下载并安装了app 305。
如果设备304是唯一具有app 305的设备,并且MBaaS架构308中的ADCM模块的数据库表没有基于app 305使用的对象类型进行更新,则在操作8处,设备304将更新后的对象类型“学生”(以及OTT 402中的任何其他更新后的对象类型)与MBaaS架构308内的ADCM模块所配置的数据库表进行同步。更具体而言,通过包括与应用程序版本2相关联的对象类型“学生”和“学校”的数据库表条目将AVHT 314更新到AVHT406。例如,AVHT 406指示相同的对象类型版本1用于应用程序版本2中的对象类型“学校”,但对象类型版本2用于应用程序版本2中的对象类型“学生”(其对应于具有三个数据字段的更新后的DOT 404)。此外,通过包括对象类型“学生”的对象类型版本2的数据库表条目,OTVHT 316被升级到OTVHT 408,映射到其三个相应的数据字段(学生ID、学生姓名和学生年龄)。DOT 318也被更新为包括“学生”类型的数据对象的所有三个数据字段。
在操作9处,在设备304处将新数据插入DOT 404。更具体而言,针对字段学生ID03的数据以及针对字段学生年龄(针对学生ID 01和学生ID 02)的数据被添加到DOT404。在操作10处,添加到DOT 404的新数据与MBaaS架构308同步并且被添加到DOT 410,更新DOT的相应数据字段。在操作11处,DOT 410的更新后的数据字段的通知被传送到设备306。在操作12处,设备306向MBaaS架构308的ADCM模块传送数据下载请求传,该请求包括安装在设备306处的app 303的应用程序版本号(例如,应用程序版本1)。
在操作13处,MBaaS架构308的ADCM模块对照从设备306接收的应用程序版本号来检查AVHT 406,以确定设备306处的应用程序版本使用的对象类型和对象类型版本。由于设备306正在执行app的先前版本(应用程序版本1),与应用程序版本1对应的对象类型版本1被用于同步。然后,ADCM模块使用OTVHT 408确定与在设备306上执行的应用程序版本所使用的对象类型中的每一个对象类型相关联的数据字段。然后,ADCM模块确定DOT 410的更新后的数据字段中的学生ID和学生姓名数据字段被DOT414使用,并且向设备306传送由DOT410中的这些数据字段存储的数据(即,03;JOHN)用于同步(例如,使用传送的数据更新DOT414)。在这点上,仅添加的数据对象变化被用于数据同步,从而更有效地实时同步app数据。换句话说,仅对应的应用程序版本所使用的数据正在被传送,并且与该应用程序版本没有在使用的数据字段相关联的数据未被传送用于同步。
图5是根据一些示例实施例的,示出了在通信网络500内的不同计算设备上执行的app的不同版本所使用的数据对象表的框图。参考图5,通信网络500是由设备502、504、506和508形成的P2P通信网络。图5还示出了在设备502、504和506上执行的app所使用的DOT。更具体而言,设备502可能正在执行app的第一版本,其使用具有数据字段“ID”和“姓名”的DOT510。例如,在设备502上执行的app的第一版本使用对象类型“学生”,其具有描述“学生”数据对象的数据字段“ID”和“姓名”,并且DOT510提供与该数据对象的数据字段相关联的数据。图5还示出了设备502至设备508中的每一个被配置有附加表,诸如OTVHT、AVHT和设备应用程序版本表(DAVT)。更具体而言,设备502、504、506和508被配置有对应的附加表516、518、520和522。附加表的功能将结合图6进行讨论。
设备504可能正在执行app的第二版本,其使用具有数据字段“ID”、“姓名”和“年龄”的DOT 512。例如,在设备504上执行的app的第二版本使用对象类型“学生”的升级版本,其具有数据字段“ID”和“姓名”(出现在DOT 510中)以及附加的(新)字段“年龄”,从而形成升级后的“学生”数据对象的DOT 512。
设备506可能正在执行app的第三版本,其使用具有数据字段“ID”、“姓名”、“年龄”和“州”的DOT 514。例如,在设备506上执行的app的第三版本使用对象类型“学生”的升级版本,其具有数据字段“ID”、“姓名”和“年龄”(出现在DOT512中)以及附加的(新)字段“州”,从而形成升级后的“学生”数据对象的DOT514。
与网络架构100相比,P2P通信网络500不包括用于协调多个计算设备之间的应用程序数据一致性管理的网络实体(诸如在网络同步服务器116上配置的MBaaS ADCM模块122)。替代地,P2P通信网络500内的设备502、504、506和508中的每一个将被配置有自己的ADCM模块,所述ADCM模块具有用于app数据一致性管理的数据库表,包括AVHT、OTVHT和DOT。此外,P2P通信网络500内的设备502、504、506和508中的每一个也被配置有设备应用程序版本表(DAVT),其指示在P2P网络500内的每个设备内执行的应用程序版本号。结合图6和图7提供对P2P通信网络内的多个计算设备之间的应用程序数据一致性管理的更详细的描述。
图6是根据一些示例实施例的,示出了在通信网络(例如,P2P通信网络)内的多个计算设备处的初始app安装以及用于数据一致性管理的数据库表的初始配置的框图600。图6还示出了用带圈的数字指示的app数据一致性管理操作1至5。
参考图6,设备604和606形成P2P通信网络。设备604配置有AVHT 608、DOT610、OTVHT 612和DAVT 614。设备606配置有AVHT 616、DOT 618、OTVHT 620和DAVT 622。在图6中示出的AVHT、DOT和OTVHT数据库表具有与结合图3讨论的AVHT、DOT和OTVHT数据库表类似的功能。DAVT 614和DAVT 622被配置为存储在P2P网络内的每个设备处执行的app的应用程序版本号。
在操作1处,app商店602在设备604处安装app 603(具有应用程序版本1)。例如,在设备604处下载app 603的应用程序代码,并且该设备内的ADCM模块执行该应用程序代码以安装app 603。app 603与应用程序ID和应用程序版本号(例如,应用程序版本1)相关联。在设备604处安装app 603导致生成AVHT 608(将应用程序版本号映射到该app所使用的对象类型和对象类型版本号)和OTVHT 612(将对象类型版本号映射到该对象类型以及与该对象类型相关联的数据对象内的数据字段)。
如图6所示,在设备604上执行的app 603使用具有数据字段学生ID和学生姓名的对象类型“学生”以及具有数据字段学校ID和学校名称的对象类型“学校”。在设备604上安装app 603还导致生成对应的DOT,其具有OTVHT 612指定的对象类型的数据对象。例如,图6示出了设备604被配置有“学生”类型的数据对象的DOT 610。更具体而言,DOT 610为“学生”类型的数据对象的数据字段学生ID和学生姓名提供数据。
在示例实施例中,app商店602将app 603安装在与设备604的用户相关联的P2P网络内的一个或更多个附加设备(例如,设备606)处。在设备606上安装app 603导致生成AVHT616(将应用程序版本号映射到该app所使用的对象类型和对象类型版本号)和OTVHT 620(将对象类型版本号映射到该对象类型以及与该对象类型相关联的数据对象内的数据字段)。
如图6所示,在设备606上执行的app 603使用具有数据字段学生ID和学生姓名的对象类型“学生”以及具有数据字段学校ID和学校名称的对象类型“学校”。在设备606上安装app 603还导致生成对应的DOT,其具有OTVHT 620指定的对象类型的数据对象。例如,图6示出了设备606被配置有“学生”类型的数据对象的DOT 618。更具体而言,DOT 618为“学生”类型的数据对象的数据字段学生ID和学生姓名提供数据。
在操作2处,在DOT 610中为“学生”类型的数据对象输入新数据(例如,(01;Tom)和(02;Alex))。在操作3处,DOT 610的更新后的数据字段的通知被传送到设备606。在操作4处,设备606向设备604的ADCM模块传送数据下载请求,该请求包括安装在设备606处的app603的应用程序版本号。在一些方面,ADCM模块利用与数据下载请求一起接收到的在设备606上执行的app的应用程序版本号来更新DAVT表614。
在操作5处,设备604的ADCM模块对照从设备606接收的应用程序版本号检查AVHT608以确定该应用程序版本所使用的对象类型和对象类型版本。然后,ADCM模块使用OTVHT612确定与在设备606上执行的应用程序版本所使用的对象类型中的每一个对象类型相关联的数据字段。ADCM模块还确定在DOT 610的更新后数据字段中的哪些数据字段被设备606处的DOT 618使用,并且向设备606传送由DOT 610中的这些数据字段所存储的数据以用于同步(例如,使用所传送的数据更新DOT 618)。
图7是根据一些实施例的,示出了在图6的P2P通信网络内的app升级的框图700,该app升级包括对用于数据一致性管理的数据库表进行更新。图7还示出了用带圈的数字指示的app数据一致性管理操作6至10。
参考图7,设备604配置有AVHT 702、DOT 704、OTVHT 706和DAVT 708。设备606配置有AVHT 710、DOT 712、OTVHT 714和DAVT 716。在图7中示出的AVHT、DOT和OTVHT数据库表具有与结合图4和图6讨论的AVHT、DOT和OTVHT数据库表类似的功能。DAVT 708和DAVT 716被配置为存储在P2P网络内的每个设备处执行的app的应用程序版本号。
在操作6处,app商店602在设备604和设备606处安装app 605(其是app 603的升级后的应用程序版本2)。app 605与app ID(其与app 603的app ID相同)和应用程序版本号(例如,应用程序版本2)相关联。app 605在设备604上的安装导致对象类型“学生”更新为包括附加数据字段学生年龄,而对象类型“学校”保持不变,没有对其任何数据字段做改变。因此,AVHT 608被更新为AVHT 702以反映由对象类型“学生”使用的更新后的数据字段(例如,对象类型版本2的对象类型“学生”和对象类型版本1的对象类型“学校”被映射用于应用程序版本2)。OTVHT 612被更新为OTVHT 706,OTVHT 706包括新条目,该新条目将对象类型“学生”的对象类型版本2映射到更新后的数据对象的数据字段。
如图7所示,设备606未升级到应用程序版本2且保持在应用程序版本1(执行app603)。因此,AVHT 710和OTVHT 714与AVHT 616和OTVHT 620保持一致。
在操作7处,在设备604处将新数据插入DOT 704中。更具体而言,针对字段学生ID03的数据(例如,数据(03;JOHN;18)),以及针对字段学生年龄(针对学生ID 01和学生ID02)的数据被添加到DOT 704。在操作8处,DOT 704的更新后的数据字段的通知被传送到设备606。在操作9处,设备606向设备604的ADCM模块传送数据下载请求,该请求包括安装在设备606处的app 603的应用程序版本号(例如,应用程序版本1)。
在操作10处,设备604的ADCM模块对照从设备606接收的应用程序版本号核查AVHT702以确定在设备606处的该应用程序版本所使用的对象类型和对象类型版本。由于设备606正在执行该app的先前版本(例如,应用程序版本1),对应于应用程序版本1的对象类型版本1被用于同步。然后,ADCM模块使用OTVHT 706确定与在设备606上执行的应用程序版本所使用的对象类型中的每一个对象类型相关联的数据字段。然后,ADCM模块确定DOT 704的更新后的数据字段中的学生ID数据字段和学生姓名数据字段被设备606处的app 603使用,并且向设备606传送由DOT 704中的这些数据字段存储的数据(即,数据(03;JOHN))以用于同步(例如,使用所传送的数据更新DOT712)。
图8是根据一些示例实施例的,适用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的方法800的流程图。方法800包括操作802、804、806和808。作为示例而非限制,方法800可以由ADCM模块122执行,ADCM模块122被配置为在图1示出的MBaaS架构114中的网络同步服务器116内执行,或者方法800可以由另一ADCM模块执行(例如,如结合图5至图7所讨论的ADCM模块)。
参考图8,在操作802处,由多个计算设备中的第一计算设备从该多个计算设备中的第二计算设备检索应用程序数据。该应用程序数据包括在该第二计算设备上执行的应用程序的应用程序标识(ID)和第一应用程序版本号。在操作804处,该第一计算设备更新第一数据库表(例如,AVHT)。该更新可以使用与该应用程序ID和该第一应用程序版本号相关联的对象类型(也称为对象类型)来执行。对象类型标识应用程序所使用的数据对象的数据库表模式和该数据对象的多个数据字段。
在操作806处,第一计算设备从第三计算设备接收第二应用程序版本号。在一些实施例中,第二应用程序版本号是响应于由第一计算设备向多个计算设备中的第三计算设备传送数据对象的多个数据字段中的更新后的数据字段的通知而接收的。例如,第二应用程序版本号与在第三计算设备上执行的应用程序相关联并且作为响应于该通知的数据下载请求的一部分而被接收。在操作808处,更新后的数据字段中的一个或更多个数据字段由第一计算设备进行选择以用于同步。在一些实施例中,该一个或更多个数据字段基于第二应用程序版本号来选择。由更新后的数据字段中的该一个或更多个数据字段存储的数据由第一计算设备向第三计算设备传送以用于同步。
图9是根据一些示例实施例的,示出了可以与本文所描述的各设备硬件结合使用的代表性软件架构900的框图。图9仅是软件架构902的非限制性示例,并且应理解的是,可以实现许多其他架构以促进本文所描述的功能。软件架构902可以正在硬件上执行,该硬件诸如图10中的计算设备1000,除别的以外,其包括处理器1005,存储器1010,存储1015和1020,以及I/O接口1025和1030。代表性硬件层904被示出并且可以表示,例如图10中的计算设备1000。代表性硬件层904包括具有相关联的可执行指令908的一个或更多个处理单元906。可执行指令908代表软件架构902的可执行指令,包括图1至图8中的方法、模块等的实现。硬件层904也包括存储器和/或存储模块910,其也具有可执行指令908。硬件层904也可以包括其他硬件912,其代表硬件层904的任何其他硬件,诸如作为计算设备1000的一部分示出的其他硬件。
在图9中的示例架构中,软件架构902可以被概念化为层的堆栈,其中每一层提供特定的功能。例如,软件架构902可以包括诸如操作系统914、库916、框架/中间件918、应用程序920和表示层944的各层。在操作上,应用程序920和/或各层内的其他组件可以通过软件堆栈调用应用编程接口(API)调用924,并且响应于API调用924接收被示为消息926的响应、返回值等。图9所示的各层本质上具有代表性,并且并非所有软件架构902都具有所有层。例如,一些移动操作系统或专用操作系统可以不提供框架/中间件918,而其他操作系统可以提供这样的层。其他软件架构可以包括附加的或不同的层。
操作系统914可以管理硬件资源并提供公共服务。操作系统914可以包括例如内核928、服务930、驱动程序932以及ADCM模块960。内核928可以作为硬件与其他软件层之间的抽象层。例如,内核928可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络、安全设置等。服务930可以为其他软件层提供其他公共服务。驱动程序932可以负责控制底层硬件或与底层硬件接口。例如,驱动程序932可以包括显示器驱动程序、摄像头驱动程序、驱动程序、闪存驱动程序、串行通信驱动程序(例如,通用串行总线(USB)驱动程序)、驱动程序、音频驱动程序、电源管理驱动程序等等,这取决于硬件配置。
在一些方面,ADCM模块960可以与结合图1至图8讨论的ADCM模块中的任意一个ADCM模块相同(并且与结合图1至图8讨论的ADCM模块中的任意一个ADCM模块执行相同的功能),诸如ADCM模块122,其包括应用程序版本历史表124、对象类型版本历史表126和数据对象表128、...、130。
库916可以提供可由应用程序920和/或其他组件和/或层利用的公共基础设施。与直接与底层操作系统914功能(例如,内核928、服务930、驱动程序932和/或ADCM模块960)接口相比,库916提供的功能通常允许其他软件模块更容易地执行任务。库916可以包括可以提供诸如存储器分配函数、字符串操作函数、数学函数等的函数的系统库934(例如,C标准库)。此外,库916可以包括API库936,诸如媒体库(例如,用于支持诸如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等各种媒体格式的呈现和操作的库)、图形库(例如,可以用于在显示器上的图形内容中渲染2D和3D的OpenGL框架)、数据库的库(database library)(例如,可以提供各种关系数据库函数的SQLite)、网页库(例如,可以提供网页浏览功能的WebKit)等。库916也可以包括各种其他库938以向应用920和其他软件组件/模块提供许多其他API。
框架/中间件918(有时也称为中间件)可以提供可由应用程序920和/或其他软件组件/模块利用的更高级别的公共基础设施。例如,框架/中间件918可以提供各种图形用户界面(GUI)功能、高级资源管理、高级定位服务等。框架/中间件918可以提供可由应用920和/或其他软件组件/模块利用的范围广泛的其他API,其中的一些可以特定于特定操作系统914或平台。
应用程序920包括内置应用程序940和/或第三方应用程序942。代表性的内置应用程序940的示例可以包括但不限于联系人应用程序、浏览器应用程序、图书阅读器应用程序、位置应用程序、媒体应用程序、消息传送应用程序和/或游戏应用程序。第三方应用程序942可以包括任何内置应用程序940以及各种各样的其他应用程序。在特定示例中,第三方应用程序942(例如,由特定平台的供应商以外的实体使用AndroidTM或iOSTM软件开发套件(SDK)开发的应用程序)可以是在移动操作系统(诸如iOSTM、AndroidTM、Phone或者其他移动操作系统)上运行的移动软件。在该示例中,第三方应用程序942可以调用由诸如操作系统914的移动操作系统提供的API调用924以促进本文描述的功能。
应用程序920可以利用内置操作系统功能(例如,内核928、服务930、驱动程序932和/或ADCM模块960)、库(例如,系统库934、API库936和其他库938)以及框架/中间件918来创建用户接口以与系统的用户进行交互。替代地或附加地,在一些系统中,与用户的交互可以通过表示层(诸如表示层944)发生。在这些系统中,应用程序/模块“逻辑”可以与应用程序/模块的与用户交互的方面分离。
一些软件架构利用虚拟机。在图9的示例中,这由虚拟机948说明。虚拟机创建软件环境,其中应用程序/模块可以像正在硬件机器(诸如例如图10的计算设备1000)上执行那样执行。虚拟机948由主机操作系统(图9中的操作系统914)托管,并且通常但不总是具有虚拟机监视器946,其管理虚拟机948的操作以及与主机操作系统(即,操作系统914)的接口。软件架构902在虚拟机948内执行,诸如操作系统950、库952、框架/中间件954、应用程序956和/或表示层958。在虚拟机948内执行的软件架构的这些层可以与先前描述的对应层相同或可以不同。
图10是根据一些示例实施例的,示出了实现算法以及执行方法的设备的电路的框图。在各实施例中不需要使用全部组件。例如,客户端、服务器和基于云的网络设备可以各自使用一组不同的组件,或者在服务器的情况下,使用更大的存储设备。
计算机1000(也称为计算设备1000、计算机系统1000或计算机1000)形式的一个示例计算设备可以包括处理器1005、存储器1010、可移除存储1015、非可移除存储1020、输入接口1025、输出接口1030和通信接口1035,这些全部由总线1040连接。尽管示例计算设备被图示和描述为计算机1000,但是计算设备在不同实施例中仍可以是不同的形式。
存储器1010可以包括易失性存储器1045和非易失性存储器1050并且可以存储程序1055。计算机1000可以包括各种计算机可读介质,或者可以访问包括各种计算机可读存储介质的计算环境,上述各种计算机可读介质诸如易失性存储器1045、非易失性存储器1050、可移除存储1015和非可移除存储1020。计算机存储包括随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)或电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、光盘只读存储器(CD ROM)、数字通用光盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者任何其他能够存储计算机可读指令的介质。
存储在计算机可读介质上的计算机可读指令(例如,存储在存储器1010中的程序1055)可由计算机1000的处理器1005执行。硬盘驱动器、CD-ROM和RAM是包括诸如存储设备的非暂态计算机可读介质的制品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,这是因为载波被认为过于短暂。“计算机可读的非暂态介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应该理解的是,软件可以安装在计算机中并与计算机一起销售。或者,软件可以被获取并加载到计算机中,包括通过物理介质或分配系统(包括例如从软件创建者拥有的服务器或者从软件创建者不拥有但使用的服务器)获取软件。例如,软件可以存储在服务器上以通过英特网分发。如本文所使用的,术语“计算机可读介质”和“机器可读介质”是可互换的。
程序1055可以利用本文所讨论的一个或更多个模块,诸如ADCM模块1060。在一些方面,ADCM模块1060可以与结合图1至图8讨论的ADCM模块中的任意一个ADCM模块相同(并且执行相同的功能),诸如ADCM模块122,其包括应用程序版本历史表124、对象类型版本历史表126和数据对象表128、...、130。
在示例实施例中,计算机1000包括用于从多个计算设备中的计算设备检索应用程序数据的装置,应用程序数据包括在该计算设备上执行的应用程序的应用程序标识(ID)和第一应用程序版本号。计算机1000还包括用于使用与应用程序ID和第一应用程序版本号相关联的对象类型信息对第一数据库表进行更新的装置,对象类型信息标识由该应用程序使用的数据对象的数据库表模式和数据对象的多个数据字段。计算机1000还包括用于使用从第二计算设备接收的多个数据字段的同步数据对数据对象进行同步以生成同步后的数据对象的装置。计算机1000还包括用于响应于向第二计算设备传送的同步后的数据对象的通知,从第二计算设备接收第二应用程序版本号的装置,该第二应用程序版本号与在第二计算设备上执行的应用程序相关联。计算机1000还包括用于基于第二应用程序版本号选择同步后的数据对象的多个数据字段中的一个或更多个数据字段的装置,以及用于向第三计算设备传送由多个数据字段中的该一个或更多个数据字段存储的数据以用于同步的装置。在一些实施例中,计算机1000可以包括用于执行实施例中所描述的步骤中的任意一个步骤或者步骤组合的其他或附加模块。此外,如附图中的任一幅所示出的或者在权利要求中的任一条所记载的,该方法的附加或替代实施例或方面中的任一个也被设想为包括类似模块。
本文所描述的模块中的任意一个或更多个都可以使用硬件(例如,机器的处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或其任何合适的组合)来实现。此外,这些模块中的任何两个或更多个可以组合成单个模块,并且本文针对单个模块所描述的功能可以在多个模块中细分。此外,根据各示例实施例,在本文中被描述为在单个机器、数据库或设备内实现的模块可以跨多个机器、数据库或设备分布。
尽管上面已经详细描述了一些实施例,但也可以进行其他修改。例如,附图中所描绘的逻辑流程不需要所示的特定次序或顺序次序来实现期望的结果。可以从所描述的流程中提供其他步骤,或者可以从所描述的流程中消除步骤,并且其他组件可以被添加到所描述的系统中,或者从所描述的系统中移除。其他实施例可以在以下权利要求的范围内。
还应理解的是,包括有助于上述与本公开的任何一个或所有步骤有关的处理和操作的一个或更多个计算机可执行指令的软件可以安装在符合本公开的一个或更多个计算设备中并与之一起销售。替代地,软件可以被获取并加载到一个或更多个计算设备中,包括通过物理介质或分发系统(包括例如从软件创建者拥有的服务器或者从软件创建者不拥有但使用的服务器)获取软件。例如,软件可以被存储在服务器上以通过英特网分发。
此外,本领域技术人员将理解,本公开的应用不限于说明书中概述或附图中示出的组件的结构和布置的细节。本文中的实施例能够具有其他实施例并且能够以各种方式实施或执行。此外,应当理解,本文所使用的措辞和术语是为了说明并且不应被视为是限制性的。本文中使用的“包括”、“包含”或“具有”及其变体意在涵盖其后列出的项及其等同物以及附加项。除非另有限制,否则本文中的术语“连接”、“耦合”和“安装”及其变体是广义上使用的并且涵盖直接和间接的连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理的或机械的连接或耦合。此外,诸如向上、向下、底部和顶部等的术语是相对的并且被用于辅助说明,但不是限制性的。
根据所示实施例,采用的说明性设备、系统和方法的组件可以至少部分地在数字电子电路、模拟电子电路或计算机硬件、固件、软件,或它们的组合中实现。这些组件例如可以实现为计算机程序产品,诸如有形地包含在信息载体或机器可读存储设备中的计算机程序、程序代码或计算机指令,以供诸如可编程处理器、一台计算机或者多台计算机的数据处理装置执行,或者控制该数据处理装置的操作。
计算机程序可以以包括编译语言或解释语言的任何形式的编程语言编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或者适合在计算环境中使用的另一单元而部署。可以部署计算机程序以在一个站点处的一台计算机或多台计算机上执行该计算机程序,或者跨多个站点分布并通过通信网络互连。此外,用于完成本文所述技术的功能程序、代码和代码段可以由本文所述技术所属领域的技术人员容易地解释为在权利要求的范围内。与说明性实施例相关联的方法步骤可以由执行计算机程序、代码或指令的一个或更多个可编程处理器执行以(例如,通过对输入数据进行操作和/或生成输出)执行功能。方法步骤也可以由专用逻辑电路执行,并且用于执行方法的装置可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。
结合本文所公开的实施例描述的各说明性逻辑块、模块和电路可以用通用处理器、数字信号处理器(DSP)、ASIC、FPGA或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件,或者设计为执行本文所描述的功能的以上器件的任意组合实现或执行。通用处理器可以是微处理器,但可替代地,处理器也可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或更多个微处理器结合DSP核,或者任何其他此类配置。
适用于执行计算机程序的处理器包括,例如,通用微处理器和专用微处理器,以及任何类型的数字计算机的任意一个或更多个处理器。通常,处理器将从只读存储器或随机存取存储器或者这两者接收指令和数据。计算机所需的元件是用于执行指令的处理器以及用于存储指令和数据的一个或更多个存储器设备。通常,计算机还将包括一个或更多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者计算机还将可操作地耦合以从该一个或更多个大容量存储设备接收数据或向其传输数据。适用于体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括,例如,半导体存储器设备,例如电可编程只读存储器或ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存设备和数据存储盘(例如,磁盘、内部硬盘、可移动盘、磁光盘、CD-ROM盘或DVD-ROM盘)。处理器和存储器可以由专用逻辑电路补充或合并在专用逻辑电路中。
本领域技术人员理解可以使用各种不同技术和技艺中的任一种来表示信息和信号。例如,在整个以上描述中可能引用的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或者其任意组合来表示。
如本文所使用的,“机器可读介质”(或“计算机可读介质”)是指能够暂时或永久地存储指令和数据的设备,并且可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪存、光介质、磁介质、高速缓冲存储器、其他类型的存储(例如,可擦除可编程只读存储器(EEPROM))和/或其任意合适的组合。术语“机器可读介质”应该被理解为包括能够存储处理器指令的单个介质或者多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”也应被理解为包括能够存储指令以供一个或更多个处理器1005执行的任何介质(或者多介质的组合),使得指令在由一个或更多个处理器1005执行时致使一个或更多个处理器1005执行本文所描述的方法中的一种或更多种。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。本文所使用的术语“机器可读介质”不包括信号本身。
此外,在不背离本公开的范围的情况下,在各个实施例中描述和图示为离散或分离的技术、系统、子系统和方法可以与其他系统、模块、技术或方法组合或集成。示出或讨论为彼此耦合或彼此直接耦合或彼此通信的其他项可以无论是电的、机械的还是其他方式通过一些接口、设备或中间组件间接耦合或通信。改变、替换和变更的其他示例是可以由本领域技术人员确定的,并且可以在不脱离本文所公开的范围的情况下进行。
尽管已经就本公开的具体特征和实施例描述了本公开,但显然可以在不脱离本公开范围的情况下对其进行各种修改和组合。例如,其他组件可以被添加到所述系统中或从所述系统中移除。因此,说明书和附图被简单地视为如所附权利要求定义的本公开的说明,并且预期涵盖落入本公开范围内的任何修改、变化、组合或等同物。其他方面可以在以下权利要求的范围内。
Claims (30)
1.一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的由计算机实现的方法,所述方法包括:
由所述多个计算设备中的第一计算设备从所述多个计算设备中的第二计算设备检索应用程序数据,所述应用程序数据包括驻留在所述第二计算设备上的应用程序的应用程序标识(ID)和第一应用程序版本号;
由所述第一计算设备使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新,所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段;以及
响应于由所述第一计算设备向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知:
由所述第一计算设备从所述第三计算设备接收第二应用程序版本号,所述第二应用程序版本号与驻留在所述第三计算设备上的所述应用程序相关联;
由所述第一计算设备基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段;以及
由所述第一计算设备向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
2.根据权利要求1所述的由计算机实现的方法,还包括:
在更新所述第一数据库表之前,由所述第一计算设备执行应用程序代码以在所述第一计算设备处安装具有所述第一应用程序版本号的所述应用程序。
3.根据权利要求1所述的由计算机实现的方法,其中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
4.根据权利要求3所述的由计算机实现的方法,还包括:
由所述第一计算设备基于所述对象类型更新第二数据库表,所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
5.根据权利要求4所述的由计算机实现的方法,还包括:
由所述第一计算设备确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号,所述确定使用所述第一数据库表。
6.根据权利要求5所述的由计算机实现的方法,还包括:
由所述第一计算设备确定所述更新后的数据字段中的所述一个或更多个数据字段,所述确定使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表。
7.根据权利要求1至6中任一项所述的由计算机实现的方法,还包括:
由所述第一计算设备向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的所述数据,所述传送响应于来自所述第三计算设备的数据下载请求,所述数据下载请求包括所述第二应用程序版本号。
8.根据权利要求1所述的由计算机实现的方法,其中,所述应用程序数据包括用户信息,所述用户信息标识被授权在所述第二计算设备上使用所述应用程序的用户。
9.根据权利要求8所述的由计算机实现的方法,还包括:
由所述第一计算设备执行所述用户是否被授权使用所述第三计算设备上的所述应用程序的验证。
10.根据权利要求9所述的由计算机实现的方法,还包括:
由所述第一计算设备向所述第三计算设备传送所述更新后的数据字段中的所述一个或更多个数据字段存储的数据,所述传送是在所述验证成功时进行的;以及
由所述第一计算设备在所述验证不成功时生成通知。
11.一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的系统,所述系统包括:
存储指令的存储器;以及
与所述存储器通信的所述多个计算设备中的第一计算设备的一个或更多个处理器,其中所述一个或更多个处理器执行所述指令以进行以下操作:
从所述多个计算设备中的第二计算设备检索应用程序数据,所述应用程序数据包括驻留在所述第二计算设备上的应用程序的应用程序标识(ID)和第一应用程序版本号;
使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新,所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段;以及
响应于向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知:
从所述第三计算设备接收第二应用程序版本号,所述第二应用程序版本号与驻留在所述第三计算设备上的所述应用程序相关联;
基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段;以及
向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
12.根据权利要求11所述的系统,其中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
13.根据权利要求12所述的系统,其中,所述一个或更多个处理器执行所述指令以进行以下操作:
基于所述对象类型更新第二数据库表,所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
14.根据权利要求13所述的系统,其中,所述一个或更多个处理器执行所述指令以进行以下操作:
确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号,所述确定使用所述第一数据库表。
15.根据权利要求14所述的系统,其中,所述一个或更多个处理器执行所述指令以进行以下操作:
确定所述更新后的数据字段中的所述一个或更多个数据字段,所述确定使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表。
16.根据权利要求11至15中任一项所述的系统,其中,所述一个或更多个处理器执行所述指令以进行以下操作:
向所述第三计算设备传送由所述一个或更多个数据字段存储的所述数据,所述传送响应于来自所述第三计算设备的数据下载请求,所述数据下载请求包括所述第二应用程序版本号。
17.一种存储用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的计算机指令的计算机可读介质,其中,所述指令在由所述多个计算设备中的第一计算设备的一个或更多个处理器执行时,使所述一个或更多个处理器执行的操作包括:
从所述多个计算设备中的第二计算设备检索应用程序数据,所述应用程序数据包括驻留在所述第二计算设备上的应用程序的应用程序标识(ID)和第一应用程序版本号;
使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新,所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段;以及
响应于向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知:
从所述第三计算设备接收第二应用程序版本号,所述第二应用程序版本号与驻留在所述第三计算设备上的所述应用程序相关联;
基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段;以及
向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步。
18.根据权利要求17所述的计算机可读介质,其中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
19.根据权利要求18所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
基于所述对象类型更新第二数据库表,所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
20.根据权利要求19所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号,所述确定使用所述第一数据库表。
21.根据权利要求20所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
确定所述更新后的数据字段中的所述一个或更多个数据字段,所述确定使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表。
22.根据权利要求17至21中任一项所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的所述数据,所述传送响应于来自所述第三计算设备的数据下载请求,所述数据下载请求包括所述第二应用程序版本号。
23.根据权利要求17所述的计算机可读介质,其中,所述应用程序数据包括用户信息,所述用户信息标识被授权在所述第二计算设备上使用所述应用程序的用户。
24.根据权利要求23所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
执行所述用户是否被授权使用所述第三计算设备上的所述应用程序的验证。
25.根据权利要求24所述的计算机可读介质,其中,所述指令还使所述一个或更多个处理器进行以下操作:
向所述第三计算设备传送所述更新后的数据字段中的所述一个或更多个数据字段存储的所述数据,所述传送是在所述验证成功时进行的;以及
在所述验证不成功时生成通知。
26.一种用于执行通信网络内的多个计算设备之间的应用程序数据一致性管理的系统,所述系统包括:
用于从所述多个计算设备中的第二计算设备检索应用程序数据的装置,所述应用程序数据包括驻留在所述第二计算设备上的应用程序的应用程序标识(ID)和第一应用程序版本号;
用于使用与所述应用程序ID和所述第一应用程序版本号相关联的对象类型对第一数据库表进行更新的装置,所述对象类型标识所述应用程序使用的数据对象的数据库表模式和所述数据对象的多个数据字段;
用于响应于向所述多个计算设备中的第三计算设备传送所述数据对象的多个数据字段中的更新后的数据字段的通知从所述多个计算设备中的第三计算设备接收第二应用程序版本号的装置,所述第二应用程序版本号与驻留在所述第三计算设备上的所述应用程序相关联;
用于基于所述第二应用程序版本号选择所述更新后的数据字段中的一个或更多个数据字段的装置;以及
用于向所述第三计算设备传送由所述更新后的数据字段中的所述一个或更多个数据字段存储的数据以用于同步的装置。
27.根据权利要求26所述的系统,其中,所述第一数据库表是将所述第一应用程序版本号映射到所述对象类型和对象类型版本号的应用程序版本历史表。
28.根据权利要求27所述的系统,还包括:
用于基于所述对象类型更新第二数据库表的装置,所述第二数据库表将所述对象类型版本号映射到所述对象类型和所述数据对象的多个数据字段。
29.根据权利要求28所述的系统,还包括:
用于确定驻留在所述第三计算设备上的所述应用程序使用的对象类型版本号的装置,所述确定使用所述第一数据库表。
30.根据权利要求29所述的系统,还包括:
用于确定所述更新后的数据字段中的所述一个或更多个数据字段的装置,所述确定使用由驻留在所述第三计算设备上的所述应用程序使用的所述对象类型版本号并且使用所述第二数据库表。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/070013 WO2021062427A1 (en) | 2020-04-30 | 2020-04-30 | Multi-schema version support in data synchronization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115443458A true CN115443458A (zh) | 2022-12-06 |
Family
ID=70779993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080100157.5A Pending CN115443458A (zh) | 2020-04-30 | 2020-04-30 | 数据同步中的多模式版本支持 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11995049B2 (zh) |
CN (1) | CN115443458A (zh) |
WO (1) | WO2021062427A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021062427A1 (en) | 2020-04-30 | 2021-04-01 | Futurewei Technologies, Inc. | Multi-schema version support in data synchronization |
CN115481101A (zh) * | 2021-05-31 | 2022-12-16 | 华为技术有限公司 | 数据传输方法、电子设备及计算机可读存储介质 |
WO2023230642A1 (en) * | 2022-05-31 | 2023-12-07 | Technological Resources Pty Limited | Ensuring backwards compatbility between a supervisory system and on-device control software |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8204870B2 (en) * | 2007-08-03 | 2012-06-19 | Sybase, Inc. | Unwired enterprise platform |
US8769526B2 (en) * | 2012-06-19 | 2014-07-01 | Google Inc. | Automatic application updates |
US20140282477A1 (en) * | 2013-03-15 | 2014-09-18 | 7Layer Technologies | Automatic updating of data in application programs |
US11340893B2 (en) * | 2015-12-31 | 2022-05-24 | Kony, Inc. | Mobile application update preserving changes to the application made by a client |
WO2021062427A1 (en) | 2020-04-30 | 2021-04-01 | Futurewei Technologies, Inc. | Multi-schema version support in data synchronization |
-
2020
- 2020-04-30 WO PCT/US2020/070013 patent/WO2021062427A1/en active Application Filing
- 2020-04-30 CN CN202080100157.5A patent/CN115443458A/zh active Pending
-
2022
- 2022-10-31 US US18/051,287 patent/US11995049B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230082267A1 (en) | 2023-03-16 |
WO2021062427A1 (en) | 2021-04-01 |
US11995049B2 (en) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593094B2 (en) | Application management within deployable object hierarchy | |
US11740891B2 (en) | Providing access to a hybrid application offline | |
US11995049B2 (en) | Multi-schema version support in data synchronization | |
US11340893B2 (en) | Mobile application update preserving changes to the application made by a client | |
US10069940B2 (en) | Deployment meta-data based applicability targetting | |
CN110832458B (zh) | 个性化机器学习模型的隐身模式 | |
US20170192764A1 (en) | Automated application installation | |
WO2021055016A1 (en) | Detection and resolution of data synchronization conflicts | |
US20210049048A1 (en) | Inter device transfer of resources for executing application updates cycles | |
US11755309B2 (en) | Tagging packages in an application ecosystem | |
WO2022272149A1 (en) | Operations productivity software system, server and method | |
WO2016011084A1 (en) | Methods and apparatus for building and deploying mobile device applications | |
CN112306516A (zh) | 用于更新代码的方法和装置 | |
CN114647828A (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 |