CN103403713A - 文件系统中的文件变体 - Google Patents

文件系统中的文件变体 Download PDF

Info

Publication number
CN103403713A
CN103403713A CN2012800103134A CN201280010313A CN103403713A CN 103403713 A CN103403713 A CN 103403713A CN 2012800103134 A CN2012800103134 A CN 2012800103134A CN 201280010313 A CN201280010313 A CN 201280010313A CN 103403713 A CN103403713 A CN 103403713A
Authority
CN
China
Prior art keywords
file
variant
data object
service
client
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
CN2012800103134A
Other languages
English (en)
Other versions
CN103403713B (zh
Inventor
皮尔加斯·韦尔鲁密鲁姆
约翰娜·S·奥尔森
柯尔文·J·史密斯
詹姆斯·H·伍德
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies 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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN103403713A publication Critical patent/CN103403713A/zh
Application granted granted Critical
Publication of CN103403713B publication Critical patent/CN103403713B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/61Indexing; Data structures therefor; Storage structures

Landscapes

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

Abstract

本发明公开了在文件系统中提供文件变体的各种实施方案。为多个用户维持多个文件系统。每个文件系统包括多个文件和一个或多个文件夹。每个文件包括相应唯一标识符和对存储在一个或多个数据储存器中的数据对象的相应引用。维持多个文件变体。每个文件变体包括相应文件的相应唯一标识符。每个文件变体还包括对存储在所述一个或多个数据储存器中的次级数据对象的相应引用。所述次级数据对象与由相应文件引用的初级数据对象相关。

Description

文件系统中的文件变体
相关申请的交叉引用
本申请要求于2011年3月14日提交的标题为“文件系统中的文件变体(VARIANTS OF FILES IN A FILE SYSTEM)”的美国专利申请号13/047,343的权益,所述美国专利申请的全部内容以引用的方式并入本文中。
背景
用于不同计算装置的网络连接可以具有不同的能力。例如,用于家用膝上型计算机或工作站的网络连接可以是可靠的、高速度的连接。相比之下,用于智能电话的网络连接可以是具有相对高丢包概率的相对低速度的连接。此外,不同计算装置可以具有不同物理特征。例如,家用工作站可以具有大的显示器,膝上型计算机可以具有相对较小的显示器,并且智能电话可以具有手持式显示器。
附图简述
可以参照以下附图来更好地理解本公开的许多方面。附图中的部件未必按比例绘制,而是将重点放在清楚地示出本公开的原理。此外,在附图中,相似参考数字贯穿若干视图始终指示对应部分。
图1为根据本公开的各种实施方案的网络化环境的图。
图2至图4为根据本公开的各种实施方案的示出作为在图1的网络化环境中在计算装置中执行的文件服务的部分而实施的功能性的实施例的流程图。
图5为根据本公开的各种实施方案的示出作为在图1的网络化环境中在计算装置中执行的数据存储服务的部分而实施的功能性的一个实施例的流程图。
图6为根据本公开的各种实施方案的示出作为在图1的网络化环境中在计算装置中执行的变体服务的部分而实施的功能性的一个实施例的流程图。
图7为根据本公开的各种实施方案的提供在图1的网络化环境中采用的计算装置的一个示例性图示的示意性框图。
详述
本公开涉及提供一种包括文件变体的文件系统。就用于计算装置的网络连接性的普遍可获得性而言,用户正日益寻求对他们的数据文件的普遍可获得性。举例来说,用户可能想要收听来自他们的智能电话、来自他们的办公室工作站、来自他们家中的膝上型计算机和/或来自其它计算装置的音频文件。然而,不得不随身携带便携式存储装置并且将其连接到用户的计算装置可能给用户带来不便。此外,可能难以从多个计算装置存取存储在便携式存储装置上的文件。
本公开的各种实施方案涉及根据实用计算模型的数据文件以及文件变体的远程存储。可以采用一种文件系统来提供对存储在包括网络化的多个计算装置的云计算资源中的文件的存取。在一些实施方案中,所述文件系统可以对应于虚拟文件系统,其中文件的实际数据对象被存储在单独的数据存储系统中。
文件的变体可以对应于文件的版本,这些文件的版本与其它文件相关或者从其它文件导出或生成。这类变体可以为客户的特定客户端计算装置而定制。在各种实施方案中,可以对客户显然地存在变体,以使得(例如)当客户正使用特定类型的客户端计算装置来请求文件时,可以向客户发送文件变体而不是原始文件。在一些实施方案中,可以采用变体的上下文感知持久性,以使得对应于变体的数据被存储在提供减小的数据持久性的数据储存器中。在以下论述中,提供对所述系统及其部件的概述,接着是对系统运行的论述。
参照图1,所示的是根据各种实施方案的网络化环境100。网络化环境100包括一个或多个计算装置103,其通过网络112来与一个或多个计算装置106以及一个或多个客户端109进行数据通信。网络112包括(例如)因特网、内部网、外联网、广域网(WAN)、局域网(LAN)、有线网、无线网或其它合适网络等,或者两个或更多个这类网络的任何组合。
计算装置103可以包括(例如)服务器计算机或提供计算能力的任何其它系统。或者,可以采用多个计算装置103,所述多个计算装置被布置成(例如)一个或多个服务器组或计算机组或其它布置。例如,多个计算装置103一起可以组成云计算资源、网格计算资源和/或任何其它分布式计算布置。这类计算装置103可以定位在单个设备中或者可以分布在许多不同地理位置当中。为了方便起见,在本文中以单数形式提及计算装置103。尽管以单数形式提及计算装置103,但应理解,可以采用呈如以上所描述的各种布置的多个计算装置103。
根据各种实施方案,可以在计算装置103中执行各种应用程序和/或其它功能性。另外,在可由计算装置103存取的数据储存器115中存储各种数据。正如可以了解的,数据储存器115可以表示多个数据储存器115。存储于数据储存器115中的数据(例如)与以下描述的各种应用程序和/或功能实体的运行相关联。
在计算装置103上执行的部件(例如)包括文件服务118、变体服务121、一个或多个变体编码器122、一个或多个应用程序124以及未在本文中详细论述的其它应用程序、服务、过程、系统、引擎或功能性。执行文件服务118来为用户维持基本文件系统中的文件和文件夹的文件层次。为此,文件服务118可以支持各种文件相关的操作,例如像创建文件、删除文件、修改文件、为文件设置权限、下载文件和/或其它操作。
执行变体服务121来创建并且维持文件系统中的文件的变体。为此,变体服务121可以被配置来检测其中待(例如)为特定类型的客户端、为特定应用程序124和/或为其它上下文生成文件变体的情形。变体服务121可以与一个或多个变体编码器122一起执行以便生成变体。变体编码器122可以对应于(例如)音频编解码器、视频编解码器、图像调整大小应用程序、数据压缩应用程序、数据转换应用程序、数据输入应用程序和/或其它数据编码器。变体服务121还可以被配置来周期性地删除不必要的变体。
应用程序124对应于可以存取存储在文件系统中的数据的托管应用程序。各种应用程序124可以(例如)具有基于网络的接口并且可以提供网络页面,如网页或其它形式的网络内容,从而促进用户交互。其它应用程序124可以为内部应用程序并且可以不具有基于网络的接口。应用程序124的非限制性实施例可以包括照片组织工具、音乐文件组织器和播放工具、文字处理器、电子表格、电子邮件应用程序等等。
存储于数据储存器115中的数据包括(例如)文件系统130、文件133、文件夹136、文件变体137、客户端信息138以及潜在的其它数据。文件系统130对应于逻辑文件层次,这些逻辑文件层次以一个或多个用户的名义被维持在计算装置103内。在各种实施方案中,体现在文件系统130中的逻辑文件层次是不直接对应于任何特定物理存储布置(如硬盘驱动器、便携式存储介质等)的抽象概念。每个帐户级用户可以具有其自己的文件系统130,或者文件系统130可以由多个帐户级用户共享。
每个文件系统130可以与帐户数据131、一个或多个客户端关联132和/或其它文件系统元数据相关联。帐户数据131包括关于计算装置103的授权用户的各种数据。这类帐户数据131可以包括(例如)用户名、密码、安全凭证、文件管理权限、存储限额和限制、授权应用程序、计费信息和/或其它数据。客户端关联132描述了与文件系统130相关联的各种客户端。客户端可以对应于(例如)如客户端109的客户端计算装置或如应用程序124的应用程序/服务。作为一个非限制性实施例,用户可以使用平板计算装置、桌上型工作站以及智能电话来存取文件系统130。客户端关联132还可以描述客户端109的各种能力,如浏览器应用程序的类型、现有插件、电子邮件应用程序等等。因此,客户端关联132可以许可变体服务121和/或其它应用程序确定与每个文件系统130相关联的客户端类型。客户端关联132可以被自动地检测且/或可以被手动地配置。
每个文件系统130可以包括一个或多个文件133以及一个或多个文件夹136。文件133可以包括文件名142、唯一标识符145、数据对象引用148、父对象引用151、一项或多项权限、文件创建数据、文件修改数据和/或其它数据。文件名142可以对应于识别文件133的内容的人类可读字符串。在一些实施方案中,文件名142可以在字符长度上受限制并且可以在允许的字符方面受限制。在一些情况下,这类限制可以出于兼容性原因而被强制执行。此外,文件名142可以在各种实施方案中被限制成对一个文件夹136和/或对一个文件系统130而言为唯一的。
唯一标识符145对应于在这个文件系统130和/或所有这些文件系统130中唯一地识别文件133的数字、字符串或其它标识符。在一个实施方案中,与文件系统130的标识符相联系的文件133的唯一标识符145可以对应于在所有文件系统130中为唯一的标识符。在另一个实施方案中,文件133的唯一标识符145可以自身在所有文件系统130中为唯一的。
数据对象引用148对应于可以识别与文件133相关联的数据对象的引用,所述数据对象被存储在数据储存器(如数据储存器115或另一个数据储存器)中。在一个实施方案中,数据对象引用148可以包括统一资源标识符(URI)。在另一个实施方案中,数据对象引用148可以包括用于获得数据对象的关键字值。待从中获得数据对象的数据储存器可以(例如)从数据对象引用148中的定义来隐含地或明确地确定。
父对象引用151对应于可以识别被认为是文件133的父代的文件夹136或文件133的引用。这样,文件夹136与文件133相关联。在一些情况下,父对象引用151可以包括识别文件系统130的根文件夹136的特殊标识符(例如,空值、0等)。
每个文件夹136均可以包括(例如)文件夹名157、唯一标识符160、父对象引用163、权限和/或其它数据。应注意,在一些实施方案中,文件夹136可以使用如文件133的相同数据结构来实施。在其它实施方案中,文件夹136可以使用不同于文件133的数据结构来实施。
唯一标识符160对应于在这个文件系统130和/或所有这些文件系统130中唯一地识别文件夹136的数字、字符串或其它标识符。在一个实施方案中,与文件系统130的标识符相联系的文件夹136的唯一标识符160可以对应于在所有文件系统130中为唯一的标识符。在另一个实施方案中,文件夹136的唯一标识符160可以自身在所有文件系统130中为唯一的。在一些实施方案中,唯一标识符160还可以相对于文件133的唯一标识符145为唯一的。
父对象引用163对应于可以识别被认为是文件夹136的父代的文件夹136或文件133的引用。这样,文件夹136与其它文件夹136相关联。在一些情况下,父对象引用163可以包括识别文件系统130的根文件夹136的特殊标识符(例如,空值、0等)。
文件变体137为文件133的变体或其它文件变体137。文件变体137可以为文件133的数据减少的版本或其它文件变体137。作为一个非限制性实施例,在文件133对应于图像的情况下,与文件133相关联的文件变体137可以对应于所述图像的大小减小的版本,如缩略图或其它图像。作为另一个非限制性实施例,在文件133对应于音频文件133的情况下,与文件133相关联的文件变体137可以对应于所述音频文件133的下采样的版本,所述版本具有较低的采样率、较低的位速率、较积极的压缩和/或其它改变的特征。在一些情况下,文件变体137可以为例如像移动计算装置(如智能电话)的特定类型的客户端计算装置定制或优化。文件变体137还可以为特定类型或类别的客户端109配置而定制来交付。
每个文件变体137均可以包括(例如)文件名164、唯一标识符165、数据对象引用166、父对象引用167、对一个或多个客户端关联168的描述和/或其它数据。文件名164可以对应于识别文件变体137的内容的人类可读字符串。在一些实施方案中,文件名164可以在字符长度上受限制并且可以在允许的字符方面受限制。在一些情况下,这类限制可以出于兼容性原因而被强制执行。此外,文件名164可以在各种实施方案中被限制成对一个文件夹136和/或对一个文件系统130而言为唯一的。在一个实施方案中,在具有或不具有区别性标识符的情况下,文件名164对应于与文件变体137相关联的对应文件133的文件名142。文件名164可以由变体服务121自动生成。在文件变体137通常对用户隐藏的实施方案中,文件名164可以被隐藏或不存在。
唯一标识符165对应于在特定文件133的所有文件变体137中或在一个文件系统130和/或所有这些文件系统130中唯一地识别文件变体137的数字、字符串或其它标识符。在一个实施方案中,与文件系统130的标识符相联系的文件变体137的唯一标识符165可以对应于在所有文件系统130中为唯一的标识符。在一个实施方案中,与对应文件133的唯一标识符145相联系的文件变体137的唯一标识符165可以对应于在所有文件系统130中为唯一的标识符。在另一个实施方案中,文件变体137的唯一标识符165可以自身在所有文件系统130中为唯一的。
数据对象引用166对应于可以识别与文件变体137相关联的数据对象的引用,所述数据对象被存储在数据储存器(如数据储存器115或另一个数据储存器)中。在一个实施方案中,数据对象引用166可以包括统一资源标识符(URI)。在另一个实施方案中,数据对象引用166可以包括用于获得数据对象的关键字值。待从中获得数据对象的数据储存器可以(例如)从数据对象引用166中的定义来隐含地或明确地确定。在一些实施方案中,对应于文件变体137的数据对象可以被存储在与对应于文件133的数据对象不同的数据储存器中。作为一个非限制性实施例,对应于文件变体137的数据对象可以被存储在提供减小的数据持久性的数据储存器中。
父对象引用167对应于可以识别被认为是文件变体137的父代的文件133或文件变体137的引用。这样,文件变体137被绑定到与所述文件变体137相关的文件133或另一个文件变体137上。客户端关联168可以指代文件变体137与其相关联的客户端109的配置的类型。作为一个非限制性实施例,文件变体137可以为流到如智能电话的移动装置而定制。因此,客户端关联168可以识别与为其定制文件变体137的用户相关联的一个或多个智能电话。在一些情况下,文件变体137(如缩略图像)可以适用于所有客户端109和配置。
客户端信息138包括关于客户端(例如像客户端109、应用程序124和/或其它类型的客户端)的能力的信息。客户端信息138可以描述客户端的能力,如这些客户端是否能够解码用某个编解码器编码的音频文件、显示器屏幕大小、网络112带宽限制等等。在一个实施方案中,客户端信息138可以包括客户端的类型与文件变体137的类型的关联。
计算装置106可以包括(例如)服务器计算机或提供计算能力的任何其它系统。或者,可以采用多个计算装置106,所述多个计算装置被布置成(例如)一个或多个服务器组或计算机组或其它布置。例如,多个计算装置106一起可以组成云计算资源、网格计算资源和/或任何其它分布式计算布置。这类计算装置106可以定位在单个设备中或者可以分布在许多不同地理位置当中。
为了方便起见,在本文中以单数形式提及计算装置106。尽管以单数形式提及计算装置106,但应理解,可以采用呈如以上所描述的各种布置的多个计算装置106。此外,尽管与计算装置103分开地描述计算装置106,但应理解,在一些实施方案中,可以在计算装置103中提供结合计算装置106来描述的应用程序和数据。在一些情况下,计算装置106中的一个或多个可以由与操作计算装置103的实体不同的实体操作。
根据各种实施方案,可以在计算装置106中执行各种应用程序和/或其它功能性。另外,在可由计算装置106存取的数据储存器178和持久性减小的数据储存器179中存储各种数据。正如可以了解的,数据储存器178和持久性减小的数据储存器179可以各自表示多个数据储存器178和/或持久性减小的数据储存器179。在一个实施方案中,数据储存器178和/或持久性减小的数据储存器179可以对应于其中根据实用计算模型提供数据存储的云存储资源。在一个实施方案中,数据储存器178和/或持久性减小的数据储存器179可以提供最终一致的存储。
与数据储存器178相比,持久性减小的数据储存器179与较低级别的数据持久性相关联。也就是说,与存储在数据储存器178中的数据相比较,存储在持久性减小的数据储存器179中的数据可能丢失、不可用或以其它方式不可存取的概率可能较高。与数据储存器178相比较,持久性减小的数据储存器179可以(例如)存储较少冗余数据复本或具有较低级别的硬件冗余。在一个实施方案中,数据储存器178可以包括那些可以被处理以再生存储在数据储存器178中的其它数据的数据,而持久性减小的数据储存器179可以排除那些可以被处理以再生存储在持久性减小的数据储存器179中的其它数据的数据。与数据储存器178相比较,持久性减小的数据储存器179可以在较小地理上分布,具有较不可靠的电源,具有连接到网络112的较少冗余连接和/或其它资源约束。
作为一个非限制性实施例,数据储存器178可以与对用户而言一年内将没有数据项丢失的99.9999%概率相关联,而持久性减小的数据储存器179可以与对用户而言一年内将没有数据项丢失的99.99%概率相关联。仅作为实例给出这类百分比来示出与持久性减小的数据储存器179相关联的减小级别的持久性。应注意,持久性减小的数据储存器179在一些实施方案中可以不存在,并且数据可以改为被存储在数据储存器178中。存储于数据储存器178和持久性减小的数据储存器179中的数据(例如)与以下描述的各种应用程序和/或功能实体的运行相关联。
在计算装置106上执行的部件(例如)包括数据存储服务181以及未在本文中详细论述的其它应用程序、服务、过程、系统、引擎或功能性。执行数据存储服务181来提供对存储以及检索来自数据储存器178的数据的能力。数据存储服务181可以基于可以是字符串、数字或其它标识符的唯一标识符(如关键字)来存储以及检索数据。数据存储服务181可以起到使基础存储层抽象化的作用,以使得数据存储服务181的用户不知晓实际上正如何存储他们的数据。例如,用户可能不知道他们的数据正被存储在什么磁盘驱动器上、什么计算装置106中、什么数据中心中等。在各种实施方案中,用户可能能够指定有待在存储数据中使用的硬件的性能特征或类型。例如,用户可能能够请求将数据对象存储在持久性减小的数据储存器179中而不是数据储存器178中。
在包括持久性减小的数据储存器179的实施方案中,数据存储服务181可以被配置来基于所述数据是文件变体137还是以其它方式从存储在数据储存器178中的其它数据导出而将数据存储引导到数据储存器178或者持久性减小的数据储存器179。因此,如果数据丢失或以其它方式不可从持久性减小的数据储存器179获得,那么数据可以从存储在数据储存器178中的数据再生。在一些实施方案中,文件服务118、变体服务121和/或另一个应用程序可以将数据存储引导到数据储存器178或者持久性减小的数据储存器179。
存储于数据储存器178中的数据包括(例如)数据对象184以及潜在的其它数据。数据对象184对应于为文件133存储的数据。这类数据可以为任何类型的数据对象,例如像文本数据、二进制数据、多媒体数据等等。在一些实施方案中,数据对象184还可以对应于为文件变体137存储的数据。存储于持久性减小的数据储存器179中的数据包括(例如)数据对象185以及潜在的其它数据。数据对象185对应于为文件变体137存储的数据。这类数据可以为任何类型的数据对象,例如像文本数据、二进制数据、多媒体数据等等。
应注意,在一些配置中,数据对象184和185可以仅为对另一个数据对象184和185的引用。例如,多个用户在他们的文件系统130中可以具有音乐文件的多个复本。因为这些复本为完全相同的,所以数据对象184和185可以仅为指向共享数据的地址或指针。当共享数据被修改时,这类关联可以用写时拷贝系统来更新。在一些情况下,共享数据可以被外部地存储在内容交付网络中。
客户端109表示可以连接到网络112上的多个客户端装置。客户端109可以包括(例如)基于处理器的系统,如计算机系统。这类计算机系统可以体现为如下形式:桌上型计算机、膝上型计算机、移动装置、个人数字助理、蜂窝电话、智能电话、机顶盒、音乐播放器、连网板、平板计算机系统、游戏操纵台、电子书阅读器或具有类似能力的其它装置。客户端109可以包括(例如)一个或多个显示器装置,如阴极射线管(CRT)、液晶显示器(LCD)屏幕、基于气体等离子的平板显示器、LCD投影仪或其它类型的显示装置等。
客户端109可以被配置来执行各种应用程序,如客户端应用程序187和/或其它应用程序。执行客户端应用程序187来存储、检索、处理以及以其它方式使用计算装置103中的一个或多个文件系统130中的文件133和文件夹136。在一个实施方案中,客户端应用程序187对应于再现由计算装置103提供的网络页面的浏览器应用程序,所述网络页面促进与文件服务118、变体服务121和/或应用程序124的交互。在一个实施方案中,客户端应用程序187与客户端109的操作系统集成以类似于客户端109的任何安装的文件系统提供对文件系统130的存取。客户端109可以被配置来执行除客户端应用程序187之外的应用程序,例如像浏览器应用程序、电子邮件应用程序、即时消息应用程序和/或其它应用程序。
接下来,提供对网络化环境100的各种部件的运行的概述。首先,用户可以通过客户端应用程序187或另一个应用程序124建立帐户,从而创建或存取一个或多个文件系统130。在用户被描述为执行一个动作的情况下,应理解,用户可以至少与客户端应用程序187交互以执行所述动作。
用户可以指定各种参数,例如像最大存储需求、性能需求、费率计划、存取权限、安全凭证等等。用户可以提供计费信息,且/或现有计费信息可以与用户相关。因此,填入帐户数据131并且可以创建文件系统130。在一些实施方案中,用户还可以指定将存取文件系统130的各种类型的客户端109。这个信息可以被存储在(例如)客户端关联132中。
用户可以通过应用程序124或客户端应用程序187将文件传送到文件系统130。这类传送可以涉及用户将文件从客户端109上载到计算装置103或计算装置106。在其它情况下,用户可以从与计算装置103相关联的在线零售商购买文件(例如,音乐文件),并且所述文件可以通过应用程序124而自动地保存到文件系统130。
当将文件传送到文件系统130时,由文件服务118在文件系统130中创建文件133。文件名142可以对应于与源文件相关联的原始文件名,或者文件名142可以由用户或应用程序124明确地指定。为文件133生成唯一标识符145。对应于与源文件相关联的数据的数据对象184由与数据存储服务181交互的文件服务118存储在数据储存器178中。接着为文件133记录对应于所存储的数据对象184的数据对象引用148。可以任选地为文件133指定父对象引用151。如果没有指定父对象引用151,那么文件133可以被认为是在用于文件系统130的根文件夹136中。
还可以由用户和/或应用程序124创建或输入文件夹136。文件夹名157可以对应于与源文件夹相关联的原始名称,或者文件夹名157可以由用户或应用程序124明确地指定。为文件夹136生成唯一标识符160。可以任选地为文件夹136指定父对象引用163。如果没有指定父对象引用163,那么文件夹136可以被认为是在用于文件系统130的根文件夹136中。
应注意,无需将与文件133、文件夹136或文件系统130相关联的各种数据记录在索引节点、虚拟节点、文件分配表或与物理文件系统相关联的任何其它数据结构中。在各种实施方案中,与文件133、文件夹136以及文件系统130相关联的数据可以作为数据维持在关系数据库管理系统(RDBMS)或类似数据库管理系统中。
文件服务118可以支持与文件133和文件夹136相关的各种操作,例如像重命名、拷贝、移动、删除、再循环、上载、下载等等。当重命名文件133或文件夹136时,更新了文件名142或文件夹名157,但数据对象184没有发生变化。当复制文件133或文件夹136时,可以创建复制文件133或文件夹136(以及内容)来指向一个或多个相同数据对象184。数据对象184自身可以在必要时根据写时拷贝或另一种方法论来复制。
当移动文件133或文件夹136时,可以更新父对象引用151或163,但这个或这些基础数据对象184没有发生任何变化。类似地,当关于基础数据对象184所存储的地点做出改变时,文件133或文件夹136可以保持不改变。当删除文件133或文件夹136时,可以移除一个或多个数据对象184,如果没有其它文件133指向这个或这些数据对象184的话。在一些情况下,上载和下载功能性可以涉及客户端应用程序187直接与数据存储服务181介接。以上描述的操作的实现方式使修改限于这个或这些数据储存器178中的数据对象184,这可能就时间或成本而言是昂贵的。
当在文件系统130中创建文件133时,当存取文件133时,和/或在另一个时间,可以为各种文件133创建文件变体137。文件变体137对应于文件133的变体,所述文件的变体可以是为交付到某些类型的客户端109或应用程序124而减少和/或定制的数据。在一些情况下,文件变体137可以被说成至少部分地是文件133的派生物。在其它情况下,文件变体137可以仅与文件133相关。此外,一些文件变体137可以适用于所有客户端109和应用程序124。
在一些情况下,变体服务121可以负责为文件133维持文件变体137。在为客户端109或应用程序124的特定特征定制文件变体137的情况下,这些文件变体可以是被减少以促进移动串流的数据,这些文件变体可以为在客户端109上显示而被下采样或调整大小,这些文件变体可以为与客户端109相关联的应用程序平台而被预处理,或以其它方式被编码。可以采用各种变体编码器122来执行编码。
作为一个非限制性实施例,用户可以在文件系统130中具有音频文件133的库。这类音频文件133可以最初以高位速率格式(如以256千位/秒位速率的运动图片专家组(MPEG)层3(MP3))放置在文件系统130中。这类格式可以被认为是无丢失的或接近无丢失的。然而,用户可能希望用连接到网络112的连接通过移动计算装置收听音频文件133,所述连接具有相对低的带宽并且可能易受连接性丢失周期的影响。
因此,变体服务121可以生成文件133的文件变体137,所述文件变体对应于为交付给移动计算装置定制的文件133的一个版本。举例来说,64千位/秒的位速率可以被认为是对移动计算装置类型为最优的。变体编码器122可以对应于MP3音频编解码器并且可以被配置来将高位速率音频文件133编码成低位速率文件变体137。
当用户从移动计算装置存取音频文件133时,适当的文件变体137可以自动地进行替换。这类替换可以是透明的或非透明的。例如,用户可能希望作为渐进式下载而不是仅作为流来下载原始高位速率音频文件133。变体服务121和/或文件服务118可以许可用户具有下载原始音频文件133的选项。这类选项可以根据请求的上下文为文件133自动地选择。
作为另一个非限制性实施例,用户可能希望将文档下载到平板计算装置上。所述文档最初可以为在大的宽屏显示监视器上显示而创建。变体服务121可以被配置来检测用户正向平板计算装置请求文件133,并且对文件变体137进行适当地编码。文件变体137可以是为平板计算装置的显示器而定制的文档的经过调整大小的版本。
作为又一个非限制性实施例,用户可以将多个高分辨率图像文件133上载到文件系统130。变体服务121可以自动地创建对应于图像文件133的较低分辨率的、大小减小的缩略图像的文件变体137,而不管与文件系统130相关联的客户端109的类型如何。作为文件变体137的缩略图像可以由应用程序124自动检测,所述应用程序是相册并且用来再现含有缩略图的相册页面,其具有用以存取原始高分辨率图像文件133的选项。
作为又一个非限制性实施例,用户可以将音乐文件133上载到文件系统130。使用外部数据,变体服务121可以识别音乐文件133并且创建对应于与音乐文件133相关的专辑封面艺术的文件变体137。对应于专辑封面艺术的一个或多个图像可以被存储在数据储存器178或179中并且链接到音乐文件133的一个或多个文件变体137上。在一个实施例中,初始文件变体137可以是封面艺术的高分辨率版本,而文件变体137的变体可以是封面艺术的缩略版本。
在一些实施方案中,作为文件变体137的基础的数据可以被存储在具有较高数据丢失或不可存取可能性的持久性减小的数据储存器179中。减小的持久性对文件变体137而言可能不是问题,因为这些文件变体可能能够从被存储在具有较高持久性级别的数据储存器178中的数据对象184再生。持久性减小的数据存储优于高持久性数据存储而可以具有较低的成本和/或其它优点。
此外,当文件变体未在预先确定的时间长度内使用或未被预计使用时,变体服务121可以被配置来周期性地删除文件变体137或其基础数据。举例来说,可以为平板计算装置生成若干文件变体137,但用户可能已经将平板计算装置售出并且将不再存取文件变体137。因此,可以安全地删除可应用的文件变体137。即使用户将从另一个平板计算装置存取文件133,也可以按需或当以其它方式适当时从原始文件133再生新的文件变体137。
变体服务121可以被配置来根据客户端信息138识别为客户端109或应用程序124的能力定制的文件变体137。一旦知道什么类型的客户端109或应用程序124正请求文件133,变体服务121就可以参考在客户端信息138中的客户端109或应用程序124的能力。变体服务121可以确定这些能力是否匹配与所请求的文件133相关联的一个或多个文件变体137的特征。在一个实施方案中,可以返回最匹配的文件变体137。在另一个实施方案中,可以返回兼容的用于文件133的所有文件变体137。
在一些实施方案中,可以在客户端109处向用户暴露变体服务121,从而允许用户获得用于特定文件133的文件变体137的列表并且向所述列表请求文件变体137。这类文件变体137可以存在或可以不存在。如果所请求的文件变体137不存在,那么其可以由变体服务121按需生成。在一个实施例中,用户可以向变体服务121提供对客户端109的描述,变体服务121接着可以确定属于特定客户端109的文件变体137。
接下来参照图2,所示的是根据各种实施方案的提供文件服务118的一部分的运行的一个实施例的流程图。具体地说,图2关于将文件133(图1)存储在文件系统130(图1)中并且视需要创建文件变体137(图1)。应理解,图2的流程图提供许多不同类型的功能布置的仅一个实施例,可以采用所述功能布置来实施文件服务118的所述部分的运行,如本文所描述。作为一个替代方案,图2的流程图可以被看作根据一个或多个实施方案描绘在计算装置103(图1)中实施的方法的步骤的实施例。虽然图2的任务被描述为由文件服务118执行,但图2的任务中的一个或多个可以由变体服务121(图1)、数据存储服务181(图1)和/或在其它实施方案中的其它应用程序执行。
以框203开始,文件服务118获得将文件133存储在文件系统130中的请求。这类请求可以用客户端应用程序187(图1)或应用程序124(图1)发起。在框206中,文件服务118从客户端应用程序187或应用程序124获得对应于文件133的数据对象184(图1)。在框209中,文件服务118将所述数据对象184存储在数据储存器178(图1)中。
在框212中,文件服务118在文件系统130中创建文件133。为此,文件服务118可以根据请求设置文件名142(图1),为文件133生成唯一标识符145(图1),将对存储在数据储存器178中的数据对象184的引用设置为数据对象引用148(图1),将父文件夹136(图1)的唯一标识符160(图1)设置为父对象引用163(图1),并且为文件133设置权限和/或其它元数据。
在框215中,文件服务118确定与文件系统130和/或文件133相关联的客户端109。作为一个非限制性实施例,与文件系统130相关联的用户可以已经预先使用或明确地配置客户端109,如电子书阅读器、膝上型计算机以及智能电话。此外,用户可以已经使用某些客户端应用程序187,如可以影响使用什么版本的文件133的浏览器应用程序、音乐播放器、文档处理应用程序等。
在框218中,文件服务118确定是否有待为文件133生成一个或多个文件变体137。在一些情况下,这类确定可以取决于与文件系统130和/或文件133相关联的客户端109。在其它情况下,这类确定可以独立于客户端109。如果没有文件变体137要为文件133生成,那么文件服务118的所述部分结束。否则,文件服务118进行到框221。
在框221中,文件服务118使用一个或多个适当的变体编码器122(图1)来编码数据对象184,从而获得一个或多个经过编码的数据对象。在框224中,将经过编码的数据对象存储在数据储存器中。在一个实施方案中,将经过编码的数据对象作为数据对象185(图1)存储在持久性减小的数据储存器179(图1)中。在另一个实施方案中,将经过编码的数据对象作为数据对象184存储在数据储存器178中。
在框227中,文件服务118参考这个或这些经过编码的数据对象在文件系统130中创建一个或多个文件变体137。为此,文件服务118可以为文件变体137生成一个或多个相应文件名164(图1)和唯一标识符165(图1)。文件服务118可以为文件变体137设置数据对象引用166(图1)以指向存储在数据储存器178或持久性减小的数据储存器179中的相应经过编码的数据对象的标识符。文件服务118可以为文件变体137中的每个设置父对象引用167(图1)以成为文件133的唯一标识符145。此后,文件服务118的所述部分结束。
继续参照图3,所示的是根据各种实施方案的提供文件服务118的另一部分的运行的一个实施例的流程图。具体地说,图3关于存取文件系统130(图1)中的文件133(图1)。应理解,图3的流程图提供许多不同类型的功能布置的仅一个实施例,可以采用所述功能布置来实施文件服务118的所述部分的运行,如本文所描述。作为一个替代方案,图3的流程图可以被看作根据一个或多个实施方案描绘在计算装置103(图1)中实施的方法的步骤的实施例。虽然图3的任务被描述为由文件服务118执行,但图3的任务中的一个或多个可以由变体服务121(图1)、数据存储服务181(图1)和/或在其它实施方案中的其它应用程序执行。
以框303开始,文件服务118从客户端109(图1)获得存取文件133的请求。所述请求可以直接从客户端应用程序187(图1)或通过应用程序124(图1)获得。在框306中,文件服务118根据客户端109的类型和/或文件133的类型确定是否应该提供文件变体137(图1)而不是文件133。如果不要提供文件变体137,那么文件服务118继续至框309并且从数据储存器178(图1)获得对应于所请求的文件133的数据对象184(图1)并且将所述数据对象184发送到客户端109。应注意,在一些实施方案中,数据储存器178可以对应于高持久性数据储存器178。此后,文件服务118的所述部分结束。
否则,如果要提供文件变体137,那么文件服务118从框306移动至框312。在框312中,文件服务118确定文件变体137是否存在于文件系统130中。更确切地说,在一些实施方案中,文件服务118可以确定是否存在对应的经过编码的数据对象185(图1)。如果存在用于客户端109的适当的文件变体137,那么文件服务118从持久性减小的数据储存器179(图1)获得数据对象185(图1)并且将所述数据对象185发送到客户端109。在一些实施方案中,文件变体137可以改为指向存储在数据储存器178中的数据对象184。在这类情况下,获得对应的数据对象184并且将其发送到客户端109。此后,文件服务118的所述部分结束。
否则,如果不存在文件变体137,那么文件服务118从框312移动至框318。在框318中,文件服务118从对应于文件133的数据对象184生成对应于文件变体137的经过编码的数据对象。可以采用各种变体编码器122(图1),并且在一些实施方案中,变体服务121可以协调这个任务。在框321中,文件服务118将对应于文件变体137的经过编码的数据对象作为数据对象185存储在持久性减小的数据储存器179中。在其它实施方案中,文件服务118可以改为将对应于文件变体137的经过编码的数据对象作为数据对象184存储在数据储存器178中。
在框324中,文件服务118在文件系统130中创建文件变体137。为此,文件服务118可以为文件变体137生成一个或多个相应文件名164(图1)和唯一标识符165(图1)。文件服务118可以为文件变体137设置数据对象引用166(图1)以指向存储在数据储存器178或持久性减小的数据储存器179中的相应经过编码的数据对象的标识符。文件服务118可以为文件变体137中的每个设置父对象引用167(图1)以成为文件133的唯一标识符145(图1)。在框327中,文件服务118将对应于文件变体137的经过编码的数据对象发送到客户端109。在一个实施方案中,可以在正生成并且存储经过编码的数据对象的同时将所述经过编码的数据对象发送到客户端109。这类优化可以减小与编码数据对象并且在发送之前对其进行存储相关联的延迟。此后,文件服务118的所述部分结束。
现在转向图4,所示的是根据各种实施方案的提供文件服务118的再一个部分的运行的一个实施例的流程图。具体地说,图4关于删除文件系统130(图1)中的文件133(图1)。应理解,图4的流程图提供许多不同类型的功能布置的仅一个实施例,可以采用所述功能布置来实施文件服务118的所述部分的运行,如本文所描述。作为一个替代方案,图4的流程图可以被看作根据一个或多个实施方案描绘在计算装置103(图1)中实施的方法的步骤的实施例。虽然图4的任务被描述为由文件服务118执行,但图4的任务中的一个或多个可以由变体服务121(图1)、数据存储服务181(图1)和/或在其它实施方案中的其它应用程序执行。
以框403开始,文件服务118从客户端109获得删除文件133的请求。具体地说,所述请求可以从客户端应用程序187(图1)或从应用程序124(图1)获得。在框406中,文件服务118启动删除如由数据对象引用148(图1)识别的对应于文件133的数据对象184(图1)。在一个实施方案中,可以采用延迟或等待时间来避免当删除数据对象184时的竞态状态。
在框409中,文件服务118确定任何文件变体137(图1)是否与文件133相关联。换句话说,文件服务118确定任何文件变体137是否具有设置成为文件133的唯一标识符145(图1)的父对象引用167(图1)。如果没有文件变体137与文件133相关联,那么文件服务118进行到框412并且从文件系统130删除文件133。此后,文件服务118的所述部分结束。然而,如果文件变体137与文件133相关联,那么文件服务118改为继续至框415。
在框415中,文件服务118启动删除对应于文件变体137的数据对象185(图1)和/或数据对象184。这可以包括文件变体137的变体。在一个实施方案中,可以采用延迟或等待时间来避免当删除数据对象184、185时的竞态状态。在框418中,文件服务118从文件系统130中删除文件变体137(以及其任何变体)。在框412中,文件服务118从文件系统130中删除文件133。此后,文件服务118的所述部分结束。
接下来参照图5,所示的是根据各种实施方案的提供数据存储服务181的一部分的运行的一个实施例的流程图。应理解,图5的流程图提供许多不同类型的功能布置的仅一个实施例,可以采用所述功能布置来实施数据存储服务181的所述部分的运行,如本文所描述。作为一个替代方案,图5的流程图可以被看作根据一个或多个实施方案描绘在计算装置106(图1)中实施的方法的步骤的实施例。虽然图5的任务被描述为由数据存储服务181执行,但图5的任务中的一个或多个可以由变体服务121(图1)、文件服务118(图1)和/或在其它实施方案中的其它应用程序执行。
以框503开始,数据存储服务181获得存储数据对象的请求。这类请求可以(例如)从文件服务118、变体服务121或另一个应用程序获得。在框506中,数据存储服务181确定数据对象是否对应于文件变体137(图1)。如果数据对象对应于文件变体137,那么数据存储服务181进行到框509并且将所述数据对象作为数据对象185(图1)存储在持久性减小的数据储存器179(图1)中。在一个实施方案中,数据存储服务181还可以将数据对象185的标识符返回给请求者。此后,数据存储服务181的所述部分结束。
否则,如果数据存储服务181确定数据对象不对应于文件变体137,那么数据存储服务181继续至框512。在框512中,数据存储服务181将所述数据对象作为数据对象184(图1)存储在数据储存器178(图1)中,与持久性减小的数据储存器179相比,所述数据储存器与较高级别的数据持久性相关联。在一个实施方案中,数据存储服务181还可以将数据对象184的标识符返回给请求者。此后,数据存储服务181的所述部分结束。
继续至图6,所示的是根据各种实施方案的提供变体服务121的一部分的运行的一个实施例的流程图。应理解,图6的流程图提供许多不同类型的功能布置的仅一个实施例,可以采用所述功能布置来实施变体服务121的所述部分的运行,如本文所描述。作为一个替代方案,图6的流程图可以被看作根据一个或多个实施方案描绘在计算装置103(图1)中实施的方法的步骤的实施例。虽然图6的任务被描述为由数据存储服务181执行,但图6的任务中的一个或多个可以由文件服务118(图1)和/或在其它实施方案中的其它应用程序执行。
以框603开始,变体服务121确定与用户的文件系统130(图1)相关联的客户端109(图1)。虽然结合图6来提及客户端109,但应理解,图6的原理可以应用于同样也具有所定义的能力和偏好的应用程序124(图1)。作为一个非限制性实施例,与文件系统130相关联的用户可以已经预先使用或明确地配置客户端109,如电子书阅读器、膝上型计算机以及智能电话。此外,用户可以已经使用某些客户端应用程序187(图1),如可以影响使用什么版本的文件133(图1)的浏览器应用程序、音乐播放器、文档处理应用程序等。在框606中,变体服务121确定与用户的文件系统130相关联的文件变体137(图1)。
在框609中,对于文件变体137中的一个,变体服务121确定文件变体137是否与不再与用户相关联的客户端109相关联。如果文件变体137与不再与用户(或文件系统130)相关联的客户端109相关联,那么变体服务121移动至框612并且从持久性减小的数据储存器179(图1)中删除对应于文件变体137的数据对象185(图1)。文件变体137可以随后从文件系统130中删除。在各种实施方案中,在客户端109解除相关联时与启动删除时之间可能流逝了一些时间。另外,变体服务121可以确定文件变体137可以可用于另一个客户端109,在这种情况下,变体服务121可以决定不删除文件变体137。变体服务121继续至框615。
如果在框609中变体服务121确定文件变体137不是用于不再与用户相关联的客户端109,那么变体服务121进行到框618。在框618中,变体服务121确定文件变体137是否已经在预先确定的时间长度内被存取或以其它方式满足保留标准。如果变体服务121不满足保留标准,那么变体服务121继续至框612并且从持久性减小的数据储存器179中删除对应于文件变体137的数据对象185。文件变体137可以随后从文件系统130中删除。变体服务121继续至框615。
在框615中,变体服务121确定是否有待处理另一个文件变体137。如果是,那么变体服务121返回至框609并且开始评估另一个文件变体137。如果没有其它文件变体137要处理,那么变体服务121的所述部分结束。
参照图7,所示的是根据本公开的一个实施方案的计算装置103的示意性框图。计算装置103包括(例如)具有处理器703和存储器706的至少一个处理器电路,所述处理器与存储器两者均连接至本地接口709上。为此,计算装置103可以包括(例如)至少一个服务器计算机或类似装置。本地接口709可以包括(例如)具有伴随的地址/控制总线或其它总线结构的数据总线,如可以了解的。虽然在图7中描绘计算装置103,但应理解,计算装置106可以具有类似构造。
存储于存储器706中的是可由处理器703执行的数据与若干部件两者。具体地说,存储于存储器706中并且可由处理器703执行的是文件服务118、变体服务121、变体编码器122、应用程序124以及潜在的其它应用程序。也存储于存储器706中的可以是数据储存器115和其它数据。此外,操作系统可以被存储在存储器706中并且是可由处理器703执行的。
应理解,可以存在存储于存储器706中并且可由处理器703执行的其它应用程序,如可以了解的。在本文所论述的任何部件均以软件的形式实施的情况下,可以采用许多种编程语言中的任何一种,例如像C、C++、C#、ObjectiveC、
Figure BDA0000371192420000241
Perl、PHP、VisualRuby、或其它编程语言。
许多软件部件被存储于存储器706中并且是可由处理器703执行的。在这方面,术语“可执行的”意味着呈可以最终由处理器703运行的一种形式的程序文件。可执行的程序的实例可以为(例如):编译的程序,其可以被翻译成呈可以加载到存储器706的随机存取部分中并且由处理器703运行的格式的机器代码;可以用适当的格式表达的源代码,如能够被加载到存储器706的随机存取部分中并且由处理器703执行的目标代码;或可以由另一个可执行的程序翻译以在存储器706的随机存取部分中生成有待由处理器703执行的指令的源代码,等。可执行的程序可以被存储于存储器706的任何部分或部件中,包括(例如)随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器、固态驱动器、USB快闪驱动器、存储卡、如压缩光盘(CD)或数字多功能光盘(DVD)的光盘、软盘、磁带或其它存储器部件。
在本文中将存储器706定义为包括易失性和非易失性存储器与数据存储部件两者。易失性部件为在电力丢失之后不会保持数据值的那些部件。非易失性部件为在电力丢失之后保持数据的那些部件。因此,存储器706可以包括(例如)随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器、固态驱动器、USB快闪驱动器、经由存储卡读取器存取的存储卡、经由相关联软盘驱动器存取的软盘、经由光盘驱动器存取的光盘、经由适当的磁带驱动器存取的磁带和/或其它存储器部件,或这些存储器部件中的任何两个或更多个的组合。此外,RAM可以包括(例如)静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或磁性随机存取存储器(MRAM)以及其它这类装置。ROM可以包括(例如)可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或其它类似存储器装置。
另外,处理器703可以表示多个处理器703,并且存储器706可以表示分别在并联处理电路中运行的多个存储器706。在这类情况下,本地接口709可以为适当的网络112(图1),所述网络促进多个处理器703中的任何两个之间、任何一个处理器703与存储器706中的任何一个之间或存储器706中的任何两个之间等的通信。本地接口709可以包括被设计来协调这个通信(例如,包括执行负载平衡)的额外系统。处理器703可以具有电气构造或某一其它可获得的构造。
虽然文件服务118、变体服务121、变体编码器122、应用程序124、数据存储服务181(图1)以及本文所描述的其它各种系统均可以体现为由如以上所论述的通用硬件执行的软件或代码,但作为一个替代方案,以上系统还可以体现为专用硬件或软件/通用硬件与专用硬件的组合。如果体现为专用硬件,那么每个均可以被实施为采用许多项技术中的任何一项或组合的电路或状态机。这些技术可以包括但不限于:具有逻辑门的离散逻辑电路,所述逻辑门用于在施加一个或多个数据信号之后实施各种逻辑函数;具有适当的逻辑门的专用集成电路;或其它部件等。这类技术通常为本领域技术人员所熟知,并且因此本文未进行详细描述。
图2至图6的流程图示出了文件服务118、变体服务121以及数据存储服务181的部分的实现方式的功能性和运行。如果体现为软件,那么每个块可以表示包括用来实施这个或这些特定逻辑函数的程序指令的代码的一个模块、区段或部分。程序指令可以体现为以下形式:源代码,其包括以编程语言写成的人类可读语句;或机器代码,其包括可由适合的执行系统(如计算机系统或其它系统中的处理器703)辨别的数字指令。机器代码可以从源代码等转换。如果体现为硬件,那么每个块可以表示用来实施这个或这些特定逻辑函数的一个电路或许多互连电路。
虽然图2至图6的流程图示出了特定执行次序,但应理解,执行次序可以不同于所描绘的次序。举例来说,两个或更多个块的执行次序可以相对于所示的次序来打乱。另外,图2至图6中连续示出的两个或更多个块可以同时执行或以部分并发的方式执行。此外,在一些实施方案中,可以跳过或省略图2至图6中示出的块中的一个或多个。此外,为了增强的效用、记帐、性能测量或提供疑难解答帮助等,可能会将任何数量的计数器、状态变量、警报信号量或消息添加到本文所描述的逻辑流。应理解,所有这类变体均涵盖在本公开的范围内。
另外,本文所描述的包括软件或代码的任何逻辑或应用程序,包括文件服务118、变体服务121、变体编码器122、应用程序124以及数据存储服务181,均可以体现为由例如像计算机系统或其它系统中的处理器703的指令执行系统使用或与所述指令执行系统相联系的任何非暂时性计算机可读介质。在这个意义上,逻辑可以包括(例如)语句,所述语句包括可以从计算机可读介质取出并且由指令执行系统执行的指令和声明。在本公开的上下文中,“计算机可读介质”可以为由指令执行系统使用或与所述指令执行系统相联系的可以含有、存储或维持本文所描述的逻辑或应用程序的任何介质。计算机可读介质可以包括许多种物理介质中的任何一种,例如像磁性介质、光学介质或半导体介质。适合的计算机可读介质的更多特定实例将包括但不限于:磁带、磁性软盘、磁性硬盘驱动器、存储卡、固态驱动器、USB快闪驱动器或光盘。此外,计算机可读介质可以为随机存取存储器(RAM),包括(例如)静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)或磁性随机存取存储器(MRAM)。此外,计算机可读介质可以为只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或其它类型的存储器装置。
条款
1.一种体现可在至少一个计算装置中执行的程序的非暂时性计算机可读介质,所述程序包括:
为多个用户维持多个文件系统的代码,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的初级数据对象的相应引用;
从与所述文件系统中的一个文件系统相关联的所述用户中的一个对应用户获得将文件存储在所述文件系统中的所述一个文件系统中的请求的代码;
响应于所述请求在所述文件系统中的所述一个文件系统中创建对应于所述文件的文件并且将对应于所述文件的初级数据对象存储在所述至少一个数据储存器中的代码;
将所述文件编码成为在与所述用户中的所述一个对应用户相关联的移动计算装置上呈现而定制的次级数据对象并且将所述次级数据对象存储在所述至少一个数据储存器中的代码;
在所述对应的文件系统中至少部分地基于所述文件来创建文件变体的代码,所述文件变体包括对所述文件的所述唯一标识符的引用和对存储在所述至少一个数据储存器中的所述次级数据对象的引用;
从所述用户中的所述一个对应用户获得存取所述文件的请求的代码;
当所述存取请求与由所述移动计算装置存取相关时将由所述文件变体引用的所述次级数据对象发送到所述移动计算装置的代码;以及
当所述存取请求与由另一个计算装置存取相关时将由所述文件引用的所述初级数据对象发送到所述另一个计算装置的代码。
2.如条款1所述的非暂时性计算机可读介质,其中所述文件对应于音频文件,所述初级数据对象是以第一位速率编码的所述音频文件的版本,所述次级数据对象是以第二位速率编码的所述音频文件的版本,并且所述第一位速率高于所述第二位速率。
3.如条款1所述的非暂时性计算机可读介质,其中所述文件对应于图像文件,所述初级数据对象是以第一分辨率编码的所述图像文件的版本,所述次级数据对象是以第二分辨率编码的所述图像文件的版本,并且所述第一分辨率高于所述第二分辨率。
4.一种方法,其包括以下步骤:
在至少一个计算装置中为多个用户维持多个文件系统,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的初级数据对象的相应引用;
在所述至少一个计算装置中生成所述文件中的一个文件的变体,所述变体包括文件中的所述一个文件的所述唯一标识符和对与由所述文件中的所述一个文件引用的所述初级数据对象相关的次级数据对象的引用,所述次级数据对象被存储在所述至少一个数据储存器中;以及
在所述至少一个计算装置中响应于对所述文件中的所述一个文件的请求来发送所述次级数据对象而不是所述初级数据对象。
5.如条款4所述的方法,其中所述次级数据对象至少部分地从所述初级数据对象导出。
6.如条款4所述的方法,其中所述请求对应于将所述文件中的所述一个文件经过网络串流到移动计算装置的请求,并且所述变体是为串流到所述移动计算装置而减少的数据。
7.如条款4所述的方法,其进一步包括以下步骤:在所述至少一个计算装置中从客户端获得对所述文件中的所述一个文件的所述请求,并且其中响应于对所述文件中的所述一个文件的所述请求发送所述次级数据对象。
8.如条款7所述的方法,其中所述客户端对应于一种类型的客户端,并且所述变体是为所述类型的客户端而定制的。
9.如条款8所述的方法,其中每个文件系统包括用于所述文件中的所述一个文件的至少一个其它变体,并且所述至少一个其它变体是为至少一种其它类型的客户端而定制的。
10.如条款7所述的方法,其中所述生成步骤在获得对所述文件中的所述一个文件的所述请求之前自动地执行。
11.如条款7所述的方法,其中所述生成步骤响应于获得对所述文件中的所述一个文件的所述请求而执行。
12.如条款7所述的方法,其进一步包括以下步骤:
在所述至少一个计算装置中确定所述客户端类型;
在所述至少一个计算装置中确定是否存在用于所述文件中的所述一个文件和所述类型的客户端的所述变体;以及
其中所述生成步骤响应于确定不存在用于所述文件中的所述一个文件和所述类型的客户端的所述变体而执行。
13.如条款4所述的方法,其中每个文件系统与所述用户中的一个对应用户相关联。
14.一种系统,其包括:
至少一个计算装置;
可在所述至少一个计算装置中执行的文件服务,所述文件服务包括:
为多个用户维持多个文件系统的逻辑,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的数据对象的相应引用;以及
可在所述至少一个计算装置中执行的变体服务,所述变体服务包括:
维持多个文件变体的逻辑,所述文件变体中的每个包括所述文件中的一个相应文件的所述相应唯一标识符,所述文件变体中的每个进一步包括对存储在所述至少一个数据储存器中的次级数据对象的相应引用,所述次级数据对象与由所述文件中的所述一个相应文件引用的相应初级数据对象相关。
15.如条款14所述的系统,其中所述变体服务进一步包括:
将一种类型的客户端与所述用户中的一个用户相关联的逻辑;以及
响应于所述类型的客户端与所述用户中的所述一个用户相关联来生成所述文件变体中的至少一个文件变体的逻辑,所述文件变体中的所述至少一个文件变体是为所述类型的客户端而定制的。
16.如条款15所述的系统,其中所述变体服务进一步包括:
确定所述类型的客户端是否保持与所述用户中的所述一个用户相关联的逻辑;以及
响应于确定所述类型的客户端未保持与所述用户中的所述一个用户相关联来启动删除所述文件变体中的所述至少一个文件变体的逻辑。
17.如条款14所述的系统,其中所述变体服务进一步包括:
确定与对所述文件中的至少一个文件的请求相关联的客户端类型的逻辑;以及
响应于所述请求生成所述文件变体中的至少一个文件变体的逻辑,所述文件变体中的所述至少一个文件变体是为所述类型的客户端而定制的。
18.如条款14所述的系统,其中所述文件变体中的至少一个文件变体包括代替所述文件中的所述一个相应文件的所述相应唯一标识符的所述文件变体中的一个文件变体的唯一标识符。
19.如条款14所述的系统,其中所述变体服务进一步包括通过用编码器对所述初级数据对象中的一个对应初级数据对象进行编码来生成所述次级数据对象中的一个次级数据对象的逻辑。
20.如条款19所述的系统,其中所述编码器包括音频编解码器。
21.如条款19所述的系统,其中所述初级数据对象中的所述一个对应初级数据对象是图像,并且所述次级数据对象中的所述一个次级数据对象是所述图像的大小减小的版本。
应该强调的是,本公开的以上描述的实施方案仅是为了清楚理解本公开的原理而阐明的实现方式的可能实施例。在大致上不背离本公开的精神以及原理的情况下,可以对以上描述的这个或这些实施方案做出许多变化和修改。在本文中,所有这类修改和变化意欲包括于本公开的范围内并且受所附权利要求保护。

Claims (15)

1.一种体现在至少一个计算装置中可执行的程序的非暂时性计算机可读介质,所述程序包括:
为多个用户维持多个文件系统的代码,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的初级数据对象的相应引用;
从与所述文件系统中的一个文件系统相关联的所述用户中的一个对应用户获得将文件存储在所述文件系统中的所述一个文件系统中的请求的代码;
响应于所述请求在所述文件系统中的所述一个文件系统中创建对应于所述文件的文件并且将对应于所述文件的初级数据对象存储在所述至少一个数据储存器中的代码;
将所述文件编码成为在与所述用户中的所述一个对应用户相关联的移动计算装置上呈现而定制的次级数据对象并且将所述次级数据对象存储在所述至少一个数据储存器中的代码;
在所述对应的文件系统中至少部分地基于所述文件来创建文件变体的代码,所述文件变体包括对所述文件的唯一标识符的引用和对存储在所述至少一个数据储存器中的所述次级数据对象的引用;
从所述用户中的所述一个对应用户获得存取所述文件的请求的代码;
当对所述存取的请求与由所述移动计算装置存取相关时将由所述文件变体引用的所述次级数据对象发送到所述移动计算装置的代码;以及
当对所述存取的请求与由另一个计算装置存取相关时将由所述文件引用的所述初级数据对象发送到所述另一个计算装置的代码。
2.一种方法,其包括以下步骤:
在至少一个计算装置中为多个用户维持多个文件系统,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的初级数据对象的相应引用;
在所述至少一个计算装置中生成所述文件中的一个文件的变体,所述变体包括文件中的所述一个文件的所述唯一标识符和对与由所述文件中的所述一个文件引用的所述初级数据对象相关的次级数据对象的引用,所述次级数据对象被存储在所述至少一个数据储存器中;以及
在所述至少一个计算装置中响应于对所述文件中的所述一个文件的请求发送所述次级数据对象而不是所述初级数据对象。
3.如权利要求2所述的方法,其中所述次级数据对象至少部分地从所述初级数据对象导出。
4.如权利要求2所述的方法,其中所述请求对应于将所述文件中的所述一个文件经过网络流式传输到移动计算装置的请求,并且所述变体是为流式传输到所述移动计算装置而精简的数据。
5.如权利要求2所述的方法,其还包括以下步骤:在所述至少一个计算装置中从客户端获得对所述文件中的所述一个文件的所述请求,并且其中响应于对所述文件中的所述一个文件的所述请求发送所述次级数据对象。
6.如权利要求5所述的方法,其中所述生成步骤在获得对所述文件中的所述一个文件的所述请求之前自动地执行。
7.如权利要求5所述的方法,其还包括以下步骤:
在所述至少一个计算装置中确定客户端类型;
在所述至少一个计算装置中确定是否存在用于所述文件中的所述一个文件和所述类型的客户端的变体;以及
其中所述生成步骤响应于确定不存在用于所述文件中的所述一个文件和所述类型的客户端的变体而执行。
8.一种系统,其包括:
至少一个计算装置;
在所述至少一个计算装置中可执行的文件服务,所述文件服务包括:
为多个用户维持多个文件系统的逻辑,所述文件系统中的每个包括多个文件和至少一个文件夹,所述文件中的每个包括相应唯一标识符和对存储在至少一个数据储存器中的数据对象的相应引用;以及
在所述至少一个计算装置中可执行的变体服务,所述变体服务包括:
维持多个文件变体的逻辑,所述文件变体中的每个包括所述文件中的一个相应文件的所述相应唯一标识符,所述文件变体中的每个还包括对存储在所述至少一个数据储存器中的次级数据对象的相应引用,所述次级数据对象与由所述文件中的所述一个相应文件引用的相应初级数据对象相关。
9.如权利要求8所述的系统,其中所述变体服务还包括:
将一种类型的客户端与所述用户中的一个用户相关联的逻辑;以及
响应于所述类型的客户端与所述用户中的所述一个用户相关联来生成所述文件变体中的至少一个文件变体的逻辑,所述文件变体中的所述至少一个文件变体是为所述类型的客户端而定制的。
10.如权利要求9所述的系统,其中所述变体服务还包括:
确定所述类型的客户端是否保持与所述用户中的所述一个用户相关联的逻辑;以及
响应于确定所述类型的客户端未保持与所述用户中的所述一个用户相关联来启动删除所述文件变体中的所述至少一个文件变体的逻辑。
11.如权利要求8所述的系统,其中所述变体服务还包括:
确定与对所述文件中的至少一个文件的请求相关联的客户端类型的逻辑;以及
响应于所述请求生成所述文件变体中的至少一个文件变体的逻辑,所述文件变体中的所述至少一个文件变体是为所述类型的客户端而定制的。
12.如权利要求8所述的系统,其中所述文件变体中的至少一个文件变体包括所述文件变体中的一个文件变体的唯一标识符,而不是所述文件中的所述一个相应文件的所述相应唯一标识符。
13.如权利要求8所述的系统,其中所述变体服务还包括通过用编码器对所述初级数据对象中的一个对应初级数据对象进行编码来生成所述次级数据对象中的一个次级数据对象的逻辑。
14.如权利要求13所述的系统,其中所述编码器包括音频编解码器。
15.如权利要求13所述的系统,其中所述初级数据对象中的所述一个对应初级数据对象是图像,并且所述次级数据对象中的所述一个次级数据对象是所述图像的大小减小的版本。
CN201280010313.4A 2011-03-14 2012-03-07 文件系统中的文件变体 Active CN103403713B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/047,343 US8423585B2 (en) 2011-03-14 2011-03-14 Variants of files in a file system
US13/047,343 2011-03-14
PCT/US2012/027940 WO2012125355A1 (en) 2011-03-14 2012-03-07 Variants of files in a file system

Publications (2)

Publication Number Publication Date
CN103403713A true CN103403713A (zh) 2013-11-20
CN103403713B CN103403713B (zh) 2017-03-29

Family

ID=46829337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280010313.4A Active CN103403713B (zh) 2011-03-14 2012-03-07 文件系统中的文件变体

Country Status (7)

Country Link
US (1) US8423585B2 (zh)
EP (1) EP2686791B1 (zh)
JP (2) JP2014511529A (zh)
CN (1) CN103403713B (zh)
CA (2) CA2930061C (zh)
SG (1) SG192868A1 (zh)
WO (1) WO2012125355A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729355A (zh) * 2017-08-31 2018-02-23 上海金大师网络科技有限公司 一种基于数据储存类型TVariant的数据存储方法及其装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170097923A1 (en) * 2015-10-01 2017-04-06 Sap Se Open fiori apps out of ms excel
US10915497B1 (en) * 2017-07-31 2021-02-09 EMC IP Holding Company LLC Multi-tier storage system with controllable relocation of files from file system tier to cloud-based object storage tier
US20230091577A1 (en) * 2021-09-20 2023-03-23 International Business Machines Corporation Heterogenous replication in a hybrid cloud database

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001204001A (ja) * 1999-10-29 2001-07-27 Matsushita Electric Ind Co Ltd 動画像配信システム,再生端末装置,及び配信装置
CN1761310A (zh) * 2004-10-15 2006-04-19 株式会社日立制作所 编码系统、编码方法和编码设备
CN101076031A (zh) * 2006-12-06 2007-11-21 腾讯科技(深圳)有限公司 一种应用网络硬盘的方法
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
CN101938648A (zh) * 2009-10-15 2011-01-05 北京暴风网际科技有限公司 一种媒体文件格式转换方法及系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571279B1 (en) * 1997-12-05 2003-05-27 Pinpoint Incorporated Location enhanced information delivery system
JP2001056776A (ja) * 1999-06-09 2001-02-27 Fuji Photo Film Co Ltd クライアントサーバシステム、及び画像処理状況監視方法
US7003481B2 (en) * 2000-08-25 2006-02-21 Flatrock Ii, Inc. Method and apparatus for providing network dependent application services
US20020076049A1 (en) * 2000-12-19 2002-06-20 Boykin Patrick Oscar Method for distributing perceptually encrypted videos and decypting them
JP4415232B2 (ja) 2000-10-12 2010-02-17 ソニー株式会社 情報処理装置および方法、並びにプログラム記録媒体
JP2003030099A (ja) * 2001-07-18 2003-01-31 Sharp Corp コンテンツ変換送信装置とその機能を実現するプログラムおよびそのプログラムを格納した記憶媒体並びにそれらを用いたコンテンツ変換送信サービス
US20030078918A1 (en) 2001-10-23 2003-04-24 Souvignier Todd J. Method, apparatus and system for file sharing between computers
US20030110297A1 (en) * 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US7024427B2 (en) 2001-12-19 2006-04-04 Emc Corporation Virtual file system
JP4189627B2 (ja) * 2002-04-24 2008-12-03 富士フイルム株式会社 画像サーバ並びに画像表示システム
US7379990B2 (en) 2002-08-12 2008-05-27 Tsao Sheng Ted Tai Distributed virtual SAN
JP2004030644A (ja) * 2003-05-30 2004-01-29 Toppan Printing Co Ltd コンテンツデータ流通方法およびコンテンツデータ流通システムならびにそのプログラムを記録した記録媒体
US7308464B2 (en) * 2003-07-23 2007-12-11 America Online, Inc. Method and system for rule based indexing of multiple data structures
US20060206582A1 (en) * 2003-11-17 2006-09-14 David Finn Portable music device with song tag capture
JP2006012105A (ja) * 2004-06-26 2006-01-12 Atsushi Kodama 電子メール配信装置
JP4380592B2 (ja) * 2005-05-17 2009-12-09 ソニー株式会社 データ共有システムおよび方法
WO2008080435A1 (en) * 2007-01-04 2008-07-10 Nero Ag Apparatus for supplying an encoded data signal and method for encoding a data signal
KR101604563B1 (ko) * 2007-06-28 2016-03-17 톰슨 라이센싱 네트워크 아키텍처를 통해 디스플레이 장치 특정 콘텐트를 제공하는 방법, 장치 및 시스템
US7554467B2 (en) * 2007-07-31 2009-06-30 Novell, Inc. Network content in dictionary-based (DE)compression
JP2009070236A (ja) * 2007-09-14 2009-04-02 Fuji Xerox Co Ltd データ提供システム及びプログラム
US8832598B2 (en) 2008-05-09 2014-09-09 Ricoh Company, Limited File management apparatus, file management method, and computer program product
US8874600B2 (en) * 2010-01-30 2014-10-28 International Business Machines Corporation System and method for building a cloud aware massive data analytics solution background
US8386835B2 (en) * 2010-05-17 2013-02-26 Oracle International Corporation System and method for end-to-end data integrity in a network file system
US9231768B2 (en) * 2010-06-22 2016-01-05 International Business Machines Corporation Utilizing a deterministic all or nothing transformation in a dispersed storage network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001204001A (ja) * 1999-10-29 2001-07-27 Matsushita Electric Ind Co Ltd 動画像配信システム,再生端末装置,及び配信装置
CN1761310A (zh) * 2004-10-15 2006-04-19 株式会社日立制作所 编码系统、编码方法和编码设备
CN101076031A (zh) * 2006-12-06 2007-11-21 腾讯科技(深圳)有限公司 一种应用网络硬盘的方法
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
CN101938648A (zh) * 2009-10-15 2011-01-05 北京暴风网际科技有限公司 一种媒体文件格式转换方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729355A (zh) * 2017-08-31 2018-02-23 上海金大师网络科技有限公司 一种基于数据储存类型TVariant的数据存储方法及其装置
CN107729355B (zh) * 2017-08-31 2020-12-29 上海金大师网络科技有限公司 一种基于数据储存类型TVariant的数据存储方法及其装置

Also Published As

Publication number Publication date
JP6470126B2 (ja) 2019-02-13
WO2012125355A1 (en) 2012-09-20
JP2014511529A (ja) 2014-05-15
EP2686791A4 (en) 2015-05-06
SG192868A1 (en) 2013-09-30
US20120239713A1 (en) 2012-09-20
CN103403713B (zh) 2017-03-29
EP2686791A1 (en) 2014-01-22
US8423585B2 (en) 2013-04-16
CA2930061C (en) 2018-03-06
CA2930061A1 (en) 2012-09-20
JP2015212961A (ja) 2015-11-26
CA2824868A1 (en) 2012-09-20
EP2686791B1 (en) 2019-05-08
CA2824868C (en) 2016-07-19

Similar Documents

Publication Publication Date Title
US8555018B1 (en) Techniques for storing data
US11641354B2 (en) Enhanced access to media, systems and methods
CN103608783A (zh) 用于备份应用的存储体系结构
US20140040861A1 (en) Metadata driven software architecture
CN110914814B (zh) 分布式存储环境的认知文件和对象管理
CN105051675A (zh) 复制目标服务
JP2010055590A (ja) 媒体推薦及び媒体取得システム
US10853425B2 (en) Systems and methods for managed asset distribution in a distributed heterogeneous storage environment
CN103797484A (zh) 与远程网络存储系统连接的本地网络存储
CN103403713A (zh) 文件系统中的文件变体
US11223528B2 (en) Management of cloud-based shared content using predictive cost modeling
KR102251276B1 (ko) 바인드 기반의 통합 컨텐츠 처리 장치
US11436193B2 (en) System and method for managing data using an enumerator
US10712951B2 (en) System and method for backing up social network data
US8990265B1 (en) Context-aware durability of file variants
US11468417B2 (en) Aggregated storage file service
US10769023B1 (en) Backup of structured query language server to object-based data storage service
US11966489B2 (en) Data certification process for cloud database platform
US11392587B1 (en) Rule generation and data certification onboarding process for cloud database platform
US11829367B2 (en) Data certification process for updates to data in cloud database platform
US8656285B1 (en) Web-based system and method facilitating provider-user interaction and the releasing of digital content
WO2023114164A1 (en) Data certification process for cloud database platform
Coughlin et al. The Future of Home Digital Storage
Chen Proceedings of the 7th ACM SIGSPATIAL International Workshop on Computational Transportation Science
CN105659556A (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
GR01 Patent grant
GR01 Patent grant