CN103620599B - 云存储 - Google Patents

云存储 Download PDF

Info

Publication number
CN103620599B
CN103620599B CN201280027149.8A CN201280027149A CN103620599B CN 103620599 B CN103620599 B CN 103620599B CN 201280027149 A CN201280027149 A CN 201280027149A CN 103620599 B CN103620599 B CN 103620599B
Authority
CN
China
Prior art keywords
data item
application
equipment
data
affairs
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
CN201280027149.8A
Other languages
English (en)
Other versions
CN103620599A (zh
Inventor
D·B·吉安保罗
D·德阿特勒
M·G·沃特森
M·J·里德
C·加洛韦
B·C·特朗布尔
N·W·C·吉勒特
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.)
Apple Inc
Original Assignee
Apple Computer 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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN103620599A publication Critical patent/CN103620599A/zh
Application granted granted Critical
Publication of CN103620599B publication Critical patent/CN103620599B/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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Human Computer Interaction (AREA)

Abstract

本发明的方法、系统和装置,以及编码在计算机存储介质上的计算机程序,用于数据存储。在一个方面中,方法包括以下动作:识别来自应用的运行中查询;根据一个或多个应用特定访问策略确定多个数据项中该应用拥有查看许可的一个或多个数据项;以及将该一个或多个数据项呈现给该应用,而不呈现该多个数据项中的其他数据项。

Description

云存储
相关申请信息
本申请要求2011年6月3日递交的关于云存储的第61/493,390号美国专利申请的优先权,这里通过引用并入该美国专利申请。
技术领域
本说明书涉及数据存储。
背景技术
用户可将数据存储在远程位置,例如网络存储位置。用户还可在设备之间传送数据。通常,用户通过文件传送或共享来与他人共享数据。例如,用户可识别特定的文件来例如通过电子邮件或使用文件传送协议发送给他人。文件共享允许例如网络上的其他用户访问文件,然而文件通常保持在其原始位置。或者,他人可从其原始存储位置查看文件,但通常能够修改文件的用户只有查看文件的那个。
发明内容
本说明书描述了与数据存储和同步有关的技术。
一般地,本说明书中描述的主题的一个方面可实现在包括如下动作的方法中:识别来自应用的运行中查询;根据一个或多个应用特定访问策略确定多个数据项中该应用拥有查看许可的一个或多个数据项;以及将该一个或多个数据项呈现给该应用,而不呈现该多个数据项中的其他数据项。
此方面的其他实施例包括相应的系统、装置和记录在计算机存储设备上的计算机程序,它们各自被配置为执行所述方法的操作。
这些和其他实施例可各自可选地包括以下特征中的一个或多个。确定一个或多个数据项包括:确定与该多个数据项中的每一个相关联的标识符是否匹配与该应用相关联的标识符。与该应用相关联的标识符唯一地标识该应用。与该应用相关联的标识符标识了对关联数据项拥有共享访问权的应用家族。确定数据项的操作是响应于从其他设备接收到关于数据项的通知而进行的。
一般地,本说明书中描述的主题的一个方面可实现在包括一个或多个计算设备的装置中,该一个或多个计算设备被配置为提供:多个应用;同步管理器,该同步管理器被配置为将数据项上传到远程存储并且接收由其他设备上传到数据存储的数据项;以及访问管理器,访问管理器被配置为根据一个或多个应用特定访问策略来确定对查看该多个应用中的每一个可用的数据项的许可。
一般地,本说明书描述主题的一个方面可实现在包括如下动作的方法中:从设备接收数据项;确定用于存储该数据项的容器,该容器是专用于该用户账号、并且是专用于与该数据项相关联的应用;将该数据项存储在该容器中;以及向与该用户账号相关联的一个或多个其他设备发送关于该数据项的通知。此方面的其他实施例包括相应的系统、装置和记录在计算机存储设备上的计算机程序,它们各自被配置为执行所述方法的操作。
一般地,本说明书描述主题的一个方面可实现在包括如下动作的方法中:从一个或多个设备接收一个或多个数据库事务日志文件,数据库事务日志文件各自标识了对数据库的离散改变,数据库事务日志文件被接收以取代数据库;以及将事务日志文件通知给多个相关设备中的每一个。此方面的其他实施例包括相应的系统、装置和记录在计算机存储设备上的计算机程序,它们各自被配置为执行所述方法的操作。
这些和其他实施例可各自可选地包括以下特征中的一个或多个。该方法还包括存储所述事务日志文件。该方法还包括响应于来自该多个设备中的一设备的请求而提供一个或多个所述事务日志文件。
一般地,本说明书描述主题的一个方面可实现在包括如下动作的方法中:接收多个事务日志,每个事务日志标识了对数据库的离散改变;确定在该多个事务日志中的两个或更多事务日志文件之间存在冲突;确定冲突的事务日志的两个或更多事务是否能够被合并;如果两个或更多事务能够被合并,将合并的事务应用到该数据库;以及如果两个或更多事务不能被合并,确定获胜的事务并将该事务应用到该数据库。此方面的其他实施例包括相应的系统、装置和记录在计算机存储设备上的计算机程序,它们各自被配置为执行所述方法的操作。
这些和其他实施例可各自可选地包括以下特征中的一个或多个。合并事务包括确定共同祖先数据库并执行三方合并。在没有用户交互的情况下解决冲突。
本说明书中描述的主题的特定实施例可被实现来实现以下优点中的一个或多个。可根据基于应用的策略来安全地存储数据。应用只能从云存储中查看和读取被授予许可的数据项。在每个客户端设备可以利用基于应用的策略来执行访问控制。
可利用事务日志来同步数据库,无需在设备之间在原子级同步整个数据。个体数据库事务之间的冲突可在每个相应客户端设备处利用冲突的事务和共同祖先数据库来解决。系统或应用发表的策略可自动地解决文件内的记录之间的冲突,无需用户交互。客户端设备可利用同步后的材料从零开始重建数据库,使新的同伴设备上线,或解决与本地文件之间的问题。
本说明书描述主题的一个或多个实施例的细节在附图和以下描述中记载。主题的其他特征、方面和优点将从描述、附图和权利要求中变得清楚。
附图说明
图1是示出用于安全地存储数据项的示例系统的图。
图2是示出用于同步数据项的示例系统的图。
图3是用于安全地存储和同步数据项的示例方法的流程图。
图4是用于上传和取回应用数据项的示例方法的流程图。
图5是示出用于存储数据库事务的示例系统的图。
图6是用于同步数据库的示例方法的流程图。
图7是用于同步数据库的示例方法的流程图。
图8是用于管理冲突的示例方法的流程图。
图9是示例系统体系结构。
在各幅图中相似的标号和命名指示相似的元素。
具体实施方式
描述了用于以应用为中心的安全存储技术。与特定应用相关联的数据项(例如文件)可被存储在一个或多个远程位置(例如云存储)中,并与其他设备同步。每个应用只能查看存储在远程位置的其拥有许可的数据项。每个客户端设备上的访问管理器实施应用特定访问策略。可例如利用隔离的容器来为与用户或用户账号相关联的每个应用保护远程位置处的存储。
当应用保存数据项时,数据项可被同步到远程存储位置。远程存储位置将该数据项通知给与用户相关联的其他设备。个体设备上的访问管理器基于用于特定应用的访问策略和从这些应用接收到的任何特定查询来确定是否要将数据项通知给这些应用。如果应用被通知并且请求读取数据项,该数据项从远程存储中取回。
还描述了用于数据库同步的技术。可在客户端设备之间同步数据库,而无需在原子级将整个数据库移动到远程存储位置、或在同伴设备之间移动整个数据库。事务日志文件标识了相对于特定基线状态而言对数据库的改变。事务日志文件被同步,使得当事务日志文件中标识的事务被应用到本地数据库时,该数据库变得同步。当在事务日志文件之间检测到冲突时,确定事务是否能够被合并、然后被应用到数据库。如果事务不能被合并,根据特定的冲突解决策略来确定冲突获胜者。
图1是示出安全地存储数据项的示例系统100的图。系统100包括第一设备102、第二设备104、第三设备106和远程存储位置108。
第一设备102、第二设备104、第三设备106和远程存储位置108利用一个或多个网络110通信地耦合在一起。一个或多个网络110可包括有线网络和无线网络两者。网络110例如可以是局域网、广域网或因特网的一部分。
第一设备102、第二设备104和第三设备106例如可包括桌面型或膝上型计算设备、移动设备、平板设备、个人数字助理或其他计算设备。具体地,如图1所示,设备102和104各自与第一用户或用户账号112相关联。类似地,第三设备106以及未示出的一个或多个其他设备与第二用户或用户账号114相关联。远程存储位置108还可耦合到与一个或多个不同的用户或不同的用户账号相关联的许多其他设备(未示出)。
远程存储位置108可以是单个存储位置或多个存储位置。例如,服务器、网络寻址存储位置、计算设备的集合或者作为呈现虚拟化网络存储的云存储系统的一部分。
远程存储位置108包括分开的逻辑容器,用于存储来自不同用户/用户账号和应用组合的数据。一些示例中,逻辑容器可以是文件系统中的目录,或者数据结构,或者另一种数据组织单元。例如,第一用户/用户账号112可在远程存储位置108上具有容器116,与该用户或用户账号相关联的每个单个应用都有一个容器116。类似地,第二用户/用户账号114可具有用于相应应用的容器118。从个体设备(例如,第一设备102)接收的应用数据项被存储在该应用的相应容器中。远程存储位置108可包括存储管理器,该存储管理器创建并管理容器,并且为与用户相关联的设备生成通知。
第一设备102包括一个或多个应用120、同步管理器122和访问管理器124。一个或多个应用120可包括各种类型的应用,例如生产力应用、系统应用、游戏,等等。每个应用可与唯一的键值或其他标识符相关联,用于标识该应用并且标识该应用的特定访问许可。在一些实现方式中,一个或多个应用120被封装(sandboxed),使得其与每个其他应用相隔离。
同步管理器122管理将数据项发送到远程存储位置108以及从远程存储位置108接收信息(例如,数据项或通知),这将在下文中更详细描述。访问管理器124响应于来自应用120中的特定应用的查询而将可用数据项呈现给相应的应用。访问管理器124应用一个或多个访问策略来确定什么数据项将对应用120中的特定应用可见。
第二设备104类似地包括一个或多个应用126、同步管理器128和访问管理器130。应用120和应用126可包括一个或多个相同应用。第三设备106类似地包括一个或多个应用132、同步管理器134和访问管理器136。然而,第三设备106与第二用户或用户账号114相关联。
图2是示出在设备之间同步数据项的示例系统200的图。系统200包括第一设备202、第二设备204和云存储206。
第一设备202包括应用208、同步管理器210和访问管理器212。类似地,第二设备204包括应用214、同步管理器216和访问管理器218。各个同步管理器、访问管理器和应用可与对图1描述的那些类似。
当数据项被应用208中的应用存储时(例如,通过生成新文件或更新现有文件),同步管理器210检测该数据项(例如,通过由设备内核提供的事件通知)并将该数据项发送到云存储206。云存储206将该数据项存储在云存储206内的相应应用容器中。云存储206还将该数据项通知给第二设备204。第二设备上的同步管理器216接收该通知。同步管理器216通知访问管理器218所接收的通知,访问管理器218控制哪些应用将能够看到该数据项。
访问管理器218根据一个或多个访问策略确定拥有读取数据项的许可的应用。数据项的通知可包括标识符,该标识符例如指示与该数据项相关联的一个或多个应用(例如,通知可包括生成所述数据项的应用的相应应用键值)。
访问管理器218还确定是否存在来自应用的查询,该应用请求知晓新数据项。例如,相应的应用可发起(例如,一旦被安装在第二设备204上)对与该应用相关联的新数据项的运行中查询。如果存在对数据项的查询,访问管理器218将该数据项通知给相应的应用214。特定应用214查看可用的一个或多个数据项并且可在需要时请求数据项。具体地,数据项不需要被从云存储206取回以呈现给应用。一旦该应用请求读取访问,数据项就可被远程地取回或读取。数据项的位置对于应用可以是透明的(例如,数据项在其位于云存储中时可以看起来是位于本地的)。
图3是安全地存储和同步数据项的示例方法300的流程图。方法300可由一个或多个计算设备执行,例如由图1的设备和远程存储位置执行。
接收应用数据项以用于存储和/或同步(步骤302)。响应于应用数据项被存储在特定设备本地,接收该数据项。例如,给定的应用可将文件保存到设备上的存储设备。可响应于用户动作(例如,用户对应用数据的修改),存储数据项。数据项可被保存为新文件或先前存储的数据项的修改版本。例如,字处理应用的用户可创建新文件或修改现有文件。在一些实现方式中,同步管理器(例如,同步管理器122)识别已被存储的新的或经改变的数据项。例如,同步管理器可监视文件系统事件以识别数据项。在一些其他实现方式中,个体应用通知同步管理器。同步管理器可将数据项发送到远程存储位置(例如,远程存储位置108)。
接收数据项可包括:接收数据项的数据以及关于数据项的附加信息或元数据。附加信息可包括标识与数据项相关联的应用(例如,生成了数据项的应用)的信息。在一些其他实现方式中,附加信息标识了拥有访问数据项的许可的应用。标识可包括标识特定应用或一组相关应用的唯一键值。例如,特定应用开发者可生成多个相关应用(例如,该开发者或公司开发的一套应用),该多个相关应用可共享数据项。
数据项被存储在安全的应用容器中(步骤304)。例如,远程存储位置(例如云存储)对于与给定的用户或用户账号相关联的每个应用可包括单独的容器。这样,每个应用和每个用户的数据项可被分开存储在远程存储位置。此外,在一些实现方式中,每个容器受保护和/或被加密。
通知同伴设备(步骤306)。为了在同伴设备(例如与用户或用户账号相关联的多个设备)间同步数据项,将新数据项通知给关联的设备。例如通过用户将设备链接到同伴的注册过程把设备关联起来。发送通知,以使得实际数据项不需要被发送到个体同伴设备,除非被请求。然而,在一些替换实现方式中,数据项本身可代替通知被发送到同伴设备。
一旦被通知,特定的同伴设备就可处理通知。处理包括确定先前是否标识了所述数据项(例如,作为存储在远程位置的在先数据项的早先通知的一部分)。处理还可包括例如利用通知中包括的关于数据项的信息或元数据(例如,包括标识应用的键值)来确定与数据项相关联的一个或多个应用。各个同伴设备可将数据项通知给关联的应用。
响应于请求,将数据项提供给设备(步骤308)。例如,设备的特定应用可立即请求读取访问。或者,在将数据项留在远程存储位置上的同时,应用存储数据项的可用性。数据项可在需要时被取回,例如响应于打开数据项的请求被取回。例如,用户可请求在应用内打开特定数据项。应用随后向访问管理器请求该数据项,而访问管理器向远程存储位置请求该数据项。
图4是上传和取回应用数据项的示例方法400的流程图。方法400可由一个或多个计算设备执行,例如由图1的第一设备102执行。
从某个应用接收查询(步骤402)。例如可在安装或首次设置所述应用时接收所述查询。或者,可在配置所述应用与其他设备同步时接收查询。查询可以是保持未决(pending)的运行中查询(runningquery),并且可在应用在设备上的寿命期间被响应(例如,直到应用被禁用或删除为止)。
验证对与应用相关联的数据项的访问(步骤404)。唯一标识符(例如,特定的应用键值)可被识别并用于确定所述应用有权访问什么数据项或什么类型的数据项。例如,所述应用可提供可被匹配到特定应用访问策略的键值。
接收包括与所述应用相关联的数据项的关于新数据项的通知(步骤406)。特定的同伴设备将该数据项通知给所述应用(步骤310)。具体地,访问管理器(例如,访问管理器124)可确定哪个或哪些应用拥有访问数据项的许可。可根据一个或多个访问策略来确定访问数据项的许可。访问策略可基于应用的键值或其他唯一标识符来为特定应用识别许可。可在安装所述应用之前验证标识符。可将与数据项相关联的信息与由访问策略定义的许可相比较,以确定有权访问数据项的应用。在一些实现方式中,只有单个应用拥有访问该应用的数据项的许可。在一些其他实现方式中,在特定的指定应用之间共享一些数据项。
在一些实现方式中,即使某个应用拥有访问数据项的许可,也不发送通知,除非存在应用查询。例如,应用查询可请求任何新数据项。在一些实现方式中,查询是在所述应用被首次安装在设备上或首次与其他设备同步时发起的运行中查询。
所述应用只被通知与该应用相关联的数据项(步骤408)。应用的通知只允许用户查看该应用有权访问的数据项。从而,例如,如果接收到与其他应用相关联的其他数据项,该应用不能查看这些数据项,除非其拥有必要的许可。
接收读取请求并呈现相应的数据(步骤410)。所述应用能够立即请求读取访问。或者,在将数据项留在远程存储位置的同时,所述应用存储数据项的可用性。数据项可在需要时被取回,例如响应于打开数据项的请求被取回。例如,用户可请求在应用内打开特定数据项。该应用随后向访问管理器请求该数据项,访问管理器向远程存储位置请求该数据项。
图5是示出存储数据库事务的示例系统500的图。
系统500包括第一设备502和第二设备504。第一设备502和第二设备504与第一用户506相关联。第一设备502和第二设备504通过网络510耦合到远程存储位置508。
第一设备502和第二设备504例如可包括桌面型或膝上型计算设备、移动设备、平板设备、个人数字助理或其他计算设备。
网络510例如可以是局域网、广域网或因特网的一部分。
第一设备502包括数据库512、事件监视器514和事务缓存516。第二设备504类似地包括数据库518、事件监视器520和事务缓存522。
当用户对数据库512作出改变时,这些改变可被事件监视器514检测到。例如,用户可修改数据库的与特定行和列相对应的单元。这些改变随后可作为个体事务日志被写入到事务缓存516中。事务日志可在被接收到时被发送到远程存储位置508,或者作为根据特定标准周期性发送的一批一个或多个事务文件的一部分周期性地发送到远程存储位置508。类似地,对数据库518的改变可被事件监视器520检测到并被写入到存储在事务缓存522中的事务日志。事务日志可被发送到远程存储位置508。
远程存储位置508对于包括第一用户506在内的多个用户中的各个用户提供用于数据库信息的单独存储。具体地,图5示出了第一用户的事务日志524和第二用户的事务日志526。远程存储位置508可为每个用户安全地存储事务日志。
此外,在一些实现方式中,虽然数据库512和数据库518分别被本地存储在第一设备102和第二设备104,相应的数据库不被存储在远程存储位置508中。相反,提供到远程存储位置508的事务日志可被同步到第一设备502和第二设备504中的每一个。从而,例如,对大数据库中的单元的改变可被高效地同步,无需在设备与远程存储位置之间发送整个大数据库。
在特定设备内,事务日志可被应用到本地存储的数据库以便在用户间同步数据库。例如,来自第一设备502的事务日志可与第二设备504同步。第二设备504接收的事务日志可被应用到数据库518以便将数据库518与数据库512同步,无需整体传送各数据库。
图6是同步数据库的示例方法600的流程图。方法600可由一个或多个计算设备执行,例如由图5的第一设备502执行。
每个数据库事务被存储在事务日志文件中(步骤602)。事务日志文件针对特定的事务封装数据库的状态,以便该事务可被撤消或重复。事务日志文件对于特定的数据库事务提供单个离散容器。事务可包括编辑、添加或删除整个行或列以及个体数据库单元。事务可孤立地影响单个单元,或者与其他单元相联系,所述其他单元与被编辑的单元的内容相关。
事务日志文件还提供对数据库发生的事务的时间排序的历史。在一些实现方式中,每个事务日志可包括指示事务何时发生的时间戳。在一些其他实现方式中,事务日志文件包括改变向量。改变向量允许设备读取事务日志文件,以确定生成该事务日志的设备先前在生成日志时看到了(例如,无论是在设备处最初或通过先前的同步来应用)哪些其他事务。利用时间线和事务日志数据本身,可在具有与发生事务的数据库共同状态的另一数据库上重新创建这些事务。
一个或多个事务日志文件被推送到远程存储位置(步骤604)。事务日志文件可在其被数据库存储时被个体发送,或者根据特定的标准被周期性地成批发送。例如,个体事务日志文件可被存储在事务缓存(例如,事务缓存516)中。标准可包括个体事务日志文件的数目或持续时间。例如,标准可设定缓存中的事务日志文件的阈值数目来触发到远程存储位置的上传。类似地,标准可指定上传事务日志文件的周期时间量或时间范围(例如,每小时或在夜间)。当满足标准时,缓存中的事务日志文件可被发送到远程存储位置。标准可被组合,例如,即使在缓存中尚未存储指定数目的事务日志文件,时间限也可触发事务日志文件的发送。
接收由另一设备提供到远程存储位置的事务日志文件的通知(步骤606)。具体地,通知某个设备(例如,第一设备502)其他设备(例如,第二设备504)上传到远程存储位置的事务日志文件。例如,设备可接收事务日志文件的列表。此列表可标识接收到的所有事务日志文件或者从指定时间点起的所有事务日志文件,例如从上次通知或共同数据库状态起的所有事务日志文件。该列表可包括设备上传的事务日志文件。在一些实现方式中,对于特定事务日志文件的通知不是按时间顺序接收的。这样,设备可等待,直到所有事务日志文件被识别为止。
改变向量可用于确定是否有缺失的事务。改变向量对于设备已知的每个事务可包括一个标识符。具体地,每个事务可具有标识创建了该事务的设备以及该特定事务的标识符。改变向量封装了作为作者的同伴设备从其他设备(其导入了其他设备的日志)看到的事务。例如,对于同伴设备A、B和C,每个同伴设备可维护其自己的计数器(例如,事务#1、事务#2,等等)。建立全局排序是困难的,因此,改为按任何同伴在其创建新日志时看到了哪些事务来确定排序。例如,同伴设备C可使用的改变向量为(同伴设备C事务#42、同伴设备A事务#12、同伴设备B事务#101)。如果需要附加处理,例如来打破平局或者确认改变向量条目一致,还可包括时间戳。
由事务日志文件标识的事务被应用到数据库(步骤608)。事务日志文件提供在给定先前事务之后的状态的情况下重新创建事务所必需的所有状态信息。可确定数据库的当前状态。当前状态指示开始应用哪个事务日志文件到数据库。例如,上次通过应用接收到的事务日志文件来修改数据库可建立数据库的状态,从该状态可应用新的事务日志文件。在一些实现方式中,在所有相关设备间周期性地建立基线数据库状态(baseline database state),以便从共同的基线状态来应用事务。
在识别要应用到数据库的事务之后,可向远程存储位置请求相应的事务日志文件。一旦被取回,事务日志文件就可被用于在数据库上按顺序重放每个事务。
图7是同步数据库的示例方法700的流程图。方法700可由一个或多个计算设备执行,例如由图5的远程存储位置508执行。
从一个或多个设备接收一个或多个数据库事务日志(步骤702)。可从各种设备周期性地上传事务日志文件。设备的群组可与特定用户或用户账号相关联。在一些实现方式中,从各个不同的用户或用户账号相关联的许多设备群组接收数据库事务日志。
事务日志被存储(步骤704)。对于与特定用户或用户账号相关联的每个设备,远程存储位置可包括单独的存储位置。上传的事务日志文件可被存储到远程存储位置的相应位置。在一些实现方式中,这是子目录或容器。从所有相关联的设备上传的所有事务日志文件的组合构成数据库的远程存储版本,因为可应用所有这些事务来重新创建数据库。
事务日志的通知被发送到相应的一个或多个设备(步骤706)。在一些实现方式中,对于给定的用户/用户账号,周期性通知被广播到与一个或多个接收到的事务日志相关联的每个设备。通知可在从同伴设备接收到每个个体事务日志文件时被发送或根据指定的计划被发送。在一些实现方式中,通知提供了数据库接收的所有事务日志文件的运行列表。在一些其他实现方式中,通知提供了在特定时间点之后接收的事务日志文件的列表。该时间点可基于发送到该设备的最后一次通知,或最后建立的基线数据库。
响应于请求而将一个或多个事务日志文件提供给设备(步骤708)。个体设备可响应于接收到的通知而请求一个或多个事务日志文件。
可选地,周期性地存储基线数据库(步骤710)。具体地,在一些实现方式中,周期性地建立基线数据库状态。数据库可被存储在例如远程存储位置上。随后可维护事务日志文件,并且相对于此基线数据库发送通知。或者,在一些其他实现方式中,只维护接收到的事务日志文件的运行集合。
图8是管理冲突的示例方法800的流程图。方法800可由一个或多个计算设备执行,例如由图5的第一设备502或第二设备504执行。
接收事务日志(步骤802)。具体地,可从两个或更多个不同设备接收事务日志文件。确定是否存在冲突(步骤804)。对冲突的确定可基于对事务日志文件的比较。比较可用于确定由每个事务应用到数据库的改变的性质。例如,如果在第一设备的第一事务中有对列名称的改变,并且在来自不同设备的第二事务中有对同一列名称的另一改变,则发生冲突。在一些实现方式中,改变数据库的同一行的两个事务被认为是冲突。
在一些替换实现方式中,可缓存关于事务日志文件的内容的元数据。这可提高冲突检测的速度。例如,元数据可标识被事务改变的行,以便能够迅速地识别冲突的事务日志。
如果没有冲突,事务被应用到数据库(步骤806)。一旦应用了事务,数据库就可具有与应用到基线数据库的事务总和相对应的状态。
如果存在冲突,确定冲突的事务是否能被合并(步骤808)。例如,两个或更多事务可对数据库的同一行作出改变。然而,如果个体单元不是彼此依赖、并且对行的改变发生不同列,则每个事务可被单独应用。相反,对数据库的同一单元的两个事务可能因为这些改变彼此矛盾而不可被合并到一起。
在一些实现方式中,同一单元被改变了两次的冲突事务可被解决为优先使用更晚的改变(例如,利用改变向量和时间戳),同时,最小化被更晚的改变所决定(trumped outright)的数据量。这样,在没有用户干预或应用开发者工作的情况下,可执行精细的合并。
这种冲突最小化可对每列执行,以及针对联接表条目(针对多关系的内容)执行。作为示例,数据库可包括Group中的Person成员资格的身份。多个同伴设备可编辑Group成员资格,例如通过添加和去除成员。不同设备添加或去除不同的Person成员不产生冲突。冲突只在同一Person在不同设备之间被不同地添加或删除的情况下出现。确定哪些成员资格改变是添加或删除是相对设备的共同祖先进行的。这是“三方合并”,例如,设备#1、设备#2以及共同祖先(如设备先前一致同意的最后数据库状态),这在下文中将更详细描述。
在一些实现方式中,为了确定合并是否可发生,在冲突的事务和共同的祖先数据库状态之间进行比较。比较被用于确定是否能够执行两个事务的应用,而不在数据库内产生不能合并的其他冲突。
可利用一个或多个因素来识别共同祖先数据库。这些因素可包括要连接到远程存储位置的第一同伴设备的标识、最慢同伴设备(例如,为了识别所有同伴设备达到的共同数据库状态)以及宣布一同伴由于不活跃而死亡。利用改变向量和日志的时间戳来确定共同祖先状态以在事务中回朔到足够远,以便冲突的同伴设备达到先前一致同意的数据库状态。基线数据库对于所有同伴而言可能是返回到最远,但任何两个同伴设备可能只相差几个事务日志。它们可按反向顺序检查日志以去到它们之间的第一个未解决冲突之前的状态。另外,在一些实现方式中,冲突解决不限于两个同伴。有可能三个或更多个同伴发现它们自己处于冲突中。
如果冲突的事务能被合并,合并的事务被应用到数据库(步骤810)。一旦应用了事务,数据库就可具有与应用到基线数据库的事务总和相对应的状态。
如果冲突的事务不能被合并,在冲突的事务之间确定冲突获胜者(步骤812)。在一些实现方式中,基于与每个事务相关联的时间戳来确定冲突获胜者。例如,每个事务日志文件可包括时间戳,指示事务在相应设备上发生的时间。冲突获胜者可被选择为冲突事务的最晚改变。可以使用其他准则来确定冲突获胜者。规则中可对特定类型的事务建立优先顺序。例如,“删除”可胜过另一不同种类的改变。冲突获胜者的事务可被应用到数据库,冲突失败者的事务可被丢弃。
在一些实现方式中,对于特定数据库结构的合并策略可由数据库开发者或由用户定义。可呈现用户界面来用于输入或修改合并策略。
在一些实现方式中,可利用在远程存储位置存储的事务日志文件从被损坏的状态恢复同伴数据库。类似地,在远程存储位置存储的事务日志文件可用于使添加到远程存储位置的新用户设备的数据库处于最新状态。
在一些实现方式中,所识别的冲突起因于“ABA”问题。ABA问题是发生如下情况时的问题:即使一列的值看起来相对于共同祖先(例如A)没有改变,但实际上其已被改变了两次(从A到B再返回到A)。对此进行检测允许能够解决冲突以优先使用最晚的改变。因此,在此情况下,A看起来与共同祖先相同,但仍可比来自另一设备的新值更新近。
图9是计算机系统的示例系统体系结构900。系统体系结构900能够执行这里描述的操作。体系结构900包括一个或多个处理器902(例如,IBM PowerPC、Intel Pentium4,等等)、一个或多个显示设备904(例如,CRT、LCD)、图形处理单元906(例如,NVIDIAGeForce,等等)、网络接口908(例如,以太网、FireWire、USB,等等)、输入设备910(例如,键盘、鼠标,等等)以及一个或多个计算机可读介质912。这些组件利用一条或多条总线914(例如,EISA、PCI、快速PCI,等等)交换通信和数据。
术语“计算机可读介质”指的是参与向处理器902提供指令以便执行的任何有形介质。计算机可读介质912还包括操作系统916(例如,Linux,等等)、网络通信模块918、访问控制管理器920、同步管理器922和其他应用924。
操作系统916可以是多用户的、多处理的、多任务的、多线程的、实时的,等等。操作系统916执行基本任务,包括但不限于:识别来自输入设备910的输入;向显示设备904发送输出;保持跟踪计算机可读介质912(例如,存储器或存储设备)上的文件和目录;控制外围设备(例如,盘驱动器、打印机,等等);以及管理一条或多条总线914上的流量。网络通信模块918包括用于建立和维护网络连接的各种组件(例如,用于实现通信协议的软件,例如TCP/IP、HTTP、以太网,等等)。
访问控制管理器920和同步管理器922提供执行各种功能的各种软件组件,所述各种功能执行应用特定访问控制和数据项的同步,包括设备之间的数据库事务,如针对图1-8所描述。
本说明书描述的主题和操作的实施例可以用数字电子电路实现,或者用计算机软件、固件或硬件—包括本说明书中公开的结构及其结构等同物—实现,或者用它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例可实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质上,以供数据处理装置执行或者控制数据处理装置的操作。作为替换或附加,程序指令可被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号上,该信号被生成来编码信息以便发送到适当的接收装置,以供数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或者它们之中的一个或多个的组合,或者可被包括在计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或者它们之中的一个或多个的组合中。另外,虽然计算机存储介质不是传播的信号,但计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备),或者可被包括在一个或多个单独的物理组件或介质中。
本说明书中描述的操作可实现为由数据处理装置对存储在一个或多个计算机可读存储设备上的或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖了所有种类的用于处理数据的装置、设备和机器,例如包括可编程处理器、计算机、片上系统或前述这些项中的多个或组合。装置可包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件外,装置还可包括为所关注的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和执行环境可实现各种不同的计算模型基础设施,例如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言、声明性或过程式语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、组件、子例程、对象或者适合用在计算环境中的其他单元。计算机程序可以但不是必须对应于文件系统中的文件。程序可被存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所关注程序的单个文件中或者存储在多个协调的文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可被部署来在一个计算机或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
本说明书中描述的过程和逻辑流可通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出而执行动作,从而来执行。过程和逻辑流也可由专用逻辑电路来执行,并且装置也可实现为专用逻辑电路,专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适用于执行计算机程序的处理器例如包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。一般地,处理器将从只读存储器或随机访问存储器或者这两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括一个或多个大容量存储设备,或者操作性地耦合到一个或多个大容量存储设备以便从其接收数据或向其传送数据,或者既包括也操作性地耦合到一个或多个大容量存储设备,所述大容量存储设备用于存储数据,例如是磁盘、磁光盘或光盘。然而,计算机不是必须具有这种设备。另外,计算机可被嵌入在另一设备中,另一设备举例来说例如是移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收机或者便携式存储设备(例如,通用串行总线(USB)快闪驱动器)。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和快闪存储器设备;磁盘,例如内部硬盘或可移除盘、磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可被专用逻辑电路所补充,或者被包含在专用逻辑电路中。
为了支持与用户的交互,本说明书中描述的主题的实施例可实现在计算机上,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示)监视器,以及用户可用来向计算机提供输入的键盘和指点设备,例如鼠标或跟踪球。其他种类的设备也可用于支持与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可按任何形式被接收,包括声响、话音或触觉输入。此外,计算机可通过向用户使用的设备发送文档并从该设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求而向用户的客户端设备上的web浏览器发送网页。
本说明书中描述的主题的实施例可在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有用户可通过其来与本说明书描述的主题的实现方式交互的图形用户界面或Web浏览器的客户端计算机,或者一个或多个这种后端、中间件或前端组件的任何组合。系统的组件可由任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),互联网(例如,因特网)和同伴网络(例如,自组织同伴网络)。
计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在相应计算机上运行且相互之间具有客户端-服务器关系而发生的。在一些实施例中,服务器发送数据(例如,HTML页面)到客户端设备(例如,为了向与客户端设备交互的用户显示数据和从该用户接收用户输入)。在服务器处可从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多具体实现细节,但这些细节不应被解释为对任何发明的范围或可请求保护的范围的限制,而是对特定发明的特定实施例的具体特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可分开地或者按任何适当的子组合在多个实施例中实现。另外,虽然以上可将特征描述为按某些组合来动作,或者甚至最初权利要求是这样记载的,但来自要求保护的组合的一个或多个特征在一些情况下可被从该组合中删去,并且要求保护的组合可指向子组合或子组合的变体。
类似地,虽然操作在附图中是按特定顺序描绘的,但这不应当被理解为为了实现期望的结果要求这种操作按所示出的特定顺序或按先后顺序执行,或者要求所有示出的操作都被执行。在某些情况中,多任务和并行处理可能是有利的。另外,在以上描述的实施例中各种系统组件的分离不应当被理解为在所有实施例中都要求这种分离,并且应当理解所描述的程序组件和系统一般可被一起集成在单个软件产品中或被封装到多个软件产品中。
这样,已描述了主题的特定实施例。其他实施例在所附权利要求的范围内。在一些情况下,权利要求中记载的动作可按不同的顺序执行,而仍实现期望的结果。此外,附图中描绘的过程要实现期望的结果并非必然要求所示出的特定顺序或者先后顺序。在某些实现方式中,多任务和并行处理可能是有利的。

Claims (20)

1.一种用于云存储的方法,包括:
在与用户账号相关联的第一计算设备上,接收来自在所述第一计算设备上运行的应用的运行中查询;
接收在远程存储位置可得到满足所述运行中查询的数据项的通知,满足所述运行中查询的所述数据项已由与所述用户账号关联的第二计算设备贡献;
基于所述通知,根据一个或多个应用特定访问策略,确定所述应用具有访问满足所述运行中查询的所述数据项中的第一数据项的许可;
确定所述应用没有访问满足所述运行中查询的所述数据项中的第二数据项的许可;
将满足所述运行中查询的第一数据项呈现给所述应用;以及
阻止把第二数据项呈现给所述应用。
2.权利要求1所述的方法,包括
向远程存储位置发送请求以接收所述数据项;以及
从所述远程存储位置接收所述数据项。
3.权利要求1所述的方法,其中所述运行中查询保持活跃,直到所述应用被禁用或删除。
4.权利要求1所述的方法,其中确定所述应用具有访问所述数据项的许可包括:确定与第一数据项关联的标识符是否匹配与所述应用相关联的标识符,其中与所述应用相关联的标识符标识了对与该标识符相关联的数据项拥有共享访问权的应用家族。
5.权利要求1所述的方法,其中所述通知是从与所述用户账号相关联的另一计算设备接收的。
6.一种用于云存储的方法,包括:
从与用户账号相关联的第一计算设备接收数据项,该数据项与在所述第一计算设备上运行的应用相关联;
确定存储所述数据项的容器,该容器专用于与所述第一计算设备相关联的所述用户账号、并且专用于所述应用;
将所述数据项存储在所述容器中;以及
向与所述用户账号相关联的一个或多个其他设备发送关于所述数据项的通知,所述通知包括能够用于识别创建了相应数据项的对应应用以及用于识别该应用的特定访问许可的标识符。
7.权利要求6所述的方法,包括:
从与用户账号相关联的第一计算设备接收数据库事务日志文件,所述数据库事务日志文件标识了对数据库的离散改变,所述数据库事务日志文件是代替所述数据库而被接收;
将所述事务日志文件通知给多个相关计算设备中的每一个,所述相关计算设备与和所述第一计算设备相关联的所述用户账号相关联;以及
响应于来自所述多个相关计算设备之一的请求而提供一个或多个所述事务日志文件。
8.权利要求6所述的方法,包括:
从与用户账号相关联的第一计算设备接收标识了对数据库的离散改变的第一事务日志;
从与所述用户账号相关联的第二计算设备接收标识了对所述数据库的离散改变的第二事务日志;
确定所述第一事务日志和所述第二事务日志之间存在冲突;
确定所述事务日志的两个或更多事务是否能够被合并;以及
如果所述两个或更多事务能够被合并,将合并的事务应用到所述数据库。
9.权利要求8所述的方法,其中如果所述两个或更多事务不能被合并,确定冲突获胜者事务,并将该事务应用到所述数据库。
10.权利要求8所述的方法,其中合并事务包括:确定共同祖先数据库,并且在所述共同祖先数据库、所述第一事务日志和所述第二事务日志之间执行三方合并。
11.权利要求8所述的方法,其中所述冲突在没有用户交互的情况下被解决。
12.一种用于云存储的系统,包括:
第一计算设备,与用户账号相关联并且被配置为:
接收来自在所述第一计算设备上运行的应用的运行中查询;
接收在远程存储位置可得到满足所述运行中查询的数据项的通知,满足所述运行中查询的所述数据项已由与所述用户账号关联的第二计算设备贡献;
基于所述通知,根据一个或多个应用特定访问策略,确定所述应用具有访问满足所述运行中查询的所述数据项中的第一数据项的许可;
确定所述应用没有访问满足所述运行中查询的所述数据项中的第二数据项的许可;
将满足所述运行中查询的第一数据项呈现给所述应用;以及
阻止把第二数据项呈现给所述应用;以及
服务器系统,被配置为:
从所述第一计算设备接收数据项,该数据项与在所述第一计算设备上运行的所述应用相关联,
将所述数据项存储,以及
向与所述用户账号相关联的一个或多个其他设备发送关于所述数据项的通知,所述通知包括与所述数据项相关联的所述应用的标识。
13.权利要求12所述的系统,所述第一计算设备还被配置为
向所述远程存储位置发送请求以接收第一数据项;以及
从所述远程存储位置接收第一数据项。
14.权利要求12所述的系统,其中所述运行中查询保持活跃,直到所述应用被禁用或删除。
15.权利要求12所述的系统,其中确定所述应用具有访问所述数据项的许可包括:确定与第一数据项相关联的标识符是否匹配与所述应用相关联的标识符,其中与所述应用相关联的标识符标识了对与该标识符相关联的数据项拥有共享访问权的应用家族。
16.权利要求12所述的系统,其中所述通知是从与所述用户账号相关联的另一计算设备接收的。
17.权利要求12所述的系统,所述服务器系统被配置为:
从所述第一计算设备接收数据库事务日志文件,所述数据库事务日志文件标识了对数据库的离散改变,所述数据库事务日志文件被接收以代替所述数据库;以及
将所述事务日志文件通知给多个相关计算设备中的每一个,所述相关计算设备与和所述第一计算设备相关联的所述用户账号相关联;
响应于来自所述多个相关计算设备之一的请求而提供一个或多个所述事务日志文件。
18.权利要求12所述的系统,所述服务器系统被配置为:
从所述第一计算设备接收标识了对数据库的离散改变的第一事务日志;
从第二计算设备接收标识了对所述数据库的离散改变的第二事务日志;
确定所述第一事务日志和所述第二事务日志之间存在冲突;
确定所述事务日志的两个或更多事务是否能够被合并;以及
如果所述两个或更多事务能够被合并,将合并的事务应用到所述数据库。
19.权利要求18所述的系统,其中所述服务器系统被配置为:如果所述两个或更多事务不能被合并,确定冲突获胜者事务,并将该事务应用到所述数据库。
20.权利要求18所述的系统,其中合并事务包括:确定共同祖先数据库,并且在所述共同祖先数据库、所述第一事务日志和所述第二事务日志之间执行三方合并。
CN201280027149.8A 2011-06-03 2012-06-01 云存储 Active CN103620599B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161493390P 2011-06-03 2011-06-03
US61/493,390 2011-06-03
PCT/US2012/040496 WO2012167108A1 (en) 2011-06-03 2012-06-01 Cloud storage

Publications (2)

Publication Number Publication Date
CN103620599A CN103620599A (zh) 2014-03-05
CN103620599B true CN103620599B (zh) 2016-10-12

Family

ID=46229959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280027149.8A Active CN103620599B (zh) 2011-06-03 2012-06-01 云存储

Country Status (7)

Country Link
US (1) US9208201B2 (zh)
EP (1) EP2715571A1 (zh)
JP (2) JP5740529B2 (zh)
KR (1) KR101596559B1 (zh)
CN (1) CN103620599B (zh)
AU (1) AU2012261986B2 (zh)
WO (1) WO2012167108A1 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011159842A2 (en) 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
US10715457B2 (en) 2010-06-15 2020-07-14 Oracle International Corporation Coordination of processes in cloud computing environments
US9009790B2 (en) * 2010-09-11 2015-04-14 At&T Intellectual Property I, L.P. Association of multiple public user identifiers to disparate applications in an end-user's device
WO2012155081A1 (en) 2011-05-11 2012-11-15 Visa International Service Association Electronic receipt manager apparatuses, methods and systems
US8719232B2 (en) * 2011-06-30 2014-05-06 Verisign, Inc. Systems and methods for data integrity checking
CN104303175B (zh) 2012-02-10 2018-06-12 甲骨文国际公司 云计算服务框架
US10771351B2 (en) 2012-06-15 2020-09-08 Digital River, Inc. Fast provisioning service for cloud computing
US9154479B1 (en) 2012-09-14 2015-10-06 Amazon Technologies, Inc. Secure proxy
US9015212B2 (en) * 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
US20140365459A1 (en) 2013-06-08 2014-12-11 Apple Inc. Harvesting Addresses
US9619545B2 (en) 2013-06-28 2017-04-11 Oracle International Corporation Naïve, client-side sharding with online addition of shards
US9813499B2 (en) * 2013-07-23 2017-11-07 Virtual Strongbox, Inc. Virtual storage system and method of sharing access to the virtual storage system for adding electronic documents
US9432457B2 (en) * 2013-08-30 2016-08-30 Citrix Systems, Inc. Redirecting local storage to cloud storage
US9690838B2 (en) * 2013-10-31 2017-06-27 Microsoft Technology Licensing, Llc Master data management
US9817987B2 (en) * 2013-12-23 2017-11-14 Dropbox, Inc. Restricting access to content
US9330247B2 (en) * 2014-04-18 2016-05-03 The Boeing Company Apparatus and method for managing multiple user accounts on a memory card
US10031916B2 (en) * 2014-06-18 2018-07-24 Dell Products L.P. Methods and systems for virtualizing and managing cloud storage sources
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US10282228B2 (en) 2014-06-26 2019-05-07 Amazon Technologies, Inc. Log-based transaction constraint management
US20160012251A1 (en) * 2014-07-10 2016-01-14 Anil Singh Distribution, tracking, management, reporting and deployment of cloud resources within an enterprise
US10594681B2 (en) * 2014-10-30 2020-03-17 Lenovo (Singapore) Pte. Ltd. Aggregate service with user interface
CN104460862A (zh) * 2014-12-11 2015-03-25 四川中亚联邦科技有限公司 一种基于企业网盘应用的私有云存储一体机
US10440757B2 (en) * 2015-02-17 2019-10-08 Google Llc Second-screen control automatic pairing using push notifications
CN106156094B (zh) * 2015-04-01 2019-09-17 阿里巴巴集团控股有限公司 一种数据库的远程数据同步方法和装置
US10242024B1 (en) 2015-06-18 2019-03-26 EMC IP Holding Company LLC Dynamic reprioritization of content download during synchronization
US10721298B1 (en) 2015-06-18 2020-07-21 EMC IP Holding Company LLC Learning client preferences to optimize event-based synchronization
US10235331B1 (en) 2015-06-18 2019-03-19 EMC IP Holding Company LLC Event-based synchronization in a file sharing environment
US10992748B1 (en) 2015-06-18 2021-04-27 EMC IP Holding Company LLC Verification of event-based synchronization
US10929431B2 (en) * 2015-08-28 2021-02-23 Hewlett Packard Enterprise Development Lp Collision handling during an asynchronous replication
US10860988B2 (en) * 2016-04-11 2020-12-08 Samsung Electronics Co., Ltd. Managing data items contributed by a plurality of applications
US10607195B2 (en) * 2016-06-06 2020-03-31 ArrowPass, Inc. Facilitating selling and validating digital resources
US11347774B2 (en) * 2017-08-01 2022-05-31 Salesforce.Com, Inc. High availability database through distributed store
US20190370353A1 (en) * 2018-05-29 2019-12-05 Microsoft Technology Licensing, Llc Change notifications for object storage
US11205045B2 (en) * 2018-07-06 2021-12-21 International Business Machines Corporation Context-based autocompletion suggestion
US11269700B2 (en) 2019-04-23 2022-03-08 Apple Inc. System call interception for file providers
US20220232011A1 (en) * 2019-05-02 2022-07-21 Phoneado Inc. Technologies for enabling personal communications
US11556512B2 (en) * 2019-11-01 2023-01-17 Palantir Technologies Inc. Systems and methods for artifact peering within a multi-master collaborative environment
CN111866098B (zh) * 2020-07-03 2024-04-26 北京小米松果电子有限公司 一种日志处理方法、装置及存储介质
WO2022010006A1 (ko) * 2020-07-08 2022-01-13 엘지전자 주식회사 컨테이너를 이용한 다중 프로파일 지원
CN115220642A (zh) 2021-04-16 2022-10-21 戴尔产品有限公司 预测存储阵列容量

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1292531A (zh) * 1999-09-24 2001-04-25 日本电气株式会社 信息管理系统和方法
CN1372746A (zh) * 1999-12-16 2002-10-02 皇家菲利浦电子有限公司 个人ce设备的共享地址数据业务
CN1525334A (zh) * 2003-02-24 2004-09-01 日本电气株式会社 移动终端数据存储器共享系统及实现上述功能的程序

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253203B1 (en) * 1998-10-02 2001-06-26 Ncr Corporation Privacy-enhanced database
WO2002005061A2 (en) * 2000-07-06 2002-01-17 David Paul Felsher Information record infrastructure, system and method
US8380630B2 (en) * 2000-07-06 2013-02-19 David Paul Felsher Information record infrastructure, system and method
US20020065919A1 (en) * 2000-11-30 2002-05-30 Taylor Ian Lance Peer-to-peer caching network for user data
US6985958B2 (en) * 2001-03-14 2006-01-10 Microsoft Corporation Messaging infrastructure for identity-centric data access
US20020133535A1 (en) * 2001-03-14 2002-09-19 Microsoft Corporation Identity-centric data access
EP1459213B1 (en) * 2001-11-15 2017-05-10 Good Technology Holdings Limited System and methods for asychronous synchronization
US7546633B2 (en) * 2002-10-25 2009-06-09 Microsoft Corporation Role-based authorization management framework
US7846023B2 (en) * 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7620648B2 (en) * 2003-06-20 2009-11-17 International Business Machines Corporation Universal annotation configuration and deployment
US7457828B2 (en) * 2003-08-29 2008-11-25 Sap Ag System and method for synchronizing distributed buffers when committing data to a database
JP4701639B2 (ja) * 2004-06-24 2011-06-15 日本電気株式会社 バックアップデータのストレージシステム及び方法、これに用いられる情報サーバ、携帯端末及びプログラム
CA2622404A1 (en) * 2004-09-15 2006-03-23 Adesso Systems, Inc. System and method for managing data in a distributed computer system
EP1950681A4 (en) * 2005-10-13 2012-04-04 Ntt Docomo Inc MOBILE DEVICE, ACCESS CONTROL MANAGEMENT AND ACCESS CONTROL MANAGEMENT PROCEDURES
US20070130217A1 (en) 2005-10-13 2007-06-07 Unwired Software, Inc. Many to many data synchronization
US8543968B2 (en) * 2005-11-17 2013-09-24 Target Health, Inc. System and method for creating, managing, deploying and archiving data-intensive applications and projects
US7877781B2 (en) * 2005-12-29 2011-01-25 Nextlabs, Inc. Enforcing universal access control in an information management system
US8341127B1 (en) * 2006-02-02 2012-12-25 Emc Corporation Client initiated restore
EP1826703B1 (en) * 2006-02-27 2008-04-09 Sap Ag An access control system, a rule engine adaptor, a rule-based enforcement platform and a method for performing access control
US7917963B2 (en) * 2006-08-09 2011-03-29 Antenna Vaultus, Inc. System for providing mobile data security
KR100926880B1 (ko) * 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
US8271477B2 (en) * 2007-07-20 2012-09-18 Informatica Corporation Methods and systems for accessing data
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US8073847B2 (en) * 2008-06-27 2011-12-06 Microsoft Corporation Extended user profile
US8458128B2 (en) * 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US8112537B2 (en) * 2008-09-29 2012-02-07 Apple Inc. Trickle sync protocol
JP4725635B2 (ja) * 2008-11-13 2011-07-13 富士ゼロックス株式会社 情報処理装置およびプログラム
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
KR101626117B1 (ko) * 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
US8612439B2 (en) * 2009-06-30 2013-12-17 Commvault Systems, Inc. Performing data storage operations in a cloud storage environment, including searching, encryption and indexing
US20110072487A1 (en) 2009-09-23 2011-03-24 Computer Associates Think, Inc. System, Method, and Software for Providing Access Control Enforcement Capabilities in Cloud Computing Systems
US8516137B2 (en) * 2009-11-16 2013-08-20 Microsoft Corporation Managing virtual hard drives as blobs
FR2958478B1 (fr) * 2010-04-02 2012-05-04 Sergio Loureiro Procede de securisation de donnees et/ou des applications dans une architecture informatique en nuage
US8407244B2 (en) * 2010-04-23 2013-03-26 Datcard Systems, Inc. Management of virtual packages of medical data in interconnected content-addressable storage systems
US8595382B2 (en) * 2010-06-07 2013-11-26 Salesforce.Com, Inc. System, method and computer program product for performing a synchronization of data
US8606948B2 (en) * 2010-09-24 2013-12-10 Amazon Technologies, Inc. Cloud-based device interaction
US9424002B2 (en) * 2010-12-03 2016-08-23 Microsoft Technology Licensing, Llc Meta-application framework
US8650620B2 (en) * 2010-12-20 2014-02-11 At&T Intellectual Property I, L.P. Methods and apparatus to control privileges of mobile device applications
US20120203932A1 (en) * 2011-02-08 2012-08-09 Microsoft Corporation Multi-master media metadata synchronization
US20120254108A1 (en) * 2011-03-30 2012-10-04 Microsoft Corporation Synchronization Of Data For A Robotic Device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1292531A (zh) * 1999-09-24 2001-04-25 日本电气株式会社 信息管理系统和方法
CN1372746A (zh) * 1999-12-16 2002-10-02 皇家菲利浦电子有限公司 个人ce设备的共享地址数据业务
CN1525334A (zh) * 2003-02-24 2004-09-01 日本电气株式会社 移动终端数据存储器共享系统及实现上述功能的程序

Also Published As

Publication number Publication date
EP2715571A1 (en) 2014-04-09
US9208201B2 (en) 2015-12-08
JP5740529B2 (ja) 2015-06-24
JP2014525066A (ja) 2014-09-25
KR20140014268A (ko) 2014-02-05
WO2012167108A1 (en) 2012-12-06
AU2012261986A1 (en) 2013-11-28
CN103620599A (zh) 2014-03-05
JP2015172946A (ja) 2015-10-01
US20120310880A1 (en) 2012-12-06
AU2012261986B2 (en) 2016-02-04
JP6000401B2 (ja) 2016-09-28
KR101596559B1 (ko) 2016-02-22

Similar Documents

Publication Publication Date Title
CN103620599B (zh) 云存储
Careem et al. Sahana: Overview of a disaster management system
Sultan Reaching for the “cloud”: How SMEs can manage
KR101538567B1 (ko) 별도의 장치로부터의 씨드 응용 프로그램에 기초한 응용 프로그램 설치
CN105830049B (zh) 自动化实验平台
CN102999482B (zh) 用于管理协作文档的技术
Reese Cloud application architectures: building applications and infrastructure in the cloud
CN105745646B (zh) 本机应用程序搜索结果
US10389837B2 (en) Multi-tier dynamic data caching
CN108141449A (zh) 控制设备云
CN105659234A (zh) 普适搜索架构
Murugesan Web application development: Challenges and the role of web engineering
US10146815B2 (en) Query-goal-mission structures
US20130132439A1 (en) Organizing versioning according to permissions
US20140344267A1 (en) Storing, Accessing and Restoring Website Content via a Website Repository
US20180337989A1 (en) System and method for synchronizing data between computer devices
Mathew Cloud computing: a new foundation towards health care
WO2023192951A1 (en) Non-fungible token minting in a metaverse environment
Chorazyk et al. Volunteer computing in a scalable lightweight web-based environment
Gaushik et al. A Prototype Design for Gamified Blood Donation App Using Blockchain Technology, IPFS and NFTs.
CN109074360A (zh) 使用多个线程减少下载电子资源的延迟
Chen et al. Strategic use of information technology-Google
Vance In Hungary, mogul finds fertile area for software
Dathan et al. The Unified Modelling Language
Pahuja et al. Record Storage and Management System Using Blockchain

Legal Events

Date Code Title Description
PB01 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