CN103140850B - 移动设备上的数据共享 - Google Patents

移动设备上的数据共享 Download PDF

Info

Publication number
CN103140850B
CN103140850B CN201180039435.1A CN201180039435A CN103140850B CN 103140850 B CN103140850 B CN 103140850B CN 201180039435 A CN201180039435 A CN 201180039435A CN 103140850 B CN103140850 B CN 103140850B
Authority
CN
China
Prior art keywords
data
node
user
subregion
central server
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.)
Active
Application number
CN201180039435.1A
Other languages
English (en)
Other versions
CN103140850A (zh
Inventor
托马斯·斯蒂芬·斯里
詹姆斯·戴维·格雷汉姆
亚当·赫斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
iAnywhere Solutions Inc
Original Assignee
iAnywhere Solutions Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by iAnywhere Solutions Inc filed Critical iAnywhere Solutions Inc
Publication of CN103140850A publication Critical patent/CN103140850A/zh
Application granted granted Critical
Publication of CN103140850B publication Critical patent/CN103140850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于复制多个节点上的关系数据的***、方法和制品。一个实施例包括:从节点接收更新请求消息,其中所述更新请求消息包括节点识别和应用程序识别;基于所述应用程序识别来访问应用程序模式;基于所述节点识别来识别位于应用程序模式中的分区;访问服务器模式;基于所述应用程序识别来识别位于服务器模式中的第二分区;确定存储在用于变化与第一分区相关的数据的第二分区中的至少一个数据变化;从第二分区中检索至少一个数据变化;格式化更新响应消息中的数据变化;以及,将所述更新响应消息发送至所述节点。

Description

移动设备上的数据共享
技术领域
本发明一般涉及移动通信技术,以及更加具体地涉及多个移动设备之间的数据复制。
背景技术
移动设备上的应用程序是桌面和基于网络的工具的自然延伸。人们利用移动设备来通信、发送电子邮件以及在例如Flicker、Facebook、Twitter等的流行网站上进行网上冲浪。因为例如智能手机的移动设备变得很普遍,因此其对于例如数据共享的桌面功能的使用也变得普通。通过将移动设备连接至通信网络,可以下载或访问为数据共享而设计的多种应用程序。
存在多种用于在移动设备间分布和复制数据的常规技术。例如,可以经由中心服务器复制数据。典型地,中心服务器可操作以用于群集特定数据库应用程序。多种移动设备经由通信网络连接至中心服务器,并允许用户利用基于网络的接口来递送数据并浏览由其他用户递送的数据。将用户连接至中心服务器是有优势的,这是因为,例如,所有用户将数据递送至中心服务器,所以容易共享数据。另外,仅需将对应用程序或应用程序数据库的任何变化或更新配置在中心服务器上。
然而,上述的***具有缺点,特别是当通过无线网络由移动设备使用该***时。例如,当经由通信网络连接至应用程序时,用户可能产生数据通信收费。此外,高延迟无线网络可能导致消极的用户体验。因此,需要可靠和快速网络的应用程序变得无法使用。此外,移动设备上缺少数据存储意味着所有数据必须存储在中心服务器上,这使得用户难于快速操作数据。另一个负面效应是移动设备上的电池寿命降低。最终,当用户的移动设备离线并且无法访问通信网络时,他们将不能共享数据。
其他常规***允许用户在他们的移动设备上本地存储数据。按照惯例,那些***在移动设备上存储数据并将数据递送至中心服务器,以用于与其他用户共享。当用户在他们的移动设备上进行数据变化时,该数据变化被上传或递送至中心服务器。通过明确请求来自中心服务器的数据或者通过使用户的移动设备上的数据库应用程序能够随时请求来自中心服务器的由数据库应用程序开发人员预先确定的数据,用户共享由其他用户递送至中心服务器的数据。
在移动设备上本地存储数据是有优势的。当移动设备离线时,用户能够操作数据。此外,与应用程序数据的用户交互是快速且有效的。
然而,本地存储在移动设备上的数据难于以一致的方式被复制。另外,当应用程序开发人员修改或更新数据库应用程序时,该更新必须被无缝地展示给(roll out to)所有移动设备。例如,如果展示不是无缝的,那么移动设备会在手机会话中间重启,由此导致消极的用户体验。此外,用户会在他们的移动设备上经历繁忙间隔,例如,如果正在从网络服务器上下载更新,他们的移动设备会死机(frozen)。
因此,所需要的是允许移动用户以快速和有效的方式共享数据的***和方法。所需要的还有不会使用户因频繁的数据上传和下载而产生网络收费的***和方法。进一步需要的是能够将多个数据库应用程序结合到网络技术中的***和方法,该网络技术是可操作的从而提供一种用于瞬时和透明的配置以及快速更新的机制。所需要的还有可操作以用于在一个服务器上群集多个数据库应用程序的中心服务器***。最后,所需要的是提供了一种调度机制的***和方法,在该机制中,移动设备是可操作的从而基于由其他移动设备递送至中心服务器的数据量而请求数据更新。
发明内容
本发明的实施例包括一种用于从中心服务器***检索数据的方法,包括:从节点接收更新请求消息,其中,所述更新请求消息包括节点识别和应用程序识别,并且其中,所述节点包括计算装置、因特网浏览器以及数据库,以及其中,所述应用程序识别用于识别数据库应用程序;基于所述应用程序识别,访问中心数据库服务器中的应用程序模式;基于所述节点识别,确定所述应用程序模式的分区;确定用于描述对所述数据库应用程序进行的数据变化的一组操作;从中心数据库服务器中的用于变化所述分区中数据的所述一组操作中,检索至少一个操作;在更新响应消息中格式化所述至少一个操作并且将所述更新响应消息传送至所述节点。
本发明的实施例还包括一种包括具有存储在其上的计算机可执行指令的计算机可读存储介质的制品,通过一个或多个计算装置执行该指令会促使计算装置执行以下操作:接收来自节点的更新请求消息,其中,所述更新请求消息包括节点识别和应用程序识别,并且其中,所述节点包括计算装置、因特网浏览器以及数据库,以及其中,所述应用程序识别用于识别数据库应用程序;基于所述应用程序识别,访问中心数据库服务器中的应用程序模式;基于所述节点识别,确定应用程序模式的分区;确定用于描述对数据库应用程序进行的数据变化的一组操作;从中心数据库服务器中用于改变分区中数据的所述一组操作中,检索至少一个操作;在更新响应消息中格式化所述至少一个操作;以及,将所述更新响应消息传送至所述节点。
本发明的实施例进一步包括一种用于复制数据的***,其包括:接收器,其被配置成从节点接收更新请求消息,其中,该更新请求消息包括节点识别和应用程序识别,其中,该节点包括计算装置、因特网浏览器以及数据库,以及其中,该应用程序识别用于识别数据库应用程序;存储器,其被配置成存储应用程序模式和用于描述对数据库应用程序进行的数据变化的一组操作;处理器,其被配置成基于该节点识别而确定应用程序模式的分区,该处理器进一步被配置成确定与该分区相关的至少一个操作并检索该至少一个操作;以及发射器,其被配置成将该至少一个操作发送至该节点。
下面将参考附图详细描述本发明的其它特征和优点以及本发明各种实施例的结构和操作。应注意的是,本发明不限于在此描述的特定实施例。在此显示的这些实施例仅用于阐释目的。基于包含在此的教导,其它的实施例对于相关领域的技术人员来说是显而易见的。
附图说明
并入于此并形成说明书一部分的附图与说明书一起阐释了本发明的实施例,且进一步用于阐释本发明的原理并使相关领域的技术人员能够实施和使用本发明。
图1是根据本发明的实施例的、用于在节点间复制数据的示例操作环境100。
图2A是根据本发明的实施例的服务器应用程序模式的示例性实施例。
图2B是根据本发明的实施例的、用于数据库中数据分区的算法的示例性实施例201。
图2C是根据本发明的实施例的、简化的应用程序数据库模式的示例性实施例200C。
图2D是根据本发明的实施例的、简化的应用程序数据库模式的另一个示例性实施例200D。
图3A是阐释了多个步骤的示例性实施例300A的流程图,通过这些步骤,可通过从中心服务器***下载应用程序模式来操作节点,从而创建应用程序数据库。
图3B是阐释了多个步骤的示例性实施例300B的流程图,通过该步骤,可操作中心服务器***来确定以更新响应消息发送至节点的数据。
图4是示例性实施例400的流程图,其阐释了为特定用户确定分区的步骤。
图5是示例性实施例500的流程图,其阐释了用于确定被递送至分区的数据变化的步骤。
图6是示例性实施例600的流程图,其阐释了利用来自中心服务器***的数据来更新节点的步骤。
图7是计算机***的示例性操作环境700,可以在该计算机***中实施本发明的实施例。
现在参考附图描述本发明。在附图中,通常,相同的参考数字表示等同或功能类似的元件。另外,通常,参考数字最左侧的数字代表该参考数字首次出现的附图。
具体实施方式
1.介绍
本发明的下述详细说明涉及阐释了与本发明一致的示例性实施例的附图。在本发明的精神和范围内可存在其他实施例并且可以对这些实施例进行修改。因此,这些详细的说明并不用于限制本发明。此外,本发明的范围是由随附权利要求限定的。
对于本领域技术人员来说显而易见的是,如下描述的本发明能够以软件、硬件、固件和/或在附图中阐释的实体的多种不同实施例实施。任何具有特定的硬件控制的、用于实施本发明的实际软件编码都不构成对本发明的限制。因此,基于在此给出的细节程度,在理解了能够对各实施例进行修改和变型的情况下描述本发明的操作性能。
本发明涉及用于在移动设备间复制关系数据的***、方法以及计算机程序产品。在一个实施例中,移动设备可以具有一个或多个节点。如在此使用的,在一个实施例中,节点是移动设备的计算组件,并且是可操作的从而在移动设备上群集多个应用程序以及本地存储关系数据。当用户将数据提交至节点时,该节点将该数据递送至中心服务器。当每个节点请求数据时,通过调度时间,中心服务器***将关系数据分配至多个节点。基于多个用户递送数据至中心服务器***的频率来调度时间。
图1是根据本发明实施例的用于在移动设备或节点之间复制数据的示例性操作环境100。操作环境100包括中心服务器110、多个节点130、多个用户170以及通信网络160。每个移动设备典型地包括一个节点130,但是也可以包括多于一个的节点130。中心服务器110是可操作的从而经由通信网络160与节点130通信。
中心服务器***110群集中心关系数据库管理***(“RDBMS”)120,例如,但是不限于SQLAnywhere。在一个实施例中,RDBMS120群集至少一个中心数据库122。中心数据库122包括关系数据库数据表。通过唯一主键以及外部键来连接关系数据库的各数据表。在阐释性实施例中,中心数据库122的模式在图2A中示出。
在一个实施例中,中心数据库122包括存储在其数据表中的多个应用程序数据集合124。每个应用程序数据集合124对应于在多个节点130上可操作的数据应用程序156。应用程序数据集合124是存储在多个节点130上的用于特定应用程序156的所有数据的并集(union)。应用程序数据集合124包括应用程序模式125和通过多个节点130而递送至中心数据库122的操作126的结构化历史记录。
在一个实施例中,应用程序模式125定义节点数据库152中的数据表和各数据表之间的关系。节点数据库152位于节点130上并且包括用于特定应用程序156的数据集合。在使用数据库应用程序156之前,节点130可操作以用于从中心服务器***110下载应用程序模式125。在一个实施例中,节点130使用下载的应用程序模式125来定义本地RDBMS150中的节点数据库152。
在一个实施例中,应用程序数据集合124包括操作126的结构化历史记录。操作126的结构化历史记录包括所有操作,例如但不限于,通过多个节点130递送至中心服务器***110的ADD、DELETE和UPDATE操作。
如之前所述的,中心数据库122是可操作的从而群集用于具有不同的应用程序模式124的多个数据库应用程序156的数据。本领域技术人员将理解,中心数据库122的设计允许存储每个数据库应用程序156的数据而不需要针对每个数据库应用程序156进行任何软件编码或配置。类似地,中心服务器***110是可操作的从而将用于特定数据库应用程序156的数据分配至多个节点130,而不需要使用针对每个数据库应用程序156的任何软件编码或配置。
在一个实施例中,中心服务器***110使用JSON或者“JavaScript对象表示”文档128与节点130进行信息通信。JSON文档128是数据的文本表示,例如,其可以包括数据变化的文本表示和从中心服务器***110下载至多个节点130的应用程序模式125。
中心服务器***110经由通信网络160与多个节点130通信。在一个实施例中,通信网络160可以是例如有线和/或无线通信网络。通信网络160是可操作的从而从多个节点130和中心服务器***110群集和下载消息。
仅为示例性而非限制性的,移动或计算设备可以包括,例如加拿大安大略省滑铁卢的移动研究公司(RESEARCH IN MOTION)的黑莓或者加利福尼亚州库比蒂诺的苹果公司的苹果手机。相关领域的技术人员会理解,在此描述的可应用至节点的技术通常还用于非移动设备,例如个人电脑或任何数据处理设备。
节点130是移动设备或其它计算设备,其可操作以包括本地RDBMS150、因特网浏览器、网络服务接口140以及应用程序模块154。在一个实施例中,包括多个因特网浏览器和本地RDBMS150的移动或计算设备是可操作的,从而包括多个节点130。
在一个实施例中,本地RDBMS150包括多个节点数据库152。每个节点数据库152对应于特定的应用程序156。节点数据库152中的数据表和各数据表之间的关系由存储在中心数据库122上的应用程序模式125定义。在一个实施例中,从中心服务器***110或者另一个服务器下载包括节点数据库152的数据表。
节点数据库152存储与一个或多个用户170相关的数据。用户170使用数据库应用程序156来操纵多个节点130中的每个节点上的节点数据库152中的数据。
在一个实施例中,本地RDBMS150包括数据库管理***,例如但不限于SQLite。本地RDBMS150可操作以经由数据库应用程序156和网络服务接口140与中心服务器***110通信。
在一个实施例中,示例性而非限制性的,因特网浏览器可以是任何基于WebKit的浏览器、火狐浏览器、IE或者黑莓OS5.x浏览器。节点130使用因特网浏览器来执行用于多个应用程序156的软件编码。
节点130经由对网络服务接口140的函数调用,与中心服务器***110通信。网络服务接口140是可操作的从而访问通信网络160,进而从中心服务器***110递送和下载数据。当网络服务接口140从中心服务器***110接收数据时,其将数据传递至节点数据库152。
应用程序模块154存储多个数据库应用程序156。当移动或计算设备是购买到的时,数据库应用程序156可以包含在移动或计算设备中。在一个实施例中,可以从服务器,例如中心服务器***110下载数据库应用程序156。
在一个实施例中,数据库应用程序156包括软件编码,例如以HTML、JavaScript和CSS编写的软件编码。
在一个实施例中,每个数据库应用程序156使用特定的节点数据库152来存储关于节点130的数据,将数据递送至中心服务器***110,并从中心服务器***110下载数据。
如上讨论的,用户170使用节点130来与其他用户170共享数据。在一个实施例中,用户170可以使用多个节点130来访问中心服务器***110上的数据。在用户170可从中心服务器***110获得任何数据之前,用户170必须获得利用服务器***110认证用户170的唯一用户名或者用户识别。
在一个实施例中,用户170可以例如通过OpenID供应商(例如http://opened.net)来获得用户识别,例如OpenID。OpenID利用中心服务器***110唯一地识别用户170。如下面详细描述的,应用程序数据集合124需要例如userID的用户识别号来确定用户170的分区。用户170的分区确定用户170对存储在中心服务器***110上的数据的访问权限。
2.中心数据库数据设计
位于中心服务器***110上的中心RDBMS120是可操作的从而群集多个应用程序数据集合124。每个应用程序数据集合124包括应用程序模式125以及用于由节点130和用户170递送至中心服务器***110的每个数据库应用程序156的操作126的结构化历史记录。
如之前所述的,应用程序数据库模式125定义了节点数据库152的数据表和各数据表之间的关系。在一个实施例中,应用程序模式125由应用程序开发人员定义。应用程序开发人员使用软件语言定义应用程序数据集合124的应用程序模式125。在一个实施例中,应用程序开发人员可以使用软件语言,例如XML。本领域的技术人员会理解,所列出的软件语言仅是示例性的而非限制性的,并且还可以使用其他软件语言。
在一个实施例中,应用程序开发人员以模式文件来设计应用程序模式125。然后,应用程序开发人员经由例如通信网络160将模式文件递送至中心服务器***110。在一个实施例中,模式文件包含数据表名、数据表中的列名、存储在每一列中数据的类型(例如数字或文本)以及对应于程序模式125中其他数据表的引用。
一旦应用程序模式125被递送至中心服务器***110,其被存储在中心数据库122中。在一个实施例中,应用程序模式125存储在一组独立于应用程序的数据表中,例如Jobs数据表270和JobsStep数据表272。另外,在应用程序模式125中定义的数据表名和数据表ID被存储在Tables数据表267中。Tables数据表267是用于检索上述操作126的结构化历史记录的数据表中的一个。在一个实施例中,指定该应用程序模式125中的主数据表的Table ID为0。
相关领域的技术人员会理解,在这种设计中,在应用程序模式125中定义的数据表不是以中心数据库122中的数据表存在的。因此,中心数据库122是可操作的从而群集用于多个数据库应用程序156的应用程序数据集合124以及应用程序模式125而无需任何应用程序特定编码。
在一个实施例中,应用程序开发人员可以递送与应用程序数据集合124相关的预加载数据。在一个实施例中,预加载数据可以存储在一组数据文件中,例如逗号分隔值(CSV)文本文件。在一个实施例中,CSV文件中的数据可以具有与数据表中的各列相同的顺序,并且具有用于每一行的逗号分隔值。在一个实施例中,数据文件以应用程序模式125中的数据表命名。例如,命名为TABLE_NAME.CSV的文件包含用于TABLE_NAME的数据,并且TABLE_NAME对应于应用程序模式125中的数据表。
在一个实施例中,中心服务器***110将由模式文件递送的第一数据表作为主数据表。
如上所述的,应用程序模式125被描述为一组数据表。数据表使用主键和外部键来引用应用程序模式125中的其他数据表。在关系数据库中,主键被用于唯一地识别数据表中的列,在该数据表中所有记录都具有不同的值。外部键识别第一数据表中的一个或多个列,该第一数据表引用第二数据表中的匹配列集合。主键和外部键是众所周知的。
在一个实施例中,应用程序模式125中的主数据表被称为UserTable。User Table中的每一行为访问应用程序模式125的用户170定义名称和其它信息。User Table包括唯一用户识别参数,例如上述的OpenID。
在一个实施例中,用户170可以使用例如OpenID的相同用户识别来访问对应于多个应用程序数据集合124的多个应用程序模式125。
在一个实施例中,主数据表中的至少一个主键被设置为引用与一实体(其要求一分区)相关的列。在应用程序模式125中,主键被指定给每个用户识别参数,例如User Table(用户数据表)中的OpenID。在一个实施例中,例如OpenID的用户识别是数字编号并且被分配有数字主键。
分区是属于特定用户的应用程序模式125中的行的集合。例如,应用程序模式125中的分区对应于为具有特定OpenID的用户170存储数据的行和数据表的集合。分区可以包含用于用户170的数据,该数据由所有用户170全球共享,该分区对于用户170是唯一的,或者,该分区是用户170的组的子集。
图2B阐释了根据本发明的实施例201的用于确定分区的分区算法201的流程图。例如,在一个实施例中,分区被定义为P(u,t),其中函数P定义应用程序模式125中的分区。变量“u”定义一用户,例如用户170。变量“t”定义时间,例如时间实例“t”。
在一个实施例中,应用程序模式125中的各数据表之间的关系被定义为R(S,T),其中“S”和“T”是数据表。如果数据表“S”具有引用数据表“T”中的主键的外部键,那么数据表“S”引用数据表“T”。此外,如果在行“s”中的外部键的值等于行“t”中主键的值,那么数据表“S”中的行(行“s”)引用数据表“T”中的行(行“t”)。
一开始,主数据表,例如上述的User Table(用户数据表),被初始化为T0。在主数据表中的用于识别用户170的行上设置主键。在示例性实施例中,User Table(用户数据表)中的主键设置在用户识别列中,例如UserID或者OpenID。
在一个实施例中,T0中的行r0(u)是与用户相关的行,例如User Table(用户数据表)中的用户170。
在一个实施例中,使用下述以及在图2A中的流程图中阐释的分区算法201来确定分区P(u,t)。
以如下方式选择分区P(u,t)中的数据表和行:
1.令“considered table(被考虑的数据表)”CT的集合初始化为T0,并且令“considered reference(被考虑的引用)”CR的集合初始化为“空”。
将r0(u)添加至分区P(u,t)。
2.对于引用了CT中的数据表的每个引用R(X,·):
添加数据表X中的通过R(X,·)引用分区P(u,t)中的行并且也位于分区P(u,t)中的所有行。
将R(X,·)添加至CR。
如果数据表X不在CT中,那么将数据表X添加到CT。
3.对于由CT中数据表引用的、不在CR中的每个引用R(·,Y):
将由分区P(u,t)中的行引用的数据表Y中的所有行添加至分区P(u,t)。
将R(·,Y)添加至CR。
如果数据表Y不在CT中,那么将数据表Y添加至CT。
4.重复步骤2和3,直到迭代不会将任何对CR或数据表的引用添加至CT。
分区算法201对应用程序模式125中定义的数据表和行进行递归迭代,直到确定属于分区P(u,t)的所有行和数据表。
返回至图2A,下面描述阐释了分区算法201的流程图。
在步骤203和205中,初始化分区算法201。在步骤203中,主数据表T0被添加至被考虑的数据表(CT)。在步骤205中,行r0(u)被添加至分区P(u,t)。
在步骤207中,识别包含在“被考虑的数据表(CT)”中的数据表T的集合中的所有数据表。本领域技术人员会理解,在第一次迭代时,仅数据表T0被包含在数据表T的集合中。在一个实施例中,仅有在之前的迭代中通过分区算法201被添加至该“被考虑的数据表(CT)”中的数据表被包含在数据表T的集合中。在识别了数据表T的集合后,分区算法201分析数据表T的集合中的每个数据表T。
在步骤209中,识别数据表X的集合。数据表X的集合由所有引用数据表T的数据表构成。
在步骤211中,分区算法201分析数据表X的集合中的每个数据表X。对于每个数据表X,分区算法201确定数据表X中所有引用数据表T的引用R(X,·)。
在步骤213中,对于每个引用R(X,·),分区算法201确定该引用R(X,·)是否也引用分区P(u,t)中的任何行。如果引用R(X,·)引用了分区P(u,t)中的任何行,那么流程图进行至步骤217,否则,流程图进行至步骤215。
在步骤215中,分区算法201确定在数据表X中是否存在引用数据表T的另一个引用R(X,·)。如果存在另一个引用R(X,·),那么流程图进行至步骤213,在该步骤中,下一个引用R(X,·)如上所述被分析。否则,流程图进行至步骤211。在步骤211中,如上所述地确定数据表的集合中的另一个数据表T中的所有引用。
返回至步骤217,如果引用R(X,·)引用了分区P(u,t)中的行,那么该引用R(X,·)被添加至分区P(u,t)。该引用R(X,·)也被添加至该“被考虑的引用(CR)”的集合中。
在步骤219中,分区算法201确定数据表X是否包含在“被考虑的数据表(CT)”中。如果数据表X不包含在“被考虑的数据表(CT)”中,那么在步骤221中,数据表X被添加至该“被考虑的数据表(CT)”。
如果步骤219的数据表X包含在“被考虑的数据表(CT)”中,或者,在上述的步骤221之后,分区算法201进行至步骤223。
在数据表X的集合中的所有数据表X都被处理后,算法进行至步骤223。
在步骤223中,识别数据表Y的集合。数据表Y的该集合包含由步骤209的数据表T引用的所有数据表。分区算法201进行至步骤225,在该步骤225中,分析该数据表Y的集合中的每个数据表Y。
在步骤225中,分区算法201确定数据表Y中不包含在“被考虑的引用(CR)”中并且被数据表T引用的所有引用R(·,Y)。
在步骤227中,分区算法201确定每个引用R(·,Y)是否被分区P(u,t)中的行引用。如果该引用R(·,Y)被分区P(u,t)中的行引用,那么分区算法201进行至步骤229。然而,如果该引用R(·,Y)未被分区P(u,t)中的行引用,那么分区算法201进行至步骤231。
在步骤231中,分区算法201确定在数据表Y中是否存在被数据表T引用的另一个引用R(·,Y)。如果该引用R(·,Y)不存在,那么分区算法201返回至步骤225。在步骤225中,如上所述地分析数据表Y的集合中的下一个数据表Y。然而,如果在步骤231中存在另一个引用R(·,Y),那么分区算法201进行至步骤227。在步骤227中,如上所述地分析下一个引用R(·,Y)。
在步骤229中,分区算法201将步骤227的引用R(·,Y)添加至分区P(u,t)。引用R(·,Y)也被添加至“被考虑的引用(CR)”的列表中。
在步骤233中,分区算法201确定步骤225中的数据表Y是否在“被考虑的数据表(CT)”中。如果数据表Y不在“被考虑的数据表(CT)”中,那么在步骤235中,分区算法201将数据表Y添加至“被考虑的数据表(CT)”。然而,如果数据表Y在“被考虑的数据表(CT)”中或者在步骤235中被添加至该“被考虑的数据表(CT)”,那么分区算法201进行至步骤237。
在步骤237中,分区算法201确定在数据表Y中是否存在要求分析的另一个数据表Y。如果存在另一个数据表Y,那么分区算法201进行至步骤225。在步骤225中,如上所述地分析下一个数据表Y。然而,如果所有数据表Y都已经被分析了,那么分析算法201进行至步骤239。
在步骤239中,分区算法201确定是否存在被添加至“被考虑的引用(CR)”中的任何引用R(X,·)或R(·,Y),该“被考虑的引用(CR)”在之前的迭代过程中不在集合中。如果新的引用被添加,那么如上所述,分区算法201进行至步骤207。否则,分区算法201进行至步骤241。
在步骤241中,分区算法201确定任何数据表X或数据表Y是否被添加至“被考虑的数据表(CT)”中,该“被考虑的数据表(CT)”在之前的迭代过程中不存在。如果添加了另外的数据表,那么分区算法201如上所述地进行至步骤207。否则,分区算法201进行至步骤243。
在步骤243中,分区P(u,t)是完整的。
图2B和图2C是两个应用程序模式125的示例性实施例。每个应用程序模式125是可操作的从而存储用于由节点130使用的对应节点数据库152的数据。
图2B是应用程序模式125的示例性实施例,其中分区P(u,t)定义属于用户170的数据。定义该分区从而包括数据,该数据包括用于所有将用户170作为成员的组的任务列表。应用程序模式125包括四个数据表:User Table(用户数据表)210(主数据表),User GroupTable(用户组数据表)212,Group Table(组数据表)214以及Tasks Table(任务数据表)216。
在一个实施例中,用户数据表210是包括两列的主数据表,这两列是列UName和列UID。列UID唯一地识别用户数据表210中的每个用户。关于列UID而设置主键220。
组数据表214识别所有组的名称。组数据表214包括两列:列GID和列GName。组数据表214包括关于列GID而设置的主键224。
用户组数据表212包括三列:列RowID、列UID以及列GID。主键222是关于列RowID而设置的。主键222表示对用户数据表210中的列UID的引用以及对组数据表214中的列GID的引用。外部键232是关于列UID而设置的,并且外部键234是关于组数据表214中的列GID而设置的。外部键232识别与用户数据表210中的列UID的关系。外部键234识别与组数据表214中的列GUI的关系。
任务数据表216包括四列:列TID、列TName、列GID以及列DueDate。主键226是关于列TID而设置的。主键226识别对组数据表214中的列GID的引用。外部键236是关于列GID而设置的。外部键235识别与组214中的列GID的关系。
当中心服务器***110将分区算法201应用至图2B中描述的应用程序模式125时,为用户170确定分区P(u,t)。分区P(u,t)包括数据,该数据包括用于每个将用户170作为成员的组的任务列表。
图2C是应用程序模式125的另一个示例性实施例。对应于图2C中的应用程序模式125的节点数据库152允许用户170检索他们的任务。然而,允许身为经理的用户170检索属于他们的任务以及属于他们团队的其他成员的任务。
应用程序模式125包括两个数据表:User Table(用户数据表)240(主数据表)以及Tasks Table(任务数据表)250。用户数据表240包括三列:列UID、列UName以及列ManagerID。主键242是关于列UID而设置的。外部键244也是关于列UID而设置的。
任务数据表250包括三列:列RowID、列UID以及列Value。主键252是关于列RowID而设置的并且引用用户数据表240。外部键254是关于列UID而设置的。
当中心服务器***110将分区算法201应用至图2C中描述的应用程序模式125中时,为用户170确定分区P(u,t)。如果用户170不是经理,那么P(u,t)包括用于仅与用户170相关的任务列表的数据。然而,如果用户170是经理,那么P(u,t)包括用于用户170以及用于用户170的组的成员的任务列表的数据。
如上所述,图A中阐释的中心数据库122存储对每个应用程序数据集合124进行的操作126的结构化历史记录。在一个实施例中,操作126的结构化历史记录包括对应用程序数据集合124中的各行和各数据表进行的数据变化的完整历史记录。通过由节点130对中心服务器***110进行的每个数据变化的完成时间,存储各变化126的结构化历史记录。
本领域的技术人员将会理解,作为应用程序模式125,对于特定的应用程序数据集合124,也没有定义操作126的历史记录。此外,在一个实施例中,操作126的历史记录被存储为中心数据库122中的数据表中的记录,独立于任何单独的应用程序数据集合124。在一个实施例中,操作126的历史记录被存储为图2A中所示的Change Table(变化数据表)262、RowChange Table(行变化数据表)263、RowSubordinate Table(行下标数据表)264、RowTable(行数据表)265、RowSubordinateChange Table(行下标变化数据表)266以及TablesTable(数据表数据表)267中的操作的时间戳日志。
每个数据变化是由应用程序模式125定义的关于数据表的单个行操作。每个行变化包括与正在应用程序模式125中变化的行相关的链接行的列表。例如,在从数据表中删除行的一个实施例中,链接行的列表将包括没有被该删除操作改变、但是因为该删除而不再是分区的成员的行。在数据表中更新行的一个实施例中,链接行的列表将包括在更新之前和之后被更新的行的表示。链接行的列表存储在数据表RowSubordinates(行下标数据表)264和RowSubordinateChanges(行下标变化数据表)266中。
3.在服务器和节点之间的通信
A初始化关于节点的应用程序数据库
如上所述,节点130在本地RDBMS150中存储数据。在一个实施例中,本地RDBMS150是可操作的从而运行例如SQLite的数据库管理***。每个本地RDBMS150群集用于对应的数据库应用程序156的节点数据库152。
如果节点130不包括用于应用程序156的节点数据库152,那么节点130是可操作的从而从中心服务器***110或从另一个服务器下载节点数据库152。
图3A是流程图,其阐释了处理来自节点130的请求消息的中心服务器***110的示例实施例300A,该请求消息请求创建关于节点130的节点数据库152。使用图1中的组件描述该流程图。
在步骤305中,中心服务器***110经由通信网络160接收来自节点130的请求消息。该请求消息包括对与数据库应用程序156相关的应用程序模式125的请求。
在步骤315中,中心服务器***110认证数据库应用程序156。中心服务器***110确定用于数据库应用程序156的应用程序模式125是否存在于中心数据库122中。如果应用程序模式125存在,那么流程图进行至步骤325,否则流程图结束。
在步骤325中,中心服务器***110检索来自中心数据库122的Job Table270和JobScript Table272的应用程序模式125。应用程序模式125描述用于节点数据库152的数据表和各数据表之间的关系。如上所述,节点130使用应用程序模式125来创建对应的节点数据库152。
在步骤335中,中心服务器***110检索与节点数据库152相关的任何预加载数据。该预加载数据可以由应用程序开发人员递送至中心服务器***110。
在步骤345中,中心服务器***110将响应消息发送至节点130。该响应消息包含应用程序模式125和在步骤335中检索到的预加载数据。在一个实施例中,检索到的应用程序模式125和节点130被写入JSON文档中。该JSON文档作为响应消息的一部分而发送。本领域技术人员知道如何表示JSON文档中的数据以及如何使用通信网络160发送该JSON文档。
在另一个实施例中,应用程序模式125和预加载数据作为两个不同的响应消息被发送至节点130。
在步骤355中,节点130接收该响应消息。节点130由应用程序模式125创建节点数据库152,该应用程序模式125是从中心服务器***下载的。节点130也利用预加载数据存在于节点数据库152中。
B.复制存储在中心服务器***上的数据
当节点130上的用户170操纵或改变数据时,节点130群集包括对中心服务器***110进行的数据变化的消息。在一个实施例中,每当用户170提交数据时,节点130将数据变化递送至中心服务器***110。本领域技术人员将会理解在节点130上数据是如何提交的。中心服务器***110接收消息,该消息包括来自多个节点130的数据变化。如上所述,该数据变化存储在中心数据库122中。中心数据库122存储用于多个应用程序数据集合124和用于多个将变化递送至中心服务器***110的多个节点130的变化。
在一个实施例中,多个节点130将请求消息发送至中心服务器***110。每个请求消息包括由特定用户170对来自中心服务器***110的数据的请求,用于特定数据库应用程序156。更新请求消息是对来自特定应用程序数据集合124的数据的请求。响应于该更新请求消息,中心服务器***110将更新响应消息发送至请求中的节点130。该更新响应消息包括用于特定用户170的数据。该数据包括由来自预定点的多个用户170及时地对与用户170相关的分区进行的数据变化的列表。
根据一个实施例,节点130以预定次数将更新请求消息发送至中心服务器***110。在一个实施例中,在启动时,节点130发送更新请求消息。在一个实施例中,节点130仅在中心服务器***110指定的时间发送更新请求消息。
图3B是阐释了中心服务器***110的示例性实施例300的流程图,该中心服务器***110处理从节点130接收的更新请求消息。使用图1中的组件描述该流程图。
在步骤310中,中心服务器***110经由通信网络160接收来自节点130的更新请求消息。该更新请求消息包括与对应的用户170相关的用户识别,例如但不限于OpenID、用户ID。该更新请求消息还识别已经发送了更新请求消息的节点130和数据库应用程序156。
在步骤320中,中心服务器***110认证该更新请求消息。在一个实施例中,中心服务器***110确定用户170是否允许访问应用程序数据集合124。例如,通过经由OpenID供应商认证与用户170相关的用户ID,或者通过使用户名与主数据表匹配,例如中心数据库122中的User Table(用户数据表),可以执行认证。在步骤320中,中心服务器***还确定节点130是否向中心服务器***110登记,以及是否存在针对数据库应用程序156的应用程序数据集合124。基于与节点130相关的节点标识符和与数据库应用程序156相关的应用程序标识符,进行认证。如果中心服务器***110不能够认证用户170,则流程图结束。
在步骤340中,中心服务器***110在适当的应用程序模式125中为用户170确定分区P(u,t)。图4是阐释了示例性实施例400的流程图,通过该流程图,中心服务器***110确定用于用户170的分区。
在步骤410中,中心服务器***110识别存储在中心数据库122中的数据集合124,节点130已经为其请求了数据。在一个实施例中,与数据库应用程序156相关的应用程序数据库识别包含在更新请求消息中。在一个实施例中,该步骤还结合认证步骤320而实施。
在步骤420中,中心服务器***110识别应用程序模式125中的主数据表。在一个实施例中,主数据表,例如User Table(用户数据表),包括用户170的数据,例如用户ID和用户名。User Table(用户数据表)还包括关于用户ID而设置的主键,例如UserID或OpenID。
在步骤430中,中心服务器***110为用户170确定分区P(u,t)。中心服务器***110将分区算法201应用至应用程序模式125。分区算法201开始对应用程序模式125中与主键和外部键链接的数据表进行迭代。如上所述,分区算法201首先开始对应用程序模式125中的主数据表进行迭代。在中心服务器***110应用了分区算法201后,为用户170确定分区P(u,t)。所确定的分区是存储用户170的数据的应用程序模式125中的数据表中的行的集合。如上所述,该分区对应于持有由多个用户170递送的数据的应用程序模式125中的数据的集合。
在中心服务器***110为用户170确定了分区之后,中心服务器***110进行至步骤350。在步骤350中,中心服务器***110访问存储在中心数据库服务器122中的操作126的结构化历史记录并检索对在步骤340的分区中识别出的数据表和行的数据变化。图5是阐释了示例性实施例500的流程图,通过该流程图,中心服务器***110确定对步骤340中的分区进行的数据变化。
在步骤510中,中心服务器***110识别中心服务器***110接收到用于用户170的前一个更新响应消息的时间。在一个实施例中,被识别的时间被指定为时间t0
在一个实施例中,时间t0是针对节点130的。如上所述,用户170能够通过多个节点130访问中心服务器***110。当用户170从多个节点130访问中心服务器***110时,每个节点130会具有与用户170相关的不同的数据集合。由于特定节点130(也就是来自步骤310的请求节点)在上一次发送了前一个更新响应消息,中心服务器***110必须使用被递送至在步骤340中确定的分区的所有数据变化来更新该特定节点130。因此,如果用户170使用多个节点130,那么每个节点130可具有不同的时间t0,但是在对应的操作中,仅有请求节点被更新。
在一个实施例中,如果中心服务器***110确定当前的更新请求消息是用于用户170的第一次更新请求消息,那么中心服务器***110将时间t0设置为开始时间。本领域的技术人员将会理解,术语“开始时间”对应于应用程序数据库的初始状态。当t0被设置为开始时间时,中心服务器***110是可操作的从而检索对与用户170相关的分区进行的所有被递送至中心服务器***110的变化。在另一个实施例中,中心服务器***110是可操作的从而在更新响应消息中发送预加载数据,如下面步骤380中所述。
在另一个实施例中,群集在节点130上的节点数据库152可能进入崩溃状态。本领域的技术人员将会理解,进入崩溃状态的应用程序数据库必须被重新初始化。本领域技术人员还会理解,数据库的崩溃可能由多种原因产生,例如SQL错误、物理存储器崩溃、紊乱条件或其它不确定事件。
在一个实施例中,每当中心服务器***110从崩溃的节点130接收更新请求消息时,中心服务器***110将时间t0设置为开始时间,如上所述。当时间t0被设置为开始时间时,中心服务器***110是可操作的从而检索对与用户170相关的分区进行的所有被递送至中心服务器***110的变化。然后,使用有效数据初始化崩溃的节点数据库152。
在步骤520中,中心服务器***110确定从时间t0开始对数据库应用程序156进行的所有被递送至中心服务器***110的数据变化。
在一个实施例中,中心服务器***110识别在时间t0和时间t2之间为数据库应用程序156递送的所有数据变化。时间t2是中心服务器***110接收步骤310中的更新请求消息的时间。
如上所述,每个节点数据库152的数据变化被存储在中心数据库122中,作为操作126的结构化历史记录。针对节点数据库152中的行变化的数据变化列表被存储在RowChange Table(行变化数据表)263中。在一个实施例中,行变化可以包括INSERT、DELETE或者UPDATE操作。因此,在UPDATE操作中,行变化识别在UPDATE操作之前和之后的行数据。在INSERT操作中,行变化仅识别添加的值。在DELETE操作中,行变化识别被删除的行的主键。RowChange Table(行变化数据表)263引用RowSubordinateChanges Table(行下标变化数据表)266从而确定在应用程序模式125中与特定行变化相关的TableID和RowID。在一个实施例中,RowSubordinateChanges Table(行下标变化数据表)266保持各行和它们的相关数据表的完整链接对的列表,如在图2A中的中心数据库122模式中所阐释的。一旦在相对时间段内存储在RowChanges Table(行变化数据表)263中的所有数据变化都被识别,那么中心服务器***110进行至步骤530。
在步骤530中,分区算法201被应用至RowChanges Table(行变化数据表)263。在一个实施例中,分区算法P(u,t)中的变量“u”定义与数据变化相关的Row ID,并且变量“t”定义时间实例“t”。分区算法201产生分区P(u,t),其识别受特定行变化影响的节点130的列表。在一个实施例中,用户170的列表可以来源于节点130的列表,如在图2A中的中心数据库122模式中阐释的。
在步骤540中,中心服务器***110确定已经发送了更新请求消息的节点130是否被包含在步骤530中确定的节点的列表中。如果节点130在该列表中,那么中心服务器***110进行至步骤550,否则,中心服务器***110进行至步骤560。
在步骤550中,中心服务器***110确定与行变化相关的链接行。链接行阐释了数据表在发生行变化之前和之后的状态。在一个实施例中,链接行被存储在图2A中阐释的RowSubordinateChanges Table(行下标变化数据表)266中。
当中心服务器***110确定链接行时,对这些链接行所做的操作被包含在JSON文档128中。中心服务器***110将JSON文档128发送至节点130,作为更新响应消息的一部分。
在中心服务器***110结束对行变化的分析之后,中心服务器***110进行至步骤560。在步骤560中,中心服务器***110确定是否存在要求在步骤530至步骤550中进行分析的另一个行变化。如果存在另一个行变化,那么中心服务器***110进行至步骤530,并为下一个行变化重复步骤530至步骤550。然而,如果中心服务器***110已经完成了对数据变化中的所有行变化的分析,那么服务器***110进行至步骤360。
在步骤360中,中心服务器***110确定该更新响应消息是否超过预定大小。在一个实施例中,中心服务器***110通过识别在时间t0和时间t2之间包含在更新响应消息中的操作的数量来确定该更新响应消息的大小。中心服务器***110将行变化的数量与最大预定义值进行比较。本领域技术人员将会理解,可以通过中心服务器***110定义或设置该最大值。
另外,本领域技术人员会理解限制该更新响应消息的大小的理由。例如,将大的响应消息下载至节点130会花费太长时间。漫长的下载时间会引起节点130的易损性,例如下载中断。如果消息下载被中断,那么节点130会争取与中心服务器***110重新建立连接,并且重新开始下载。在一个实施例中,当更新响应消息是经由通信网络160行进时,还可以修正大的更新响应消息的完整性。
在一个实施例中,步骤360可以在步骤560之前实施。
如果行变化的数量小于该最大值,那么中心服务器***110进行至步骤375。
在步骤375中,中心服务器***110确定请求中的节点130下一次将更新请求消息发生至中心服务器***110的时间。在常规***中,在移动设备上可操作的应用程序确定操作移动设备对中心服务器***进行更新请求的频率。例如,可以基于用户偏好进行请求或通过应用程序开发人员配置请求。
在一个实施例中,与常规***不同的是,中心服务器***110确定请求中的节点130何时发送下一个更新请求消息。该确定是基于中心服务器***110的载荷、使用节点130的用户170的数据量和/或多个用户170在步骤340中的分区中递送数据的频率进行的。
因此,如果数据频繁递送至中心服务器***110,那么中心服务器***110会指示节点130相当快地发送另一个更新请求消息。然而,如果数据不是频繁递送至中心服务器***110的,那么中心服务器***110会指示节点130等待较长的时间段后再发送另一个更新请求消息。
在中心服务器***110确定了下一个更新请求消息的时间后,中心服务器***110将时间t0设置为t2.
在步骤390中,中心服务器***110格式化该更新响应消息。该更新响应消息包括在步骤350中采集的操作日志156以及在步骤375中确定的下一个更新消息请求的时间。当中心服务器***110将该更新响应消息发送至节点130时,流程图在步骤390处结束。
返回至步骤360,如果中心服务器***110确定行变化的数量超过了包含在更新响应消息中的最大行变化允许限度,那么中心服务器***110进行至步骤370。
在步骤370中,中心服务器***110准备仅发送等于或小于最大允许限度数量的行变化。因此,中心服务器***110指示节点130在短时间(在指令中指示了时间间隔)内发送另一个更新请求消息,从而检索不包含在当前的更新响应消息中的行变化。
在一个实施例中,中心服务器***110还将包含在当前的更新响应消息中的最后一个行变化到达中心服务器***110的时间识别为时间t。中心服务器***将时间t0设置为t。这样,响应于来自相同节点的下一个更新请求消息,中心服务器***110是可操作的从而确定对在时间t处以数据变化开始的步骤340的分区进行的变化,特别是包含在对节点130的更新响应消息中的最后一个行变化。
在中心服务器***110完成步骤370后,中心服务器***110如上所述地进行至步骤390。
C.在节点上处理复制数据
图6是阐释了多个步骤的流程图的示例性实施例600,通过该步骤,节点130处理来自中心服务器***110的更新响应消息。
在步骤610中,节点130经由通信网络160接收来自中心服务器***110的更新响应消息。
在步骤620中,节点130认证该更新响应消息。节点130确定在该更新响应消息中的数据是否是用于对应的用户170和被请求的数据库应用程序156的。
在步骤630中,节点130解析该更新响应消息。节点130检索包含该更新响应消息中的行变化的操作历史记录。在一个实施例中,从包含在该更新响应消息中的JSON文档中检索该操作历史记录。操作历史记录被保存在节点130处的暂存区(未显示)中。在一个实施例中,暂存区是包含在节点数据库152中的数据表。本领域技术人员将会理解,为效率目的,操作历史记录保存在暂存区中。例如,在暂存区中,操作日志可以被快速存储并具有最少的处理。这确保了在快速通信网络160中数据处理不会成为节点130的限制因素。
在步骤640中,节点130将暂存区中的数据应用至节点数据库152中的数据表和行中。在节点130完成了对步骤640的分区的更新后,来自JSON文档的数据从暂存区中被删除。
在步骤650中,节点130记录用于在步骤370或375中确定的下一个更新请求的时间。节点130是可操作的从而在确定的该时间将另一个更新请求消息发送至中心服务器***110。在一个实施例中,可以在步骤620之后的任何时间进行步骤650。
4.示例性计算机***实施
可以通过软件、固件、硬件或其组合实施本发明的不同方面。图7阐释了示例性计算机***700,其中本发明或本发明的一部分可以实施为计算机可读编码。例如,由上述流程图阐释的方法可以在***700中实施。依据该示例性计算机***700描述本发明的各种实施例。在阅读了本说明书之后,对于本领域技术人员来说,如何使用其它计算机***和/或计算机结构实施本发明将是显而易见的。
计算机***700包括一个或多个处理器,例如处理器710。处理器710可以是特殊用途或一般用途处理器。处理器710被连接至通信基础设施720(例如,总线或网络)。
计算机***700还包括主存储器730,优选地为随机存取存储器(RAM),以及还可以包括辅助存储器740。例如,辅助存储器740可以包括硬盘驱动器750、可移动存储驱动器760和/或记忆棒。可移动存储驱动器760可以包括软盘驱动器、磁带驱动器、光盘驱动器、闪速存储器等。可移动存储驱动器760以公知的方式对可移动存储单元770进行读和/或写。可移动存储单元770可以包括软盘、磁带、光盘等,可以通过可移动存储单元760对其进行读写。相关领域的技术人员将会理解,可移动存储单元770包括具有存储在其中的计算机软件和/或数据的计算机可用存储介质。
在可选择的实施方式中,辅助存储器750可以包括允许将计算机程序或其它指令下载至计算机***700中的其它类似装置。这种装置可以包括,例如可移动存储单元770和接口720。这种装置的示例可包括程序盒式存储器和盒式接口(例如在视频游戏装置中使用的)、可移动存储芯片(例如EPROM或PROM)和相关插口,以及允许软件和数据从可移动存储单元770转移至计算机***700的其它可移动存储单元770和接口720。
计算机***700还可以包括通信和网络接口780。通信接口780允许软件和数据在计算机***700和外部设备之间转移。通信接口780可以包括调制解调器、通信端口、PCMCIA插槽和卡等。经由通信接口780转移的软件和数据以电子的、电磁的、光学的信号形式或能够通过通信接口780被接收的其他信号的形式存在。这些信号经由通信路径785被提供至通信接口780。通信路径785携载信号并可通过使用电线或电缆、光纤、电话线、移动电话链接、RF链接或其它通信通道而实施。
网络接口780允许计算机***700通过通信网络或例如LAN、WAN、因特网等的介质通信。网络接口780可经由有线或无线连接与远程站点或网络交互。
在本文档中,术语“计算机程序介质”以及“计算机可用介质”通常指的是例如可移动存储单元770、可移动存储驱动器760以及安装在硬盘驱动器750中的硬盘的介质。经由通信路径785携载的信号也能够实现在此描述的逻辑。计算机程序介质和计算机可用介质也可指存储器,例如主存储器760以及辅助存储器740,其可以是存储半导体(例如,DRAM等)。这些计算机程序产品是用于提供软件至计算机***700的装置。
计算机程序(也称为计算机控制逻辑)被存储在主存储器730和/或辅助存储器740中。计算机程序还可经由通信接口780被接收。这种计算机程序,当执行时,能够使计算机***700实施在此讨论的本发明。特别地,这些计算机程序,当执行时,能够使处理器710实施本发明的过程,例如在由图3的流程图300、图4的流程图400、图5的流程图500以及图6的流程图600阐释的方法中的步骤。因此,这种计算机程序表示计算机***700的控制器。在使用软件实施本发明时,可使用可移动存储驱动器760、接口720、硬盘驱动器750或者通信接口780将软件存储在计算机程序产品中并下载到计算机***700中。
计算机***700还可以包括输入/输出/显示设备790,例如键盘、监控器、定点设备等。
本发明还涉及一种包括存储在任何计算机可用介质上的软件的计算机程序产品。这种软件,当在一个或多个数据处理设备中执行时,促使数据处理设备以在此所述的方式操作。本发明的实施例使用任何现在已知或将来公知的计算机可用或可读介质。计算机可用介质的示例包括但不限于主存储设备(例如,任何类型的随机存取存储器)、辅助存储设备(例如,硬盘驱动器、软盘、CD ROM,ZIP盘、磁带、磁性存储装置、光存储器、MEMS、纳米技术存储设备等)以及通信介质(例如,有线和无线通信网络、局域网、广域网、内部网等)。
本发明还可与未在此描述的软件、硬件和/或操作***实施方式一起使用。可以使用任何软件、硬件以及适合执行在此描述的功能的操作***实施方式。
结论
应该理解,该详细说明部分,而不是发明内容和摘要部分,旨在用于解释权利要求书。发明内容和摘要可以提出一个或多个示例性实施例,但并非发明人构思出的本发明的所有实施例。因此,其不旨在以任何方式限制本发明和随附权利要求书。
已经在阐释了本发明特定功能和关系的实施方式的功能性创建模块的帮助下描述了本发明。为了便于说明,功能性创建模块的边界是随意界定的。只要能够合适地执行本发明的指定功能和关系,可限定可替换的边界。
各特定实施例的前述说明完整地揭示了本发明的一般特征,使得其它人可在不偏离本发明的一般概念的情况下通过应用本领域技术内的知识容易地修改和/或调整例如用于特定实施例的各种实施方式,而不需要过多的试验。因此,基于在此表示的教导和引导,这种调整和修改应落入所公开的实施例的等同方案的含义和范围内。应该理解,在此的用语或者术语仅用于说明目的而非限制目的,使得技术人员可鉴于该教导和引导来解释说明书的用语和措辞。
本发明的宽度和范围不应该由上述任何示例性实施例限制,而是应该仅根据随附权利要求和其等同方案限定。
本申请中的权利要求不同于母案或其它相关申请的权利要求。因此,申请人解除在母案或与本申请相关的任何先前申请中关于权利要求范围所做的任何放弃声明。因此,建议审查员,任何这种先前所做的放弃声明和引用参考需要重新审查。进一步,也提醒审查员注意,本申请中的任何否认声明不应该被曲解或与母案发生抵触。

Claims (20)

1.一种检索来自中心服务器***的数据的方法,包括,
接收来自节点的更新请求消息,其中,所述更新请求消息包括节点识别、用户识别和应用程序识别,并且其中,所述节点包括计算装置、因特网浏览器以及数据库,以及其中,所述应用程序识别用于识别数据库应用程序;
基于所述应用程序识别,访问中心数据库服务器中的应用程序模式;
基于所述用户识别,确定所述应用程序模式的分区;
确定用于描述对所述数据库应用程序进行的数据变化的一组操作;
从所述中心数据库服务器中用于改变所述分区中数据的所述一组操作中,检索至少一个操作;
在更新响应消息中包括所述至少一个操作;以及
将所述更新响应消息传送至所述节点。
2.如权利要求1所述的方法,其中,确定一组操作包括:
对于数据变化操作,确定受该数据变化操作影响的节点的列表,并确定发送了更新请求消息的节点是否被包含在所确定的节点的列表中。
3.如权利要求1所述的方法,其中,所述格式化包括:
在文本文档中保存所述至少一个操作。
4.如权利要求1所述的方法,其中,所述确定一组操作包括在前一个更新消息请求之后递送至所述中心数据库的操作。
5.如权利要求1所述的方法,其中,所述应用程序模式中的至少一个数据表包括至少一个主键和至少一个外部键;以及,所述确定分区包括:确定至少一个主键是否等于至少一个外部键。
6.如权利要求1所述的方法,其中,所述分区包括用于所述节点的一个用户、用户组或用户组的子集的数据。
7.如权利要求1所述的方法,进一步包括:
确定数据变化被递送至所述中心服务器***的频率;
基于所述频率,确定可操作所述节点来发送下一个更新请求消息的时间;
将确定的所述时间发送至所述节点。
8.一种用于复制数据的中心服务器***,包括:
接收器,其被配置成从节点接收更新请求消息,其中,所述更新请求消息包括节点识别、用户识别和应用程序识别;其中,所述节点包括计算装置、因特网浏览器以及数据库;以及其中,所述应用程序识别用于识别数据库应用程序;
存储器,其被配置成存储应用程序模式和用于描述对所述数据库应用程序进行的数据变化的一组操作;
处理器,其被配置成基于所述用户识别而确定所述应用程序模式的分区;
所述处理器进一步被配置成确定与所述分区相关的至少一个操作并检索所述至少一个操作;以及
发射器,其被配置成将所述至少一个操作发送至所述节点。
9.如权利要求8所述的***,其中,所述处理器,通过评估所述一组操作中的每个操作、对于数据变化操作确定受该数据变化操作影响的节点的列表、并确定发送了更新请求消息的节点是否被包含在所确定的节点的列表中,来确定与所述分区相关的至少一个操作。
10.如权利要求8所述的***,其中,所述处理器进一步被配置成在文本文档中存储所述至少一个操作。
11.如权利要求8所述的***,其中,所述应用程序模式中的至少一个数据表进一步包括至少一个主键和至少一个外部键;以及其中,所述处理器通过确定至少一个主键是否等于至少一个外部键而确定所述分区。
12.如权利要求8所述的***,其中,所述分区包括用于所述节点的一个用户、用户组或用户组的子集的数据。
13.如权利要求8所述的***,其中:
所述处理器进一步被配置成确定所述数据变化被递送至所述中心服务器***的频率,并且基于所述频率确定可操作所述节点来发送第二个更新请求消息的时间;以及
其中,所述发射器被进一步配置成将确定的所述时间发送至所述节点。
14.一种检索来自中心服务器***的数据的***,包括:
用于接收来自节点的更新请求消息的装置,其中,所述更新请求消息包括节点识别、用户识别和应用程序识别,并且其中,所述节点包括计算装置、因特网浏览器以及数据库,以及其中,所述应用程序识别用于识别数据库应用程序;
用于基于所述应用程序识别,访问中心数据库服务器中的应用程序模式的装置;
用于基于所述用户识别,确定所述应用程序模式的分区的装置;
用于确定用于描述对所述数据库应用程序进行的数据变化的一组操作的装置;
用于从所述中心数据库服务器中用于变化所述分区中数据的所述一组操作中,检索至少一个操作的装置;
用于在更新响应消息中包括所述至少一个操作的装置;以及
用于将所述更新响应消息传送至所述节点的装置。
15.如权利要求14所述的***,其中,用于确定一组操作的装置包括:
用于对于数据变化操作确定受该数据变化操作影响的节点的列表,并确定发送了更新请求消息的节点是否被包含在所确定的节点的列表中的装置。
16.如权利要求14所述的***,其中,用于格式化的装置包括:
用于在文本文档中保存所述至少一个操作的装置。
17.如权利要求14所述的***,其中,用于确定一组操作的装置包括在前一个更新消息请求之后递送至所述中心数据库的操作。
18.如权利要求14所述的***,其中,所述应用程序模式中的至少一个数据表包括至少一个主键和至少一个外部键;以及,用于确定分区的装置包括:用于确定至少一个主键是否等于至少一个外部键的装置。
19.如权利要求14所述的***,其中,所述分区包括用于所述节点的一个用户、用户组或用户组的子集的数据。
20.如权利要求14所述的***,进一步包括:
用于确定数据变化被递送至所述中心服务器***的频率的装置;
用于基于所述频率,确定可操作所述节点来发送下一个更新请求消息的时间的装置;
用于将确定的所述时间发送至所述节点的装置。
CN201180039435.1A 2010-08-09 2011-08-01 移动设备上的数据共享 Active CN103140850B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/852,948 US9977819B2 (en) 2010-08-09 2010-08-09 Sharing data on mobile devices
US12/852,948 2010-08-09
PCT/US2011/046111 WO2012021319A1 (en) 2010-08-09 2011-08-01 Sharing data on mobile devices

Publications (2)

Publication Number Publication Date
CN103140850A CN103140850A (zh) 2013-06-05
CN103140850B true CN103140850B (zh) 2016-12-21

Family

ID=45556901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180039435.1A Active CN103140850B (zh) 2010-08-09 2011-08-01 移动设备上的数据共享

Country Status (4)

Country Link
US (1) US9977819B2 (zh)
EP (1) EP2603867B1 (zh)
CN (1) CN103140850B (zh)
WO (1) WO2012021319A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037714B2 (en) * 2011-08-23 2015-05-19 Bank Of America Corporation Cross-platform application manager
EP2575322B1 (en) 2012-06-13 2016-09-28 Huawei Device Co., Ltd. Method, user equipment, server, and device for sharing information
US9087020B1 (en) * 2012-07-05 2015-07-21 A9.Com, Inc. Managing and retrieving content from a shared storage
CN103024025A (zh) * 2012-12-07 2013-04-03 康佳集团股份有限公司 一种智能设备管理与共享应用信息的方法和***
CN109977086B (zh) 2013-11-29 2023-09-01 华为终端有限公司 终端间应用共享的方法和终端
CN109726224B (zh) * 2019-01-03 2021-09-17 苏州达家迎信息技术有限公司 应用程序间的数据共享方法及装置、终端、服务器及介质
KR102218356B1 (ko) * 2019-01-11 2021-02-22 주식회사 윤디자인그룹 입력되는 글자에 따른 폰트 관리 수행 방법
KR102218355B1 (ko) * 2019-01-11 2021-02-22 주식회사 윤디자인그룹 입력되는 글자에 따른 폰트 관리 수행 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101395602A (zh) * 2005-12-29 2009-03-25 亚马逊科技公司 用于分布式文件存储和索引服务的方法和装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998040805A2 (en) * 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6738766B2 (en) * 2000-02-02 2004-05-18 Doongo Technologies, Inc. Apparatus and methods for providing personalized application search results for wireless devices based on user profiles
CA2310578A1 (en) * 2000-06-02 2001-12-02 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for synchronizing not-logged application temporary tables in a multi-node relational database management system
US20020059280A1 (en) * 2000-09-25 2002-05-16 Brian Slesinsky Automated table installer for multiple heterogenous databases
CA2414246C (en) 2001-05-14 2014-01-28 Ntt Docomo, Inc. System for managing program stored in storage block of mobile terminal
US6829608B2 (en) * 2001-07-30 2004-12-07 International Business Machines Corporation Systems and methods for discovering mutual dependence patterns
US7076567B1 (en) * 2002-04-25 2006-07-11 Oracle International Corporation Simplified application object data synchronization for optimized data storage
US20030208416A1 (en) * 2002-05-06 2003-11-06 Joshua Watters System and method for recording owner information into an element containing a unique signature, which may be affixed to property of owner for purposes of identifying owner of lost, misplaced or discovered objects
US6909721B2 (en) 2002-10-31 2005-06-21 Nokia Corporation Device detection and service discovery system and method for a mobile ad hoc communications network
US7366460B2 (en) * 2003-01-23 2008-04-29 Dexterra, Inc. System and method for mobile data update
US8112449B2 (en) * 2003-08-01 2012-02-07 Qwest Communications International Inc. Systems and methods for implementing a content object access point
US7194449B2 (en) * 2003-09-23 2007-03-20 International Business Machines Corporation Method and system for optimizing snow flake queries
US20070190978A1 (en) * 2005-01-13 2007-08-16 Ianywhere Solutions, Inc. System and Methodology for Extending Enterprise Messaging Systems to Mobile Devices
US7636739B2 (en) * 2005-06-30 2009-12-22 Microsoft Corporation Method for efficient maintenance of XML indexes
US7224960B2 (en) 2005-07-12 2007-05-29 Kyocera Wireless Corp. System and method for updating wireless applications
JP4719034B2 (ja) * 2006-03-07 2011-07-06 株式会社日立製作所 センサネットシステム、基地局及びセンシングデータの中継方法
US7774356B2 (en) * 2006-12-04 2010-08-10 Sap Ag Method and apparatus for application state synchronization
US8606854B2 (en) * 2007-01-08 2013-12-10 Apple Inc. System and method for opportunistic image sharing
US20090037492A1 (en) 2007-07-31 2009-02-05 Ahmad Baitalmal Framework for Synchronizing Applications
US7836037B2 (en) * 2007-10-04 2010-11-16 Sap Ag Selection of rows and values from indexes with updates
US8019347B2 (en) * 2007-11-21 2011-09-13 Qualcomm Incorporated Method and apparatus for RAN assisted location update
CN101516131B (zh) 2008-02-18 2012-04-04 华为技术有限公司 一种数据同步的方法、***和装置
US8023934B2 (en) * 2008-03-28 2011-09-20 Ianywhere Solutions, Inc. Synchronizing communications and data between mobile devices and servers
US20090307300A1 (en) 2008-06-10 2009-12-10 Iskoot Inc. Method and system for executing an application on a mobile device
US8214329B2 (en) * 2008-08-26 2012-07-03 Zeewise, Inc. Remote data collection systems and methods
US20100205529A1 (en) * 2009-02-09 2010-08-12 Emma Noya Butin Device, system, and method for creating interactive guidance with execution of operations
US9082105B2 (en) * 2009-09-08 2015-07-14 Ricoh Co. Ltd. Paper-like forms processing system and method
EP2482946A1 (en) * 2009-09-30 2012-08-08 Zynga Inc. Apparatuses, methods and systems for an engagement-tracking game modifier
CN101799826B (zh) * 2010-03-04 2011-09-14 中国电子科技集团公司第二十八研究所 一种基于虚拟视图的网络化数据共享***及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101395602A (zh) * 2005-12-29 2009-03-25 亚马逊科技公司 用于分布式文件存储和索引服务的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SyncML Sync Protocol,Version 1.1;Ericsson et al.;《SyncML Sync Protocol,Version 1.1》;20020215;1-62页 *

Also Published As

Publication number Publication date
CN103140850A (zh) 2013-06-05
WO2012021319A1 (en) 2012-02-16
US9977819B2 (en) 2018-05-22
EP2603867A4 (en) 2014-12-17
US20120036199A1 (en) 2012-02-09
EP2603867B1 (en) 2019-07-24
EP2603867A1 (en) 2013-06-19

Similar Documents

Publication Publication Date Title
CN103140850B (zh) 移动设备上的数据共享
CN105324769B (zh) 用于产生用于自动数据库迁移的脚本集的解决方案
CN102754072B (zh) 规定用户界面元素
US20170160880A1 (en) System and Method for Integrating Microservices
CN102770849B (zh) 当应用基于用户的安全性时优化数据高速缓存
JP6880131B2 (ja) データ処理用の方法、装置及びシステム
CN107004024A (zh) 上下文驱动的多用户通信
US11755461B2 (en) Asynchronous consumer-driven contract testing in micro service architecture
CN106796526A (zh) Json样式表语言变换
KR102441422B1 (ko) 개인 정보 보호가 가능한 개인화된 질의응답 시스템, 클라우드 서버 및 이의 공통 신경망 모델 제공 방법
CN109074265A (zh) 移动云服务的预先形成的指令
US11163586B1 (en) Automated configuration of application program instance
CN103092906A (zh) 用于扩展节点的多客户通用保持
Amaxilatis et al. Advancing experimentation-as-a-service through urban IoT experiments
WO2016097943A1 (en) Access operation with dynamic linking and access of data within plural data sources
EP2965492A1 (en) Selection of data storage settings for an application
Chauhan et al. Introducing Microsoft Azure HDInsight
JP6865942B1 (ja) プログラム、方法、情報処理装置、及びシステム
CN111143408B (zh) 一种基于业务规则的事件处理方法和装置
KR101939199B1 (ko) 로컬 단말 및 이를 포함하는 동기화 시스템
KR20130126012A (ko) 비즈니스 인텔리전스의리포트 제공 방법 및 장치
CN110457318A (zh) 区块链中数据字段的更新方法、装置、介质、电子设备
CN110222032A (zh) 一种基于软件数据分析的通用事件模型
US20150149259A1 (en) Enterprise performance management planning model for an enterprise database
CN104156358B (zh) 一种用于数据库的表的批量读取方法、装置和***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant