CN107426319A - 存储受约束的共享内容项同步 - Google Patents

存储受约束的共享内容项同步 Download PDF

Info

Publication number
CN107426319A
CN107426319A CN201710635654.5A CN201710635654A CN107426319A CN 107426319 A CN107426319 A CN 107426319A CN 201710635654 A CN201710635654 A CN 201710635654A CN 107426319 A CN107426319 A CN 107426319A
Authority
CN
China
Prior art keywords
content item
content
client device
item
score
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710635654.5A
Other languages
English (en)
Other versions
CN107426319B (zh
Inventor
B·纽豪斯
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.)
Dropbox Inc
Original Assignee
Dropbox 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
Priority claimed from US14/611,117 external-priority patent/US9413824B1/en
Priority claimed from US14/611,116 external-priority patent/US9185164B1/en
Priority claimed from US14/611,115 external-priority patent/US9361349B1/en
Application filed by Dropbox Inc filed Critical Dropbox Inc
Publication of CN107426319A publication Critical patent/CN107426319A/zh
Application granted granted Critical
Publication of CN107426319B publication Critical patent/CN107426319B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • 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

本发明公开存储受约束的共享内容项同步。一种内容管理系统跨由网络连接的客户端计算系统同步内容项。每个客户端设备具有用于同步的共享内容项的存储分配。如果由于添加或编辑内容项使得内容项放大或者打开远离客户端设备的大内容项的请求超过客户端设备上用于共享内容项的存储分配,那么客户端应用或内容管理系统的主机选择要从客户端设备上的驻留中移除但是远程保持在内容管理系统上的内容项。在移除所选择的内容项时,客户端应用创建影子项,该影子项表示内容项但是仅包含内容项的元数据。这为完成初始请求创建足够的空间,同时维护用户对所有同步的共享内容项的访问。

Description

存储受约束的共享内容项同步
本申请是国际申请日为2015年10月3日、申请号为201580072024.0、发明名称为“存储受约束的共享内容项同步”的发明专利申请的分案申请。
技术领域
所描述的实施例一般而言涉及提高提供内容项同步的计算机系统的性能,并且尤其涉及改进内容项在客户端设备与内容管理系统之间的同步,其中对于同步内容项的存储分配受到约束。
背景技术
内容管理系统使用户能够将内容项从一个客户端共享到另一个客户端。客户端是向内容管理系统提供内容项以便进行存储和与其它客户端同步的计算设备。其它客户端可以由另一个用户操作,或者可以是由同一用户注册或管理的设备。用户指定哪些内容项或包含内容项的目录可用于与其他用户共享,并且因此与这些用户的客户端设备同步。一般而言,内容管理系统将给定的内容项与已被指定要共享内容项的所有客户端设备同步。因此,这些客户端设备中的每一个可以存储非常大量的共享内容项。在一些情况下,客户端设备上被共享内容项占用的存储量大大减少了客户端设备上可用于其它项(诸如未同步的内容项和应用)的可用存储量。
附图说明
图1A和1B是图示受约束同步的一个实施例的概念图。
图2图示了用于在客户端设备之间同步内容项的内容管理系统的系统环境。
图3图示了客户端设备的软件体系架构。
图4是用于访问本地内容目录中的现有内容项的受约束同步的交互图。
图5是用于创建要存储在本地内容目录中的新内容项的受约束同步的交互图。
图6图示了用于基于主机的受约束同步的系统环境。
图7是由主机设备管理的受约束同步的交互图。
图8是用于具有表示远程和本地内容项的图标的本地内容目录的用户界面的图示。
图9是图示使用预测的内容项重要性的受约束同步的概念图。
图10图示了对于受约束同步用于使用预测的内容项重要性的内容管理系统的系统环境。
图11图示了使用空闲状态触发的内容管理的客户端设备的软件体系架构。
图12图示了使用空闲状态触发的内容管理的内容管理系统的系统环境。
图13是图示在空闲状态触发的内容管理中使用的处理的流程图。
附图仅仅为了说明的目的而描绘了各种实施例。本领域技术人员将从以下讨论中容易地认识到,在不背离本文所述的本发明的原理的情况下,可以采用本文所示的结构和方法的替代实施例。
具体实施方式
受约束的同步功能概述
现在描述受约束同步系统和过程的一般功能概述。作为初步条件,用户将内容项存储在客户端设备上,并且内容项与其它客户端上的内容项的实例以及与主机系统(通常是内容管理系统)同步。客户端设备将内容项存储在本地内容目录中。存储在本地内容目录中的内容项与内容管理系统同步,该内容管理系统维护内容项的副本并将内容项与其它客户端设备同步。每个客户端设备执行客户端应用,这使得用户能够访问内容管理系统。客户端应用还使得用户能够配置本地内容目录的最大存储分配或尺寸。
在一方面,客户端设备被配置为选择性地确定哪些同步的内容项保持在客户端设备上本地可用,以及哪些完全仅存储在内容管理系统上。在一个实施例中,客户端设备例如从需要访问内容项的应用接收访问内容项的请求。客户端设备确定所请求的内容项是影子项(shadow item)还是客户端设备上本地存储的内容项。影子项是表示或模拟内容项但不包含内容项的应用数据的项。一般而言,影子项复制内容项的元数据属性(诸如内容项的名称),以及各种属性(诸如类型、路径信息、访问权限、修改信息和内容项的尺寸),而不存储实际的应用内容(诸如文本、图像数据、视频数据、音频数据、数据库表、电子表格数据、图形数据、源或目标代码或其它类型的内容数据)。因为影子项仅存储内容项的元数据,因此与可以是数百兆字节甚至几千兆字节尺寸的内容项相比,它们只需要少量的存储,例如通常约四千字节。因此,使用影子项来表示内容项操作,以节省相当多的存储空间,由此改进客户端设备的功能。
在客户端设备确定所请求的内容项是影子项的情况下,这指示所请求的内容项内容目前不存储在客户端设备上,而是存储在内容管理系统上。因而,客户端设备从内容管理系统下载与所请求的影子项对应的内容项。客户端设备还确定在本地内容目录中存储内容项是否超过为那个目录建立的最大存储尺寸。在那种情况下,客户端设备确定本地内容目录中的哪些内容项可以从本地内容目录中移除,并替换为表示内容项的影子项。一般而言,客户端设备使用共享内容项的一个或多个属性来从本地内容目录中选择已经由客户端设备的用户或经由内容管理系统访问内容项的用户确定为被忽视的(unattended)内容项,包括客户端设备上的最新访问时间(例如,客户端设备的用户或其上执行的应用的动作)、与其共享内容项的其它客户端设备上的最新访问时间(例如,那些客户端设备的用户的动作)、内容项尺寸以及访问频率。这些因素的组合也可以被用来确定被忽视的内容项。客户端设备从本地内容目录中选择多个内容项,使得删除这些内容项在本地内容目录中创建足量的存储空间,以允许下载的内容项被存储在其中而不超过最大存储尺寸。在一个实施例中,客户端设备选择多个内容项,使得共享内容目录中由这些内容项使用的总存储量至少等于或超过存储下载的内容项所需的存储量。
客户端设备删除所选择的内容项,并且为每个被删除的内容项创建对应的影子项。客户端设备将影子项存储在与删除的内容项对应的目录位置中。影子项在对应位置的存储使得能够以对发出请求的应用透明的方式进行被删除的内容项的后续检索。
这个实施例提供受约束的共享存储系统,其中每个客户端设备可以维持对与内容管理系统共享的所有内容项的访问,同时具有用于其它内容项和应用的更多空间,并且还整体上改进了每个客户端设备以及内容管理系统的存储效率。更特别地,该实施例使得客户端设备能够有效地操作,就好像它具有比实际上显著更大的存储容量一样。例如,本地内容目录只有10GB存储分配的客户端设备可以像对于那个目录具有超过4,000GB(4TB)的存储分配一样运行,这代表有效存储增加了400倍。在过去,由于网络连接和带宽限制,这种针对有限的本地存储容量的解决方案是不可能的,因此,由于允许普遍的连接以及快速上传和下载速度的互联网基础设施的最新发展,可以解决这个问题。
尽管有互联网基础设施的最新发展,移除内容项、用影子项替换内容项以及在用户请求后恢复内容项所需的计算、上传和下载时间仍然会影响设备的性能。因此,还描述了替代实施例,其减少对用户可见的对设备性能的影响,同时仍然经传统的共享内容同步方法减少客户端设备上的存储负担。在一个实施例中,基于预测的用户对表示为影子项的共享内容项的访问来完成计算、上传和下载。为了预测用户对内容项的访问,客户端应用或内容管理系统维护用于每个内容项的保留得分;保留得分是对每个内容项对用户的预测重要性的测量。每个客户端设备配置有保留得分阈值,使得具有足够高的预测重要性的任何内容项(由超过保留得分阈值的保留得分表示)被下载到对应的客户端设备。保留得分可以基于各种属性来计算,这些属性包括最新的访问时间、位置、类型、尺寸、访问频率、共享状态、能访问的帐户数量、能访问的设备的数量或者存储内容项的设备的数量。
可替代地,另一个实施例允许,在客户端设备的活动(由内容管理系统或由客户端应用)监视的同时,客户端设备上被共享内容项占用的存储空间超过存储分配。当客户端设备被确定为空闲时,如前面所讨论的,客户端应用移除内容项并用影子项替换它们,以便减少被存储在客户端设备上的内容项占用的有效存储空间。在这些实施例中,不是始终维持存储分配,因此可以根据其它内容项属性来减少占用的存储。例如,代替维持存储分配,在客户端设备空闲的任何时候,可以移除具有早于指定时间量(例如,两周)的最新访问日期的所有内容项,并用影子项替换它们。这个过程不会将占用的存储空间保持在存储分配之下,而是以可能对用户优选的方式来减少占用的存储空间,因为在客户端设备空闲并且因此不被用户主动使用的情况下完成操作,由此改进被配置为通过在提供有效存储容量的类似增加的同时提供优于先前描述的实施例的用户体验,来改进使用受约束的同步系统的客户端设备。
图1A和1B是进一步图示受约束的同步的实施例的概念图。图1A图示了在存储受约束的同步文件夹中保存内容项的过程。图1B图示了在存储受约束的客户端设备上打开影子项的过程。
在图1A和1B中,客户端设备100A是可以与内容管理系统110连接并同步的多个用户受控设备之一。内容管理系统110是实例化成使用网络同步来自多个客户端设备的内容的服务器。共享内容存储目录120是位于客户端设备100上的、包含与内容管理系统110同步的内容的目录。存储分配130是指定共享内容存储目录中的所有内容项所允许的存储空间量的参数值。存储分配130可以由客户端设备100A的用户、客户端设备100的操作系统、内容管理系统110的客户端应用、由系统管理员或者由在内容管理系统110处建立的策略来设置。存储分配130的示例值为10GB;这意味着用户可以在共享内容存储目录120中存储最多10GB的完整内容项(所有内容项属性和数据)。内容项140被保存在共享内容存储目录120中;在客户端设备100和内容管理系统110同步之后,共享内容存储目录120中的每个内容项140的版本也由内容管理系统110维护。
如本文所使用的,术语“内容项”指示任何文件、文件的组或文件的集合。仅由单个文件组成的任何内容项可替代地被称为文件。此外,诸如“文件表”的术语可以被用来指代个别文件或内容项。
在图1中,共享内容存储目录120被图形地描绘为包含内容项140的框。存储分配130由表示内容存储目录120的框的特定长度表示。
客户端设备100A和内容管理系统110的第一图示表示两个实体的典型状态。客户端设备具有存储在其共享内容存储目录120中的内容项140A、140B和140C(为了解释的目的,仅示出少量的内容项140,在实践当中,内容项140的数量可以在成千上万或更多)。内容管理系统110被表示为与客户端设备100A同步,因此它维护存储在客户端设备100A上的每个内容项的相同版本,但是它不具有存储分配130。此外,内容管理系统110支持另一个客户端设备100B,与其共享内容项140A。与客户端设备100B的标识相关联的内容项140D的存在指示客户端设备100B还使这个内容项140D与内容管理系统110同步。因此,每个客户端设备100可以将内容项140与仅内容管理系统110或者与内容管理系统110和其它客户端设备100同步。
阶段1.1图示了来自客户端设备100A的将内容项140E保存到共享内容存储目录120的请求的操作。但是,如图所示,将内容项140E添加到共享内容存储目录120将导致被内容项140占用的总存储空间超过存储分配130,因为内容项140E的尺寸超过由存储分配130限制的共享内容目录120中的剩余可用空间。
阶段1.2图示了要从客户端设备100移除的被忽视的内容项140C的选择的操作,以便使得其中可以存储内容项140E的足够的存储可用。依赖于该实施例,或者客户端设备100或者内容管理系统110确定选择哪些内容项140为被忽视。下面讨论的各种方法可用于确定选择哪些内容项为被忽视。虽然在这个示例中仅选择了单个内容项140C,但是在实践当中,依赖于需要使得可用的存储容量的量,可以选择任何数量的内容项140。
阶段1.3图示了从客户端设备100A移除所选择的内容项140C的操作。代替每个被移除的内容项,客户端设备100A创建表示被移除的内容项140C的影子项160C,并将影子项存储在共享内容存储目录120中与被删除的内容项140C相同的位置。可替代地,内容管理系统110可以创建影子项160C,然后将影子文件160C下载到内容存储目录120。影子项包括表示被移除的内容项140C的属性(诸如内容名称、路径信息、内容属性和内容尺寸),但不包含内容项140C的实际数据。通过不包括其对应内容项的实际数据,影子项需要相当少的存储。例如,影子项通常需要不多于由操作系统提供的最小文件尺寸分配,诸如4KB。这种小尺寸在图1中使用垂直线可视地示出,示出当与内容项140C本身相比时,影子项的尺寸可忽略。例如,虽然被移除的内容项140C的尺寸可以是兆字节甚至十亿字节(对于音频或视频文件来说是非常常见的),但是表示这种内容项的影子项所需的存储仍将仅为4KB左右。因此,客户端设备100能够将用于共享内容项的本地存储器的数量减少到低于存储分配130的量,并且由此提供足够的空间来存储新创建的(或更新成使得新版本内容项较大的)内容项140E。在客户端设备100A上维护识别所选择(并移除的)内容项的信息,以允许在稍后的时间选择性地检索这些项。这种信息在本地存储在客户端设备100中的所存储内容项的列表150中,所存储内容项远程存储在内容管理系统110的远程内容条目表366中(如下文进一步描述,在图1A中未示出)。
阶段1.4图示了一旦在共享内容存储目录120中有足够的空间可用就将内容项140E保存到客户端设备100A的操作。一旦客户端设备100A成功地将内容项140E保存到共享存储目录120,就发起与内容管理系统110的同步,并且将内容项140E上传到内容管理系统110。内容管理系统110仍然维护客户端设备100A上的所有内容项(包括影子项)的完整副本。
现在参考图1B,示出了在内容项140E已经在客户端设备100A与客户管理系统110之间同步之后的客户端设备100A和内容管理系统110。
阶段1.5图示了客户端设备100A请求访问内容项140C的操作(例如,使用文字处理器的打开内容项140C,或在文件浏览器中示出内容项),其中客户端设备100确定所请求的内容项由影子项表示。如果内容项在本地存储,那么将其提供给客户端设备100A上发出请求的应用。在这种情况下,所请求的内容项已从客户端设备100A移除,并且仅被远程存储在内容管理系统110上,因此客户端设备100请求内容管理系统110下载所请求的内容项。如果在共享内容存储目录120上存在足够的空间,那么内容管理系统110将请求的内容项下载到客户端设备100A;然后,客户端用内容项140C本身替换表示内容项140C的影子项160C,这允许任何发出请求的应用透明地访问内容项。但是,在这种情况下,向共享内容存储目录120添加内容项140C将超过存储分配130,如由扩展到共享内容存储目录120的边界之外的内容项140C所描绘的。
阶段1.6图示了选择要从客户端设备100A移除的被忽视的内容项的操作。在这种情况下,所选择的被忽视的内容项是内容项140A。
阶段1.7图示了移除内容项140A并用其影子项160A替换内容项140A的操作。这种移除在共享内容存储目录120中创建足够的空间,以使内容项140C从内容管理系统110下载并附加到其影子项表示,而不超过存储分配130。被移除的内容项140A包括在远程存储内容项的列表150中,并且内容项140C从这个列表150中被移除,因为它已经恢复到共享内容目录120。
阶段1.8图示了一旦内容项140C驻留在客户端设备100A上就可以由发出请求的应用打开它。一旦客户端设备100A上由图1A和1B所示的过程已经完成,在客户端设备100A与内容管理系统110之间就可以发生正常的同步,使得对客户端设备100A上的内容项140的所有改变在内容管理系统110上被镜像。所有内容项140(即使由影子项表示)在内容管理系统110上被维护,直到它们从共享内容存储目录120被删除。
系统体系架构的概述
图2图示了受约束的同步系统的系统体系架构。关于每个部件的细节将在下一节进一步描述,但是这里介绍一些元件,以提供用于解释受约束的同步的上下文。另外,如本领域技术人员显而易见的,在受约束的同步中使用的操作和方法必然需要计算机,并且在任何实施例中都不由人类操作者的精神(mental)步骤执行。另外,虽然操作可以利用计算机的便利来存储和检索信息、传输和发送信息或处理信息,但是本领域技术人员将认识到的是,这种操作不是简单的通用计算机操作,因为它们在本文使用本文所述的算法对于具体定义的数据以具体的方式被执行,并且因此需要以由其操作系统和标准应用本身本来配置计算机不同的方式配置这种计算机。此外,所需的配置通过以下详细描述的步骤增强计算机的存储容量超过配置有常规操作系统和文件管理系统的通用目的计算机。
客户端设备100通过未示出的网络与内容管理系统110进行通信,网络可以是在远离内容管理系统110的客户端设备100之间提供互联网络的任何合适的通信手段;例如LAN、WAN或WAN。一般而言,安装有客户端应用200A的客户端设备100A向内容管理系统110提供内容项。客户端应用200A包含客户端设备100A执行与存储受约束的同步相关联的功能所必需的程序和协议。因此,客户端设备100A常常执行客户端应用200A请求的动作。但是,因为客户端设备100A和客户端应用200A一起作用,因此为了便于描述,使用“客户端设备100A”作为操作元件来提到这些动作中的一些。客户端设备100A的用户已经指定要与客户端设备100B共享的某些内容项,例如,客户端设备100B可以是由同一用户管理的另一台计算机,或由不同用户操作的计算机。内容管理系统110通知客户端设备100B并将从客户端设备100A接收的指定内容与存储在客户端设备100B的本地内容进行同步。
内容管理系统110将每个内容项和与内容项的集合对应的命名空间关联。命名空间指定目录结构中存储给定内容项的目录(或“文件夹”)。内容项与特定命名空间的关联存储在命名空间表222中。内容管理系统110将每个客户端与其能访问的命名空间(和其中的内容项)关联,连同访问、修改和删除每个命名空间中的内容项的具体权限的标识。当客户端100与命名空间同步时,客户端存储与命名空间关联的内容项的本地副本,并根据内容位置(如果可用的话)来组织内容项。用户可以与个别客户端设备100或者与多个客户端100关联;例如,用户可以具有家庭计算机、工作计算机、便携式计算机、智能电话和平板计算机,这些全部都一起同步。为了共享内容项,用户指定要与其它用户和/或客户端共享的命名空间。然后,内容管理系统110跨与共享命名空间关联的客户端100将(一个或多个)共享命名空间中的内容项同步。存储在内容管理系统110处的内容项可以包括任何类型的内容项,包括文档、数据、电影、应用、代码、图像、音乐等。内容项还可以是将内容项分组在一起的文件夹或其它机制,诸如集合、播放列表、相册、文件归档等。
每个用户与内容管理系统110上的帐户关联,该帐户包括指定要用于在内容管理系统110上存储内容项的存储量的信息。客户端设备还具有用于存储同步内容项的指定量的本地存储,这是共享内容存储目录120的尺寸;这个指定量是上述存储分配参数130。例如,用户的帐户可以指定用户在内容管理系统110上具有50GB的存储可用,但是在客户端设备100上仅具有10GB的存储分配。在诸如这种情况下,当用户修改本地存储的共享内容项时,内容项的尺寸可能会增加,从而超过客户端设备100上的存储分配。类似地,用户可能会通过在共享内容目录120中创建和存储要与内容管理系统110共享和同步的新内容项而超过客户端设备100上的存储分配。在这些情况下,共享内容项的数量超过用于客户端设备100的存储分配,在这种情况下客户端设备100是存储受约束的,并且不能再维护由内容管理系统110同步的所有内容项的本地副本。
或者客户端设备100或者内容管理系统110被配置为选择一个或多个内容项以从本地存储移除,同时仍然将它们在内容管理系统110上远程维护,使得它们可以随后被检索并恢复到客户端设备100。一般而言,所选择的内容项是或者在其上进行访问内容项的请求的特定客户端设备100上或者跨其上共享内容项的所有客户端设备100上最近最少访问的内容项;其它选择方法将在下一节中进一步讨论。在基于客户端的实施例中,客户端应用200维护识别存储在客户端设备100上的每个共享内容项的最新访问的信息。当存储被约束时,客户端应用200选择一个或多个最近最少访问(本文称为“LRA”)的内容项。在基于主机的实施例中,内容管理系统110维护用于每个内容项的访问数据;系统110在内容项在与其共享该内容项的任何客户端设备100上被访问的任何时候更新这个信息。LRA选择仅仅是许多可能的被忽视的内容项选择方法(本文称为“UCSM”)中的一种,每种方法都可以被实现为或者基于主机或者基于客户端的系统。任何UCSM都可以咨询用于每个内容项的vnode引用,以确定它是否符合被移除的条件。用于每个内容项的vnode包含关于对内容项的访问次数的信息以及其它内容项状态指示符(包括内容项当前是否正在使用或打开)。
为了简明扼要,无论何时内容项响应于存储约束而被选择用于从驻留在客户端设备100上移除,该操作在本文中被称为“选择被忽视的内容项”,因为大多数UCSM操作以识别用户最不可能访问的那些内容项。被忽视的内容项是指由以下讨论中概述的任何UCSM选择的内容项。
基本LRA选择:为了执行基本LRA选择,客户端应用200维护通过最新本地访问日期排序的内容项的队列,其中最近最少访问的内容项在队列顶部。用于每个内容项的最新访问日期和时间在内容访问历史表中被维护。对内容项的访问包括创建、打开、预览或修改内容项的操作。可以将任何数量的这些动作视为访问,例如,实施例可以认为访问是或者打开、修改或者保存内容项,但预览内容项可以不被视为访问。对于队列中列出的每个内容项,计算存储尺寸的累计和(例如,运行总数),其中队列以队列中识别出的最近最少访问的内容项(即,队列顶部的内容项)开始并且以队列末尾的内容项结尾。当存储受约束时,客户端应用200确定存储内容项所需的存储空间量,并且因此前进通过队列以识别累计存储尺寸超过存储空间需求的内容项的索引。识别出的索引被用来从客户端设备100上的共享内容存储目录120中选择队列中那个索引之上并包括那个索引的所有内容项用于移除。
这些过程在表1中进一步解释。在这个示例中,需要75MB的存储来存储内容项。因为内容项A和B总共只有70MB,所以移除这两个内容项并不能为该项提供足够的存储量。因而,在对应的索引00、01和02处,选择总累计尺寸为150MB的内容项A、B和C(如最右边的列中的指定所指示的)。
表1
索引 项名称 本地访问时间 项尺寸 累计尺寸 被选择吗?
00 项A 1/3/2014 4:33PM 10MB 10MB
01 项B 3/24/2014 5:12PM 50MB 60MB
02 项C 3/24/2014 6:18PM 20MB 80MB
03 项D 3/30/2014 6:22PM 80MB 160MB
04 项E 5/18/2014 7:53AM 20MB 180MB
远程LRA选择:LRA选择还可以基于通过内容管理系统110(或者直接在其上,或者在具有内容项的共享版本的客户端设备100上)访问内容项的其他用户的远程访问。为了实现这一点,在一个实施例中,每个客户端设备100例如在正常内容项同步操作期间或在其它时间使其自己的内容访问历史表与内容管理系统110同步。这个实施例使得每个客户端设备100能够维护用于其与任何其它客户端设备共享的每个内容项的当前访问信息。可替代地,对于基于主机的实施例,内容管理系统110可以维护包含针对被指定用于同步和共享的所有客户端设备的每个内容项的访问历史的内容访问历史表,使得其具有当前更新的列表以用于LRA选择。然后,远程LRA选择包括内容管理系统110选择其累计存储尺寸超过所需存储空间的最近最少访问的内容项。在这个实施例中,这个队列按照来自关于内容项同步的所有客户端设备的最新访问时间排序。
表2是可以如何实现远程LRA的示例。在这个示例中,内容项B和C在不同的客户端设备上分别于5/24/2014和4/5/2014被最后远程访问,但是都最后一次在3/24/2014被本地访问(如表1中所列出的)。由于它们的远程访问,与使用基本LRA选择相比,对于项B和C的最新访问日期的这种变化将它们在队列中向下移动。因此,在这个例子中,选择项A和D而不是A、B和C.
表2
内容项尺寸选择:可以被用来选择要移除的内容项的另一个因素是它们的尺寸。在一个实施例中,尺寸被用来最小化从客户端设备100移除并远程存储的内容项的数量。这可以通过按照尺寸(从最小到最大)而不是通过访问日期对队列进行排序来实现。然后可以将所需的存储空间值与各个尺寸进行比较,直到识别出其尺寸超过所需存储空间的内容项。然后客户端应用200将选择该内容项以移除。如果没有单个内容项大于所需的存储空间,那么将选择最大的内容项,并从所需的存储空间值中减去其尺寸,并且该过程将从队列的开始重复。
表3是这种选择方法的示例。对于这个示例,需要40MB的存储来存储内容项。项B是队列索引超过所需的40MB存储值的第一个内容项,因此它被选择用于从客户端100中移除。
表3
基于内容项尺寸和访问时间的选择:刚刚描述的尺寸选择方法有时可以选择频繁访问的内容项以进行移除。通过考虑尺寸和访问时间二者,内容管理系统可以避免从客户端设备100移除可能在不久的将来被用户请求的内容项。在一个实施例中,基于每个内容项为达到所需存储分配贡献的存储量及其最后访问日期,通过为每个内容项计算加权得分,实现这种双变量选择方法。例如
Score=w1S+w2A
其中S是表示内容项尺寸的度量,A是表示自上次访问内容项以来的时间的度量,并且w1和w2是权重。用于A和S的权重可以基于由用户、由系统管理员确定的相对重要性,或者基于特定客户端设备100上对于内容项的历史内容项访问模式。然后,队列将按照Score排序,并且选择队列中的第一个内容项以移除。
下面的表4图示了这种选择方法的示例性实现。为了这个简单示例的目的,访问时间度量A是当前时间与对于特定内容项的最新访问之差以及当前时间与最近最少访问项的访问之差之间的比率(在这种情况下,所使用的日期为9/3/2014)。在这个示例中,尺寸度量是如下关系:
对于s≥r:S=r/s
对于s<r:S=s2/r2
其中s是内容项尺寸,r是所需的存储空间,并且S是尺寸度量。当s=r时,这个分段函数的最大值为1。
在表4中所显示的示例中,所需的存储空间为40MB,并且权重w1和w2均为1。尺寸度量和访问时间度量被计算,然后用于计算每个内容项的总得分Score。在这个示例中,项B具有最高分数,因此被选择用于从客户端设备100移除。如果所选择的内容项的尺寸小于所需的存储空间,那么将新的所需存储空间计算为旧的所需存储空间与第一选择的内容项的尺寸之差,得分被重新计算,并且使用新计算的所需存储空间为所有内容项生成新的队列,并重复该选择处理。
表4
访问频率和新近度(recency)选择:为了更好地选择被忽视的内容项,除了访问时间,还可以考虑其它因素(诸如频率)。高频率-低新近度内容项是在过去某个时间(例如,超过6个月之前)而不是最近频繁选择的内容项;低频率-低新近度内容项是从未频繁访问的内容项。访问频率可以相对于特定客户端设备上的平均频率,或者跨客户端设备的任何群体,或者通过类型、名称空间、源域或其它内容项属性来测量。例如,如果内容项在过去四个月内没有在客户端设备上被访问,但是在那个时间之前已被访问过25次,那么与仅在过去被访问一次的类似新近度的内容项相比,它有可能与用户更相关。
在一个实施例中,除了对每个内容项的最新访问,为每个内容项维护访问次数(在或者客户端设备100或者内容管理系统110处)。确定每个内容项的得分,作为表示每个变量的度量的加权组合。例如,每个内容项的加权得分基于对于内容项的访问频率的度量及其最后访问日期。例如
Score=w1F+w2A
其中F是表示访问频率的度量,A是表示自上次访问内容项以来的时间的度量,并且w1和w2是权重。用于A和F的权重可以基于由用户、由系统管理员确定的相对重要性,或者基于特定客户端设备100上对于内容项的历史内容项访问模式。然后,队列将按照Score排序。在每个索引处计算累计和,并与所需存储空间进行比较。当所需存储空间被累计和超过时,索引和队列中那个索引之上的所有内容项被选择用于从客户端设备100移除。
表5图示了这种选择方法的一个示例。在这个示例中,所需存储空间为40MB,并且权重w1和w2均为1。队列按总得分排序,并将累计和与所需存储空间进行比较。这导致项C和E被选择用以从客户端设备100移除。
表5
上述UCSM中的任何一个可以考虑单个队列索引内的整个文件夹,而不是仅个体文件。例如,如果正在使用LRA UCSM并且文件夹包含多个文件,其中文件夹中最近访问的文件具有比共享内容目录中的所有其它内容项更早的访问日期,那么可以更高效地选择整个文件夹是被忽视的(尤其如果需要大量的存储空间)。可替代地,用于文件夹的组合度量可以是概括文件夹内的内容项的平均值、中值或其它统计量,从而允许将其放入队列中。
在下面的描述中,可以使用前述方法中的任何一个来选择用于从客户端设备100移除的被忽视的内容项。选择被忽视的内容项的这个过程启用客户端设备上增强的存储能力,如由受约束的内容管理系统100所提供的。
内容管理系统的概述
可以参考图2所示的体系架构来解释在客户端设备100A和100B之间使用内容管理系统110的同步方法。下面描述可以与存储受约束的同步一起使用的许多可能的同步方法之一。
内容管理系统110将内容项存储在数据存储218中。内容项被存储在称为块的固定尺寸的部分中。块的尺寸根据实现而变化,并且在一个实施例中,块的尺寸为4兆字节。因此,小的内容项被存储为单个块,而大的内容项可以被分割成数十个、数百个或更多个块,以存储在内容管理系统110中。元数据包括定义内容项中的块和内容项中的块的排序的块列表。
未决块表220维护预期在内容管理系统处被接收的未决块的列表。未决块表220存储块(由块标识符标识)和客户端100指示将要发送的块所属的命名空间之间的关联。
命名空间表222存储将各个内容项与命名空间关联的数据,并维护将每个命名空间与客户端关联的数据。
元数据服务器212负责管理来自客户端的、将新内容项添加(“提交”)到内容管理系统110的请求。元数据服务器212还从客户端设备100接收同步内容项的请求。元数据服务器212维护客户端设备100与内容管理系统110同步的最后一次记录。当从客户端设备100接收到同步的请求时,元数据服务器212确定从最后一个同步时间戳起已经提交到与那个客户端设备100同步的命名空间的任何内容项。此外,元数据服务器212确定从最后一个同步时间戳起已经接收的任何未决块。
通知服务器216负责与客户端100通信,尤其是通知客户端新数据可用。通知服务器216在命名空间表222处维护与每个命名空间关联的客户端110的列表。当通知服务器216从块服务器214或元数据服务器212接收到新的块对于给定命名空间可用时,通知服务器216识别与命名空间表212中的命名空间关联的客户端。通知服务器216通知与命名空间关联的(一个或多个)客户端100,以唤醒(一个或多个)客户端100并指示新的块对于识别出的命名空间是可用的。
两个客户端100(客户端设备100A和客户端设备100B)之间的典型同步如下进行。首先,客户端设备100A向共享数据添加附加内容项。然后将附加内容项发送到内容管理系统110。内容管理系统110向客户端设备100B通知附加内容项在共享数据中,并且客户端设备100B从内容管理系统110检索附加内容项作为客户端设备100B。内容管理系统110使用未决块表220维护预期在内容管理系统110处被接收的内容项和未决块的列表,并且通知客户端设备100B下载与内容项对应的块,作为由内容管理系统110接收的块。未决块是与内容管理系统110预期接收并被用来识别可以在将内容项提交给内容管理系统110之前提供给接收方客户端设备100B的块的内容项对应的那些块。
为了管理传输中的(in-transit)内容项,内容管理系统110保留未决块的列表以及与未决块关联的命名空间。当接收到未决块时,通知与命名空间关联的客户端,并且可以发起对于接收到的块的传送。因此,上传客户端(提供新的内容项)和下载客户端(接收新的内容项)可以将块异步地传送到内容管理系统110。
客户端设备的概述
每个客户端设备100是计算设备,诸如台式机、膝上型电脑、平板电脑、移动设备或其它系统,其使用所安装的客户端应用200维护与内容管理系统110并与其它客户端同步的共享数据的本地副本。共享数据可以仅和与单个用户关联的客户端同步,或者可以和与多个用户关联的客户端同步。客户端设备100包括用于操纵共享数据和向共享数据添加数据的模块和应用,如关于图3进一步描述的。
图3示出了客户端应用200的模块。客户端应用200包括用于与内容管理系统110同步数据的各种模块和数据存储。客户端应用200包括内容同步模块310、散列模块320、下载模块330、上传模块340和存储管理模块350。此外,客户端应用200维护包括文件日志360、驻留文件表362、共享数据364、远程文件表366、配置文件368和块高速缓存370的数据存储。除了客户端应用200,图3还指示在客户端设备的操作系统上存在的存储内核扩展384。使用这些模块的客户端应用200及其关联的内核扩展的配置将客户端应用200实例化为能够执行本文描述的功能的特定计算机,这使得在客户端设备的存储容量和功能性能方面能够有所描述的改进。
共享数据364是已经与内容管理系统110同步的数据,并且包括从内容管理系统110接收的内容项。当用户在共享数据364中添加、修改或删除内容项时,这些改变与内容管理系统110同步。散列模块320和块高速缓存370工作,以识别包括正被上传到内容管理系统110的内容项的块。散列模块通过执行任何合适的散列算法(诸如MD5或SHA-1)来指定块标识符。内容同步模块310然后使用这些标识符将位于块高速缓存370中的驻留块与由内容管理系统110维护的块进行比较。这些模块在当前实施例中存在,但是这种块实现对于本发明的存储受约束同步不是必需的。
当在客户端应用200内的客户端设备100上数据被修改或添加到共享数据364时,对共享数据364的修改被发送到内容管理系统110。客户端设备100还被配置为从内容管理系统110接收通知。当客户端设备100接收到通知时,客户端设备100向内容管理系统110查询对共享数据364的修改。当共享数据被修改时,客户端设备100请求来自内容管理系统110的修改,以将共享数据存储在客户端设备100上。在一些情况下,修改后的数据可以与由影子项表示的内容项关联。在这种情况下,客户端设备100可以拒绝来自内容管理系统110的对修改后的数据的请求,直到由客户端设备100上的应用请求对由影子项表示的内容项的访问。可替代地,当共享内容项被另一个客户端设备100修改时,内容管理系统110可以请求受约束的客户端设备100恢复由影子项表示的内容项,使得可以以驻留在受约束的客户端上的其它内容项为代价对修改进行同步。
在客户端应用200内,文件日志360存储列出使用客户端应用200可以访问帐户的所有内容项的元数据的表。元数据包括与每个内容项对应的修订日期和时间、命名空间和块列表。不驻留或未同步的内容项仍然包括在文件日志360中。
驻留文件表362存储始终保持驻留在客户端设备100上的文件的列表,而不考虑存储约束。
远程文件表366存储已经被选择要从客户端设备删除并用影子项替换的文件的列表。这些文件仅由内容管理系统110以及可能能访问该文件的其他用户来维护。
配置文件368是由客户端应用200维护的文件,并且包含用于客户端设备的存储分配120。在一些实施例中,存储分配120可以由可能对客户端应用200进行控制的用户或计算机系统创建。例如,操作系统可以改变存储分配120,使得其可以维持足量的存储以供其它应用使用。
存储内核扩展384被配置为监视从应用到操作系统380的、访问内容项的请求,并且确定所请求的内容项是否是影子项,并且是执行这个功能的一种手段。存储内核扩展384构成对操作系统的结构和功能的直接修改,其使得能够增加客户端设备上的有效存储容量。
内核扩展384监视打开由客户端应用200管理的内容项的请求。内核扩展384通过监视操作系统380上的文件系统382来确定何时请求打开由客户端应用200管理的内容项380。当在文件系统382内进行对内容项的请求时,内核扩展384检查内容项的路径名,以确定它是否在存储在共享内容存储目录120内的内容项内。
内核扩展384通过确定其尺寸是否在阈值尺寸之下来确定所请求的内容项是否是影子项。可替代地,可以基于用于由客户端应用200管理的内容项的扩展文件属性来完成影子项的识别。指示影子项的文件属性可以被指定给影子项,使得内核扩展可以识别影子项而无需检查所请求的内容项的尺寸。如果文件被内核扩展384确定为影子项,那么内核扩展将标识信息传送到客户端应用200。
图4是示出用于访问不驻留在客户端设备100上但包括在文件系统中的内容项的过程的一个实施例的交互图,就好像内容项驻留在客户端设备100上一样。文件系统382接收400打开客户端设备100上的同步文件夹内的内容项的请求。请求可以来自任何应用,诸如文件浏览器、文字处理器、文档阅读器、图像编辑器等。存储内核扩展384截获402这种文件系统请求,并获得所请求的内容项的路径名。存储内核扩展384使用路径名来确定404内容项是否是影子项。存储内核扩展384可以通过检查所请求的内容项的尺寸来确定其是否低于预定阈值,或者以其它方式与影子项(4KB)的尺寸一致。可替代地,存储内核扩展384可以读取存储指示内容项是影子项还是常规内容项的值的文件属性扩展。如果内容项不是影子项,那么存储内核扩展384允许请求继续正常进行并将文件句柄给予文件系统,使得内容项可以被打开。
在确定内容项是影子项时,存储内核扩展384将请求标识号(关于请求的信息,包括请求类型)和文件路径发送到存储管理模块350,在文件名称中传递。存储管理系统350从远程文件表366中移除408文件名。存储管理系统350随后唤醒412下载线程,下载线程从内容管理系统110检查需要同步的内容项。当所请求的内容项已经从远程文件表408被移除时,下载线程现在可以从内容管理系统110请求414内容项信息,包括准备下载的所请求的内容项的尺寸。存储管理模块350从内容管理系统110接收416尺寸信息,并且确定418在客户端设备100上存储内容项是否将导致超过预定的存储限制。如果添加所请求的内容项将超过存储限制,那么存储管理模块350选择422存储在客户端设备100上的一个或多个内容项以便移除。但是,如果未超过存储限制,那么存储管理模块350继续下载430内容项。
在将所请求的内容项添加到共享内容存储目录120将超过存储分配130的情况下,存储管理模块350选择要移除的一个或多个内容项,以便在请求下载430之前有足够的存储空间可用于所请求的内容项,从而防止共享内容目录永远占用其被分配的空间。存储管理模块350使用上述UCSM中任何一个通过首先确定420被忽视的内容项来选择422要删除的内容项。在特定内容项的访问历史或与每个选择方法相关的其它信息存储在主机系统上的情况下,向主机系统(图4中未示出)请求更新这个信息的客户端应用300的版本。一旦已经获得了内容管理系统110中的每个内容项的访问历史的当前版本或任何其它所需信息,存储管理模块350就可以确定420被忽视的内容项。
然后,存储管理模块从客户端设备选择422被忽视的内容项以供移除。在这个实施例中,为了选择422要移除的内容项,存储管理模块350遍历在使用中由UCSM生成的队列,以创建至少与要下载的请求的内容项的尺寸一样大的存储空间。可以使用上述任何方法进行要移除的被忽视的内容项的选择。
然后,存储管理模块350将所选择的内容项的名称添加424到远程文件表366。一旦这种添加424被确认426,存储管理模块350就从共享内容存储目录120中移除428所选择的内容项,然后为每个被移除的内容项创建与被移除的内容项具有相同元数据和位置但不包含用于内容项的内容信息的对应影子项。影子项可以在客户端的用户界面中呈现,就好像它们仍然驻留在客户端设备100上一样。图8图示了如何在客户端设备100的用户界面中呈现影子项的示例。
在移除所选择的内容项之后,在客户端设备100上将存在足够的存储空间,并且可以从内容管理系统110下载所请求的内容项,而不超过共享内容存储目录120的存储限制。因而,存储管理模块350将下载请求430发送到下载模块330。然后,下载模块330利用内容管理系统110发起下载432。一旦内容项被下载434到下载模块330,就将其传递436到存储管理模块350,存储管理模块350将所请求的内容项保存438到先前识别出的位置,并且通知440存储内核扩展384下载完成。在一个实施例中,存储管理模块350将所下载的内容项的内容附加到影子项元数据,并且更新内容项属性,以指示内容项现在不再是影子项。这使得发出请求的应用能够使用与其用来最初请求访问内容项的相同的文件句柄和标识信息透明地访问所请求的内容项。然后,存储内核扩展384将文件句柄442传递到文件系统382,文件系统382给予发出请求的应用打开内容项444的许可。
图5是示出将内容项保存到正在接近其存储分配130的共享内容存储目录120的过程的一个实施例的交互图。内容项可以是共享内容存储目录120中的新创建的内容项、已经被重定位到共享内容存储目录120中的内容项,或者已经在共享内容存储目录120中并且然后以增加其尺寸的方式进行修改的内容项。该过程开始于应用向操作系统的文件系统382发出请求500,以将内容项保存在同步的文件夹内。存储内核扩展384监视这个请求并从文件系统接收502请求ID、文件路径和尺寸。存储内核扩展384然后将这个信息发送504到存储管理模块350。存储管理模块确定506新内容项的添加是否将使同步的文件夹超过其存储限制。如果未超过存储限制,那么允许文件系统382正常保存内容项。在超过存储限制的情况下,存储管理模块350确定508被忽视的内容项并从客户端设备中选择它们以进行移除。一旦选择了被忽视的内容项,它们的名称就被添加512到远程文件表366中,使得它们的内容将不被内容管理系统110同步。存储管理模块然后从客户端设备100中移除所选择的内容项并用影子项替换514它们,这些影子项与被移除的内容项具有相同的元数据和位置,但不包含任何内容。当这个过程完成时,存储管理模块的受约束的文件夹中存在足够的存储空间,以允许516保存原始内容项。然后,存储管理模块唤醒518上传线程,该线程访问520元数据,使得所保存的内容项的内容被上传512到内容管理系统110。
除了自动移除内容项和创建影子项,一些实施例还允许用户选择仅在内容管理系统110上远程存储的特定内容项。这可以通过简单地允许用户从在特定同步的内容项上的上下文菜单(例如,“右键单击”)来实现。然后,客户端应用200将向用户呈现使所选择的内容项成为远程的选项。如果用户选择这个选项,那么从客户端设备100移除内容项、将内容项的名称添加到远程文件表366,并且创建具有原始内容项的相同元数据和位置的影子项,以表示原始内容。如果用户想要在将来访问内容项,那么图5中描述的相同过程可以被用来从内容管理系统100检索内容项。
在一些实施例中,客户端设备被配置为使得当达到存储分配130时使用户能够选择保持驻留在客户端设备上的特定内容项,而不管UCSM是否实际上将以其它方式从客户端设备100选择它们以便移除。这个实施例提供了允许用户维持快速访问特别重要的内容项的操作改进。在这个实施例中,客户端应用200使用户能够访问上下文菜单,然后选择强制内容项保持驻留在客户端设备100上的选项。在选择时,内容项的名称被添加到驻留文件表362。驻留文件表362随后在被422中所示的存储管理模块350使用的UCSM期间被访问,并且表中的所有内容项从选择过程中被排除。例如,当选择给定内容项以供移除时,检查驻留文件表362,以确定其中是否列出所选择的内容项;如果是这样,那么所选择的内容项被忽略,并且另一个内容项实际上被UCSM选择。
因为与客户端设备100上的影子项关联的内容没有被同步,所以它可能使内容管理更加复杂。例如,如果一个客户端设备上的用户移动在第二客户端设备上被表示为影子项的内容项,那么,如果第二客户端设备没有接收到关于影子项的同步数据,那么其位置可以在第一客户端设备上改变,但不在另一个客户端设备上改变。例如,内容项可以被一个客户端设备100完全地从内容管理系统110删除,同时在不同的客户端设备100上由影子项表示。如果发生这种情况,那么第二客户端设备100的用户可能尝试访问由影子项表示的内容项,仅发现它不再存在。为了避免这些混乱的情况,在一些实施例中,内容管理系统110被配置为仅针对元数据同步影子项;即,如果影子项的任何属性改变,那么内容管理系统110将使修改后的属性与能访问那个内容项的所有客户端设备100都同步,而不管内容项是否被表示为那些客户端设备中任何一个上的影子项。因此,如果内容项从一个客户端设备被删除,那么表示那个内容项的影子项也在任何其它客户端设备100上被删除。可替代地,在一些实施例中,如果内容项在另一个客户端设备上被修改,使得其尺寸改变,使得它可以适合放在客户端设备100上的共享内容存储目录120中的剩余存储中,那么,即使不请求对内容项的访问,也可以将其下载到客户端设备100。
前述实施例中的一些表示基于客户端的受约束的同步系统,因为客户端应用200负责确保不超过预定的存储分配130并且从内容管理系统110请求数据。在基于主机的实施例中,如图6中所示,内容管理系统110管理受约束的同步过程,包括维护识别用于每个客户端设备100的远程和驻留内容项信息的信息。基于主机的实施例可以提供在客户端设备100上增加有效存储容量的相同优点,同时减少客户端设备所需的计算,从而与其它实施例相比改进客户端设备100的性能。受约束的内容管理系统600包括图2中所示的内容管理系统110的元件,被进一步修改为利用存储管理模块350连同存储管理模块350正常运行所需的必要数据文件。在受约束的内容管理系统内,元数据服务器212、块服务器214、通知服务器216、数据存储218、未决块表220和命名空间表222以与在内容管理系统110中实现的相同的方式起作用。此外,存储管理模块350以与驻留在客户端设备上时的方式相似的方式工作,其中它负责确定何时将超出存储空间限制以及适当地创建影子项。存储管理模块350还负责从客户端设备100接收关于由操作系统380发出的请求的信息。当请求打开一个或多个内容项时,关于该请求的信息被发送到内容管理系统110,以便由存储管理模块350远程监视,使得进行所需的下载,以提供对客户端设备100上的影子项的访问。存储管理模块350使用客户端配置文件610来提供关于与受约束的内容管理系统关联的每个客户端设备上存储配置的信息。同步表620是需要与受约束的内容管理系统600同步的客户端设备上的所有内容项的记录;包括在这个表中的内容项将是位于数据存储218中的内容项的子集,因为一些内容项是影子项,并且仅需要元数据同步。另外,在这个实施例中,同步表620可以通过使用被配置为使得它们指示每个内容项都应当在其上远程保持或驻留的客户端设备100的驻留文件表362和远程文件表366来替换。对于使用后一种配置的实施例,用于影子项的元数据同步的实现更容易,因为影子项直接在每个客户端设备100的远程文件表366中被识别。用户数据630存储在受约束的内容管理系统600上,使得存储管理模块350可以确定被忽视的内容项。
图7是示出主机管理的受约束存储同步的过程的一个实施例的交互图。客户端设备上的应用请求700将内容项保存到客户端设备上的同步文件夹。存储内核扩展记录702请求ID、文件路径和内容项尺寸,并将该信息传送704到客户端应用200。客户端应用200将内容项尺寸信息转发706到受约束的内容管理系统600上的存储管理模块350。存储管理模块350从客户端配置文件610请求708用于它从其接收706内容项尺寸信息的特定客户端的存储限制。除了驻留在客户端设备100上的其它内容项,存储管理模块350通过比较该尺寸与从客户端配置文件610接收的存储分配来确定712存储限制将被超过。存储管理模块350从同步表620请求714客户端上的内容数据,使得它可以从客户端上的同步的内容项中选择从客户端移除的内容项。同步表利用用于特定客户端的同步内容数据进行响应716。存储管理模块350从存储在主机设备上的用户数据630请求718用户访问数据,以用来确定LRA内容项。一旦从用户数据表630接收820到这个数据,存储管理模块350就可以确定722LRA内容项,并选择724应当从客户端移除以提供所需存储空间的那些内容项。存储管理模块350向客户端应用200发送移除内容项并创建影子项728的请求。它给予730客户端应用200完成原始请求700以保存内容项的许可。最后,存储管理模块更新732用户数据,以反映用于保存的内容项的第一内容项访问,然后从元数据服务器212请求734客户端设备100的同步,因为新的内容项可用于上传。
图8图示了与提供受约束的同步的内容管理系统协同操作的客户端设备100的用户界面的示例。同步文件夹800充当共享内容存储目录120。文件夹800包含多个内容项,每个内容项由对应的图标810A(.m4a音乐文件)、810B(.xlsx电子表格)、810C(.docx字处理文件)、810D(.mat Matlab文件)和810E(.jpg图像文件)表示。每个图标810被覆盖有指示内容项的存储状态的状态图标820。
状态图标820A(“检查图标”)指示内容项当前驻留在客户端设备100上并且与由内容管理系统110维护的内容项的当前版本同步。
一旦完成与内容管理系统110同步,状态图标820B就指示该内容项将驻留在客户端设备100上。
状态图标820C指示内容项是影子项并且当前不驻留在客户端设备上,而是仍然在内容管理系统110上维护。
状态图标820D指示内容项驻留在客户端设备上并且与其由内容管理系统110维护的版本同步。此外,具有别针图标840的绿色圆圈指示内容项已被选择在存储约束期间保持驻留在客户端设备800上。
图9是图示受约束的同步的替代实施例的概念图,其预测用户对在客户端设备远程的特定内容项的访问,并且在访问之前下载预测的内容项。这种做法通过在大多数情况下消除用户可能不得不等待经网络从内容管理系统110检索内容项的时间来进一步改进客户端设备的操作。对于共享内容存储目录120中的每个内容项,计算保留得分900。这个得分是内容项的预测重要性的测量,并且可以作为最新访问时间或者被确定为预测用户请求的多个其它因素的函数来计算,如在后面一节中解释的。此外,每个内容存储目录120配置有保留得分阈值910,该阈值可以由用户指定或者设置为预定的值。每当由相同内容项的保留得分900测得的内容项的预测重要性超过能访问该内容项的客户端设备100上的特定共享内容存储目录120的保留得分阈值910时,当该内容项远离客户端设备时,该内容项被下载到共享内容存储目录,并且如果其驻留在客户端设备上,那么在共享内容目录中维护该内容项。
阶段9.1图示了内容管理系统的典型状态,该系统预测用户对内容项的访问。在这个图示中,内容管理系统110管理两个客户端设备100A和100B。共享内容存储目录120A和120B位于它们各自的客户端设备内。共享内容存储目录120A存储内容项140A、140B和140C,而共享内容存储目录120B存储内容项140A和内容项140D的影子项表示160A。所有内容项140的同步版本都存储在内容管理系统110上。
此外,每个内容项140具有对应的保留得分900,其中900A是用于内容项140A的保留得分,900B是用于内容项140B的保留得分,等等。每个共享内容存储目录还配置有保留得分阈值910,其中910A是用于共享内容存储目录120A的保留得分阈值,而910B是用于共享内容存储目录120B的保留得分阈值。
在阶段9.1中,内容项140A未在共享内容存储目录120B中被维护。虽然在这种情况下没有驻留在共享内容存储目录120内的内容项具有低于保留得分阈值910的保留得分900,但是,如果除了来自这个实施例的那些特征还使用来自先前描述或在以下一节中描述的其它实施例的特性(trait),那么这种场景是可能的。例如,存储分配可能仍然有影响,因此,如果存储分配足够大,那么,即使其保留得分低于保留得分阈值910,保留得分也可能不需要远程保持文件。
在阶段9.2中,客户端设备100A的用户对内容项140A执行被认为是访问内容项140A的用户动作920。因为,在这个示例中,作为最新访问时间的函数来计算保留得分900,所以内容项140A的保留得分900A从20增加到60(这个变化的量值对于这个示例是任意的。关于保留得分计算的细节稍后提供,并且不会导致相同的得分改变)。
在阶段9.3中,内容管理系统110(或者,在一些实施例中,客户端100B上的客户端应用)确定内容项140A的保留得分900A大于或等于其中内容项140A是远程的共享内容存储目录120B的保留得分阈值910B。因为保留得分900A超过保留得分阈值910B,所以内容项140A被下载到客户端设备100B并存储在共享内容存储目录120B中。
与UCSM类似,存在许多保留得分计算方法。一般而言,保留得分可以针对用户行为属性被归一化,从而对于每个客户端设备导致对于相同的内容项有不同的保留得分,或者全局地设置,使得得分对于每个客户端设备是相同的。归一化的保留得分的优点在于它们可以平衡用户行为的差异。例如,如果保留得分是内容项的最新访问时间的函数,其中,随着当前时间与最新访问时间之间的时间减少得分增加,那么,当与较不活跃的用户共享的内容项相比较时,更加活跃的用户将提高与那个用户共享的内容项的保留得分。如果第三用户的保留得分不被归一化,那么,与活跃用户和较不活跃的用户共享,保留得分将失去其预测质量,因为只有来自活跃用户的项具有最高的保留得分,即使活跃用户的最近访问对于第三用户的访问比较不活跃的用户的最近的访问的预测性差。每当保留得分被归一化时,它可以被归一化为特定用户或特定内容项的属性。
以下方法是用于确定保留得分(或预期用户对内容项的访问的得分)的方法的示例。此外,保留得分可以使用以下方法的组合来创建预测重要性的最有预测性的测量。通常,保留得分随着内容项的预测重要性增加而增加,但是,如果对于实施例方便的话,相反的情况可能是真的。在这种情况下,对应的保留得分阈值将是最小值,其中,如果内容项的保留得分小于或等于保留得分阈值,那么它将被下载到对应的共享内容存储目录。为了本讨论的目的,将假设不断增加的保留得分的默认情况。
最新访问评分:对于最新访问评分,内容项的保留得分是那个内容项的最新访问时间的函数。保留得分可以简单地是当前时间与最新访问时间(以秒计)之差的倒数:
RS=1/(tC-tA)
其中RS是保留得分,tC是当前时间,并且tA是最新访问时间。
如果特定实施例需要归一化,那么可以使用各种用户属性,诸如用户或客户端设备的访问频率,这被定义为在预定时间段内由特定用户或在特定客户端设备上的任何共享内容项的访问次数。可替代地,可以使用与特定用户或客户端设备共享的内容项的平均最新访问时间。
访问频率评分:对于访问频率评分,内容项的保留得分随着在预定时间段内对相同内容项的访问次数的增加而增加。为了归一化访问频率评分,用于给定内容项的访问频率可以按照用于客户端设备上的或与用户共享的所有内容项的平均访问频率进行划分或缩放。
位置相关访问评分:对于位置相关访问评分,第一内容项的保留得分是最新访问时间、访问频率或内容项本身的任何其它特点以及与第一内容项存储在相同文件夹中的附加内容项的相同特点的加权组合。这意味着对文件夹内的内容项的访问是对同一文件夹内的其它内容项的访问的预测。
类似访问评分:对于类似访问评分,第一内容项的保留得分是最新访问时间、内容项本身的访问频率和与第一内容项具有类似属性的附加内容项的相同特点的加权组合。属性可以包括内容项类型、尺寸、位置、能访问内容项的用户等。这意味着对类似内容项的访问是对内容项的未来访问的预测。
基于标准的保留评分:对于基于标准的保留评分,内容项的保留得分基于由内容项满足的先前识别出的预测标准的数量。例如,在24小时内由另一个用户对内容项的访问、最近一周访问频率大于5次的访问以及在过去3天内对足够相似的内容项的访问都可以是被预定为预测在接下来的6小时内尝试访问远程内容项的标准。因此,内容项的保留得分可以针对内容项满足的每个标准增加预定的量值。用于特定满足标准的增加量值可以与具体标准的预测强度成比例。
图10图示了对于受约束的同步使用预测内容项重要性的内容管理系统的系统环境。除了前一节中已注明的之外,图10中存在的受约束的内容管理系统600的大多数模块执行与参考图6描述的功能相似或完全相同的功能。因此,本节中不详细解释内容管理系统1000中的所有模块的功能。
内容管理系统1000包括元数据服务器212、块服务器214、通知服务器216、数据存储218、未决块表220、命名空间表222、存储管理模块350、客户端配置文件610、同步表620、用户数据630、保留得分表1010和保留得分模块1020。客户端配置文件610和用户数据630与图6中描述的先前版本相比具有显著的改变。客户端配置文件610被修改,以包括用于每个客户端设备的每个共享内容存储目录的保留得分阈值,同时修改用户数据以包括与正在使用的保留评分方法相关的用户数据。保留得分模块1020接收用户数据630和来自数据存储218的数据,以生成保留得分表1010。保留得分表是列举由内容管理系统1000管理的每个内容项的保留得分的表。如果归一化被用来计算保留得分,那么对于每个客户端设备可以存在单独的保留得分表。每当内容项的保留得分被更新时,保留得分模块1020咨询客户端配置文件610和同步表620,以确定与最近改变的保留得分对应的内容项在任何客户端设备上是否是远程的以及它是否超过那些客户端设备的任何保留得分阈值。如果超过保留得分阈值,那么保留得分模块请求存储管理模块350执行表示影子项的必要下载和替换。
图11图示了用于受约束的同步的另一个实施例的客户端应用1100的软件体系架构。这个实施例在客户端设备被客户端应用确定为空闲时进行远程内容项的所有下载、被忽视的内容项的移除以及影子文件的创建。受约束的同步过程的这种定时改变通过相对于先前描述的实施例提供功能改进来改进客户端设备,同时提供有效存储容量的类似增加。为了执行这些功能,触发空闲状态的实施例修改图3中所示的系统体系架构。在这个实施例中,客户端应用1100由内容同步模块310、保留状态模块1110、文件日志360、驻留文件表362、共享数据364、远程文件表366、配置文件368和块高速缓存370组成。内容同步模块310进一步由散列模块320、下载模块330、上传模块340和存储管理模块350组成。保留状态模块1110进一步由状态计算模块1120、状态比较模块1130、动作模块1140和系统状态模块1150组成。除非另有说明,否则如本领域技术人员将认识到的,所有先前提及的模块和数据表都具有与前述略有修改的相同的功能,以容纳新模块。下面解释任何主要修改。
系统状态模块1150使用存储内核扩展382来测量操作系统380上的系统活动。系统活动可以使用用于处理器活动的度量来测量,包括但不限于作为处理器频率或另一个CPU使用度量的比率的(对于多个处理器内核,具有或不具有调整)非空闲处理器循环的数量、线程的数量或者客户端设备100的进程的数量。还可以使用网络活动度量,包括作为特定端口或连接的最大速度的比率的以位/秒或分组/秒为单位定义的网络利用率。此外,可以使用存储器使用度量(包括可用或空闲(free)随机存取存储器(RAM)的数量)来测量系统活动。系统状态模块1150可以单独地或组合地使用上面提到的活动度量或任何其它合适的活动度量来测量整个系统活动。
当系统活动的测量低于预定活动阈值时,系统状态模块1150向保留得分模块1110报告客户端设备当前处于空闲状态。这个活动阈值可以被定义为由活动度量定义的客户端设备的总计算资源的百分比,或者活动阈值可以被定义为活动度量的特定值。例如,活动阈值可以被定义为使用小于25%的可用处理资源的客户端设备100的状态。可替代地,活动阈值可以被定义为当客户端设备100的其它进程总共使用小于2GB的存储器或客户端设备上存在至少4GB的总存储器时的状态。
当客户端设备100被系统状态模块1150确定为处于空闲状态时,状态计算模块1120确定共享内容存储目录120的保留状态。一般而言,保留状态由驻留在客户端设备上的内容项以及与这些内容项对应的属性集合组成。这些属性可以包括内容项尺寸、最新访问时间、访问频率、目录位置,或指示内容项对于在客户端设备上保留的重要性的任何其它合适的属性。此外,保留状态可以由使用上面列出的至少一个属性计算的统计量集合来表示。
比较模块1130从状态计算模块1120接收保留状态,然后将共享内容存储目录120的当前保留状态与在配置文件368中定义的预定阈值保留状态进行比较,该阈值可以由用户指定。阈值保留状态是与包括在保留状态中的客户端设备的属性或计算的统计量有关的标准集合。比较模块1130确定当前保留状态是否满足阈值保留状态的标准。如果这些标准被违反(例如,不满足),那么比较模块1130向动作模块1140报告与属性或基于那些属性计算的、违反阈值保留状态标准的统计量对应的内容项。
动作模块1140从比较模块1130接收报告。然后,它确定什么动作将保留状态恢复到阈值保留状态标准之内。这些动作可以包括从共享内容存储目录120中移除内容项并用影子项替换它们,或者用内容项本身替换表示远程内容项的影子项。一旦确定了这些动作,动作模块1140就请求内容同步模块310完成所需的动作。
可替代地,触发空闲状态的受约束的同步可以由内容管理系统本身进行,这进一步减少了客户端设备上的计算负担,并提高了设备对其它用途的可用性。图12图示了完成这个任务的系统环境。受约束的内容管理系统1200由元数据服务器212、块服务器214、通知服务器216、数据存储218、未决块表220、命名空间表222、存储管理模块350、客户端配置文件610、同步表620、用户数据630、保留状态表1210、保留状态模块1220组成。除非另有说明,否则如本领域技术人员将认识到的,所有先前提及的模块和数据表都具有与前述略有修改的相同的功能,以容纳新模块。下面解释任何主要修改。
在这个实施例版本中,连接到内容管理系统1200的客户端设备上的客户端应用200向内容管理系统1200报告客户端设备的状态。当客户端设备空闲时,内容管理系统1200使用保留状态模块1220来确定空闲客户端设备上的共享内容存储目录120的保留状态。保留状态模块然后更新保留状态表1210,该表包含连接到内容管理系统1200的所有客户端设备的当前保留状态。然后,保留状态模块1220使用潜在类似的子模块进行与保留状态模块1110类似的步骤,如在图11的讨论中所描述的。
可以使用各种方法来确定共享内容存储目录的保留状态。一般而言,保留状态是基于标准的,并且每当客户端应用确定客户端设备空闲时它将被周期性地维护。但是,也有可能数值地实现保留状态和阈值保留状态,使得每个状态由使用驻留在客户端设备上的内容项的属性计算出的统计量来表示。如果保留状态是基于标准的,那么阈值保留状态是共享内容存储目录中的内容项必须满足的标准的集合。此外,在基于标准的保留状态的情况下,可以向用户给出选择保留状态标准的选项,从而允许定制驻留在客户端设备100上的内容项的类别。
用来检查每个客户端设备的周期可以是由用户设置或基于特定客户端设备的使用模式确定的内容管理系统的预定值。例如,如果用户平均每24小时访问其客户端设备上的内容项,那么该周期可以被设置为确保共享内容存储目录在24小时过去之前被维护。
作为周期性地检查共享内容目录的替代方案,另一个实施例可以仅在共享内容目录满足指示紧急性(例如,接近硬件存储限制)的第二标准集合时才维持共享内容目录。
存储空间标准:一个可能的标准集合是具有存储分配标准。例如,可以将存储分配设置为20GB,而不是像先前的实施例那些运作,内容管理系统将允许存储在共享内容存储目录上的内容项超过标准值(在这个示例中为20GB),直到设备空闲。然后,可以使用类似的确定被忽视的内容项的过程来移除适当的内容项并满足共享内容存储目录的存储空间标准。
访问时间标准:第二标准可以是访问时间标准。例如,该标准可以声明,没有其最新访问时间早于过去预定时间间隔的内容项可以驻留在共享内容存储目录中。这些内容项将被允许保留在共享内容存储目录中,直到客户端设备空闲。在那个点,保留状态模块将简单地请求移除其最新访问时间早于预定时间间隔的所有内容项。
内容项尺寸标准:另一个标准集合是内容项尺寸标准。对于这种方法,设置各个内容项的尺寸的阈值。因此,每当设备空闲时,超过或低于那个阈值的任何内容项将从客户端设备上的驻留中被移除。
访问频率标准:最后,访问频率标准被用来在保持驻留在客户端设备上所需的预定时间间隔内设置最小访问次数。如果特定的内容项不被足够频繁地访问,那么它将在它空闲的任何时候从客户端设备移除。
要注意的是,这个保留标准列表并不是详尽的。此外,这些标准可以彼此结合使用,从而产生更复杂的规则。
图13是图示触发空闲状态的受约束的内容管理的功能的流程图。首先,系统进行检查1300,以确定特定客户端设备是否空闲。这个步骤或者周期性地或者响应于内容存储目录达到预定阈值来完成。如果设备空闲,那么系统确定1310客户端设备的保留状态。然后,系统将共享内容存储目录的当前保留状态与用于共享内容存储目录的保留状态标准进行比较。如果共享内容存储目录的当前保留状态满足标准,那么系统恢复检查1300,以确定客户端设备是否空闲。如果违反保留状态标准,那么系统识别1330要对共享内容存储目录执行的、共享内容存储目录满足保留状态标准所需的动作。然后,系统对共享内容存储目录执行1340那些动作,以符合预定的保留状态标准。
为了说明,已经给出了本发明的实施例的前述描述;但并不意在是详尽的或者将本发明限制到所公开的精确形式。相关领域的技术人员可以认识到,鉴于上述公开内容,许多修改和变化是可能的。
本描述的一些部分依据关于信息操作的算法和符号表示来描述本发明的实施例。这些算法描述和表示是数据处理领域的技术人员通常使用的,以便有效地将其工作的实质传达给本领域技术人员。虽然这些操作在功能上、计算上或逻辑上进行了描述,但是这些操作应当被理解为由计算机程序或等效电路、微代码等实现。此外,有时将这些操作的布置称为模块被证明也是方便的,而不失一般性。所描述的操作及其相关联的模块可以以软件、固件、硬件或其任意组合来体现。
本文描述的任何步骤、操作或过程可以单独地或与其它设备组合地利用一个或多个硬件或软件模块执行或实现。在一个实施例中,利用计算机程序产品来实现软件模块,该计算机程序产品包括包含计算机程序代码的计算机可读介质,计算机程序代码可以由计算机处理器执行,以执行所描述的任何或全部步骤、操作或过程。
本发明的实施例还可以涉及用于执行本文的操作的装置。这种装置可以为所需目的而特别构造,和/或它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这种计算机程序可以存储在可以耦合到计算机系统总线的非暂态的有形计算机可读存储介质或适于存储电子指令的任何类型的介质中。此外,在本说明书中提到的任何计算系统都可以包括单个处理器或者可以是为了增加的计算能力而采用多个处理器设计的体系架构。
本发明的实施例还可以涉及由本文所述的计算过程产生的产品。这种产品可以包括从计算过程产生的信息,其中信息被存储在非暂态的有形计算机可读存储介质上,并且可以包括本文所述的计算机程序产品或其它数据组合的任何实施例。
最后,在说明书中使用的语言主要是为了可读性和教学目的而选择的,并且它可能没有被选择来描绘或限定本发明的主题。因此,本发明的范围意在不受这种详细描述的限制,而是由在本申请基础之上发布的任何权利要求限制。因而,本发明的实施例的公开意在是说明而不是限制在以下权利要求中阐述的本发明的范围。

Claims (16)

1.一种同步内容项的计算机实现的方法,包括:
由内容管理系统在命名空间中在与所述命名空间相关联的第一客户端设备上存储表示为影子项的同步内容项,所述第一客户端设备配置有第一保留得分阈值;
由内容管理系统基于内容项的至少一个属性确定内容项的保留得分;
确定内容项的保留得分是否超过第一客户端设备的第一保留得分阈值;以及
响应于确定内容项的保留得分超过所述第一保留得分阈值,使第一客户端设备用所述内容项替换第一客户端设备上的所述影子项。
2.如权利要求1所述的计算机实现的方法,还包括:
由内容管理系统识别与命名空间相关联的、将内容项存储为影子项的第二客户端设备,所述第二客户端设备配置有第二保留得分阈值;以及
响应于确定内容项的保留得分超过第二保留得分阈值,使第二客户端设备用所述内容项替换第二客户端设备上的所述影子项。
3.如权利要求1所述的计算机实现的方法,其中所述至少一个属性选自包括以下的组:最新访问时间、位置、类型、尺寸、访问频率、共享状态、能访问的帐户的数量、能访问的设备的数量以及存储内容项的设备的数量。
4.如权利要求3所述的计算机实现的方法,其中保留得分随着以下至少一个的发生而增加:
当前时间与内容项的最新访问时间之间的差异的减小;
对于内容项的访问频率的增加;
对于与所述内容项在相同的文件夹中的其它内容项,当前时间与最新访问时间之间的差异的减小;或者
对于类似的内容项,当前时间与最新访问时间之间的差异的减小,其中类似的内容项是与所述内容项具有类似属性的内容项。
5.如权利要求3所述的计算机实现的方法,其中最新访问时间是通过与命名空间相关联的任何客户端设备访问所述内容项的最新时间。
6.如权利要求3所述的计算机实现的方法,其中最新访问时间和访问频率是基于对内容项的一次或多次访问来计算的,对内容项的访问包括以下至少一个:客户端设备上的客户端应用打开内容项、客户端设备上的客户端应用修改内容项或者客户端设备上的客户端应用显示内容项。
7.如权利要求1所述的计算机实现的方法,其中内容项的第一保留得分是两个或更多个数值的总和,每个数值具有权重并且表示一个或多个预测标准中由所述内容项满足的预测标准,其中预测标准是以下之一:
阈值内容项最新访问时间;
阈值内容项访问频率;
特定的内容项位置;以及
用于类似内容项的最新访问时间阈值。
8.如权利要求7所述的计算机实现的方法,其中表示预测标准的每个数值的权重基于尝试访问在预测标准被相同内容项满足的预定时间段内发生的内容项的可能性。
9.一种同步内容项的计算机实现的方法,包括:
由内容管理系统接收用于存储在命名空间中的第一内容项的访问指示符,该访问指示符从与所述命名空间相关联的第一客户端设备接收;
响应于接收访问指示符,由内容管理系统基于第一内容项的至少一个属性来确定第一内容项的第一保留得分;
由内容管理系统识别与第一内容项相关联的第二客户端设备,第二客户端设备将第一内容项存储为第一影子项,第二客户端设备配置有第一保留得分阈值;以及
响应于确定第一保留得分超过第二客户端设备的第一保留得分阈值,使第二客户端设备用第一内容项替换第二客户端设备上的第一影子项。
10.如权利要求9所述的计算机实现的方法,还包括:
由内容管理系统基于第一内容项的至少一个属性来识别第二内容项,第二内容项在第一客户端设备上被存储为第二影子项;
基于第二内容项的至少一个属性,由内容管理系统确定用于第二内容项的第二保留得分;以及
响应于确定第二保留得分超过第一客户端设备的第二保留得分阈值,使第一客户端设备用第二内容项替换第一客户端设备上的第二影子项。
11.如权利要求9所述的计算机实现的方法,其中所述至少一个属性选自包括以下的组:最新访问时间、位置、类型、尺寸、访问频率、共享状态、能访问的帐户的数量、能访问的设备的数量以及存储第一内容项的设备的数量。
12.如权利要求11所述的计算机实现的方法,其中第一保留得分随着以下至少一个的发生而增加:
当前时间与第一内容项的最新访问时间之间的差异的减小;
对于第一内容项的访问频率的增加;
对于与第一内容项在相同的文件夹中的其它内容项,当前时间与最新访问时间之间的差异的减小;或者
对于类似的内容项,当前时间与最新访问时间之间的差异的减小,其中类似的内容项是与第一内容项具有类似属性的内容项。
13.如权利要求11所述的计算机实现的方法,其中最新访问时间是通过与命名空间相关联的任何客户端设备访问所述第一内容项的最新时间。
14.如权利要求12所述的计算机实现的方法,其中最新访问时间和访问频率是基于对第一内容项的一次或多次访问来计算的,对内容项的访问包括以下至少一个:任意客户端设备上的客户端应用打开第一内容项、任意客户端设备上的客户端应用修改第一内容项或者任意客户端设备上的客户端应用显示第一内容项。
15.一种用于同步内容项的计算机系统,包括:
处理器;以及
存储指令的存储器,所述指令在由处理器执行时使处理器:
由内容管理系统在命名空间中在与所述命名空间相关联的第一客户端设备上存储表示为影子项的同步内容项,其中第一客户端设备配置有第一保留得分阈值;
由内容管理系统基于内容项的至少一个属性确定内容项的保留得分;
确定内容项的保留得分是否超过第一客户端设备的第一保留得分阈值;以及
响应于确定内容项的保留得分超过第一保留得分阈值,使第一客户端设备用所述内容项替换第一客户端设备上的所述影子项。
16.一种存储指令的非暂态计算机可读存储介质,所述指令在由处理器执行时使处理器执行以下步骤:
由内容管理系统在命名空间中在与所述命名空间相关联的第一客户端设备上存储表示为影子项的同步内容项,所述第一客户端设备配置有第一保留得分阈值;
由内容管理系统基于内容项的至少一个属性确定内容项的保留得分;
确定内容项的保留得分是否超过客户端设备的第一保留得分阈值;以及
响应于确定内容项的保留得分超过所述第一保留得分阈值,使第一客户端设备用所述内容项替换第一客户端设备上的所述影子项。
CN201710635654.5A 2015-01-30 2015-10-03 存储受约束的共享内容项同步方法、系统和存储介质 Active CN107426319B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US14/611,116 2015-01-30
US14/611,117 US9413824B1 (en) 2015-01-30 2015-01-30 Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US14/611,117 2015-01-30
US14/611,116 US9185164B1 (en) 2015-01-30 2015-01-30 Idle state triggered constrained synchronization of shared content items
US14/611,115 US9361349B1 (en) 2015-01-30 2015-01-30 Storage constrained synchronization of shared content items
US14/611,115 2015-01-30
CN201580072024.0A CN107409142A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580072024.0A Division CN107409142A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步

Publications (2)

Publication Number Publication Date
CN107426319A true CN107426319A (zh) 2017-12-01
CN107426319B CN107426319B (zh) 2019-03-26

Family

ID=54288863

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201580072024.0A Pending CN107409142A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步
CN201710635647.5A Pending CN107426318A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步
CN201710635654.5A Active CN107426319B (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步方法、系统和存储介质

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201580072024.0A Pending CN107409142A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步
CN201710635647.5A Pending CN107426318A (zh) 2015-01-30 2015-10-03 存储受约束的共享内容项同步

Country Status (7)

Country Link
EP (5) EP3584716B1 (zh)
JP (3) JP6573674B2 (zh)
KR (4) KR101916240B1 (zh)
CN (3) CN107409142A (zh)
AU (3) AU2015379551B2 (zh)
CA (3) CA2977696C (zh)
WO (1) WO2016120683A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815247A (zh) * 2019-01-09 2019-05-28 金蝶软件(中国)有限公司 信息同步方法、装置、计算机设备和存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
CN110659250B (zh) * 2018-06-13 2022-02-22 中国电信股份有限公司 文件处理方法和系统
US11360943B2 (en) 2020-04-13 2022-06-14 Citrix Systems, Inc. Unified file storage system
EP3896578A1 (en) * 2020-04-13 2021-10-20 Citrix Systems, Inc. Unified file storage system
US11917215B2 (en) 2021-12-01 2024-02-27 Rovi Guides, Inc. Systems and methods for minimizing number of copies of content items stored at server

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101288074A (zh) * 2005-07-14 2008-10-15 微软公司 将数据从存储卷中的文件转移到替换位置以释放空间
US20080263227A1 (en) * 2007-04-23 2008-10-23 Ianywhere Solutions, Inc. Background synchronization

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140213A (ja) * 2000-11-01 2002-05-17 Yano Electric Co Ltd 情報管理装置および方法、情報管理システム、ならびに、情報管理装置にインストールされるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002244914A (ja) * 2001-02-15 2002-08-30 Ricoh Co Ltd クライアント、文書管理システム及び記憶媒体
US8442957B2 (en) * 2001-09-26 2013-05-14 Emc Corporation Efficient management of large files
US7680849B2 (en) * 2004-10-25 2010-03-16 Apple Inc. Multiple media type synchronization between host computer and media device
JP2004054633A (ja) * 2002-07-19 2004-02-19 Sony Communication Network Corp 情報同期方法とこの方法を利用可能な情報同期装置および情報端末
TW583538B (en) * 2003-01-17 2004-04-11 Yu-De Wu Method of remote redundancy
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
JP2005228242A (ja) * 2004-02-16 2005-08-25 Nec Commun Syst Ltd 移動体通信システムおよび移動端末機器
US7257689B1 (en) * 2004-10-15 2007-08-14 Veritas Operating Corporation System and method for loosely coupled temporal storage management
US7395389B2 (en) * 2006-07-27 2008-07-01 Microsoft Corporation Extending non-volatile storage at a computer system
CN101689174A (zh) * 2006-08-18 2010-03-31 索尼株式会社 通过推荐引擎进行选择性媒体访问
US7953946B2 (en) * 2007-04-16 2011-05-31 Microsoft Corporation Controlled anticipation in creating a shadow copy
JP2010257094A (ja) * 2009-04-23 2010-11-11 Hitachi Ltd 階層ストレージ管理システムにおける移動候補ファイルの抽出方法
JP5586892B2 (ja) * 2009-08-06 2014-09-10 株式会社日立製作所 階層化ストレージシステム及び階層化ストレージシステムにおけるファイルのコピー制御方法
JP5422298B2 (ja) * 2009-08-12 2014-02-19 株式会社日立製作所 階層管理ストレージシステムおよびストレージシステムの運用方法
US8200626B1 (en) * 2009-09-18 2012-06-12 Sprint Communications Company L.P. Mobile device file management
JP5427533B2 (ja) * 2009-09-30 2014-02-26 株式会社日立製作所 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
JP5343166B2 (ja) * 2010-05-27 2013-11-13 株式会社日立製作所 通信ネットワークを介してリモートのファイルサーバにファイルを転送するローカルのファイルサーバ、及び、それらのファイルサーバを有するストレージシステム
US8762344B2 (en) * 2010-09-17 2014-06-24 Hitachi, Ltd. Method for managing information processing system and data management computer system
JP5328057B2 (ja) * 2011-03-30 2013-10-30 富士重工業株式会社 車両用エネルギ吸収ビーム及び車両用ドア構造
WO2012137262A1 (en) * 2011-04-08 2012-10-11 Hitachi, Ltd. Information processing system and data processing method
WO2013121456A1 (en) * 2012-02-13 2013-08-22 Hitachi, Ltd. Management apparatus and management method for hierarchical storage system
US9405767B2 (en) * 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
KR101364356B1 (ko) 2013-08-13 2014-02-18 (주)카디날정보기술 대용량 데이터 저장을 위한 심볼릭 링크를 이용한 확장 가능한 저장 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101288074A (zh) * 2005-07-14 2008-10-15 微软公司 将数据从存储卷中的文件转移到替换位置以释放空间
US20080263227A1 (en) * 2007-04-23 2008-10-23 Ianywhere Solutions, Inc. Background synchronization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109815247A (zh) * 2019-01-09 2019-05-28 金蝶软件(中国)有限公司 信息同步方法、装置、计算机设备和存储介质
CN109815247B (zh) * 2019-01-09 2021-05-07 金蝶软件(中国)有限公司 信息同步方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
AU2017204647B2 (en) 2017-11-23
JP6573674B2 (ja) 2019-09-11
WO2016120683A1 (en) 2016-08-04
EP3584716B1 (en) 2021-12-01
AU2015379551B2 (en) 2017-08-10
EP3251026B1 (en) 2019-08-07
CA2977696A1 (en) 2016-08-04
KR20170120564A (ko) 2017-10-31
KR20170129681A (ko) 2017-11-27
CA2977692C (en) 2019-02-12
EP3584716A1 (en) 2019-12-25
KR20170129680A (ko) 2017-11-27
JP2017228310A (ja) 2017-12-28
CA2977696C (en) 2018-01-02
EP3913493A1 (en) 2021-11-24
EP3251026A1 (en) 2017-12-06
JP2018041454A (ja) 2018-03-15
KR102064696B1 (ko) 2020-02-11
EP3285183A1 (en) 2018-02-21
CA2977692A1 (en) 2016-08-04
JP6475295B2 (ja) 2019-02-27
EP3285183B1 (en) 2021-05-26
CA2972706A1 (en) 2016-08-04
JP2018508855A (ja) 2018-03-29
CN107426319B (zh) 2019-03-26
CN107426318A (zh) 2017-12-01
AU2015379551A1 (en) 2017-07-20
EP3913493B1 (en) 2023-01-11
CN107409142A (zh) 2017-11-28
AU2017204654B2 (en) 2017-10-26
KR101915423B1 (ko) 2018-11-05
AU2017204654A1 (en) 2017-07-27
CA2972706C (en) 2018-01-02
AU2017204647A1 (en) 2017-07-27
JP6409105B2 (ja) 2018-10-17
EP3285184A1 (en) 2018-02-21
KR101916240B1 (ko) 2018-11-08
KR20180121698A (ko) 2018-11-07

Similar Documents

Publication Publication Date Title
US11675811B2 (en) Storage constrained synchronization of shared content items
US9442997B2 (en) Idle state triggered constrained synchronization of shared content items
US10360235B2 (en) Storage constrained synchronization engine
US20170109370A1 (en) Selective Downloading of Shared Content Items in a Constrained Synchronization System
CN107426319B (zh) 存储受约束的共享内容项同步方法、系统和存储介质
US9413824B1 (en) Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US9563638B2 (en) Selective downloading of shared content items in a constrained synchronization system
JP6636623B2 (ja) 制約付き同期システムにおける共有コンテンツアイテムの選択的ダウンロード

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant