CN105431838A - 串流内容和占位符 - Google Patents

串流内容和占位符 Download PDF

Info

Publication number
CN105431838A
CN105431838A CN201380077933.4A CN201380077933A CN105431838A CN 105431838 A CN105431838 A CN 105431838A CN 201380077933 A CN201380077933 A CN 201380077933A CN 105431838 A CN105431838 A CN 105431838A
Authority
CN
China
Prior art keywords
file system
content
placeholder
file
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
CN201380077933.4A
Other languages
English (en)
Other versions
CN105431838B (zh
Inventor
M.J.诺瓦克
C.古扎克
S.兰吉特
S.D.胡格维尔夫
A.I.戈夫林
K.雷尼格
D.C.费尔兹
R.拉马尼
R.克里什纳默蒂
S.桑萨纳姆
O.Y.舍克尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105431838A publication Critical patent/CN105431838A/zh
Application granted granted Critical
Publication of CN105431838B publication Critical patent/CN105431838B/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
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to 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/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • 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/182Distributed file systems
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文所描述的主题的各方面涉及文件***占位符。在各方面中,占位符可以由客户端用于表示远程文件***对象。占位符可以包括元数据并且还可以包括所表示的远程文件***对象内容中的没有一个、一些或全部。响应于访问由占位符表示的文件***对象的内容的请求,客户端可以从远程存储***获取所需数据并且基于请求应用是否能够串流数据而将数据串流或不串流到请求应用。

Description

串流内容和占位符
背景技术
如今,对于家庭或甚至单个人员而言,具有诸如台式计算机、膝上型计算机、智能电话、互联网启用电视、机顶盒、游戏设备、阅读平板等之类的多个计算设备并不罕见。此外,用户可能具有存储在云中或其它地方的包括图片、音频、文档等的数千个文件。用户可能想要从对用户可用的一个或多个计算设备访问文件。
将所有的用户内容下载到每一个用户设备可能是不可能的,因为一些设备可能具有非常有限的存储。另外,甚至在计算设备具有大量存储时,将内容下载到计算设备也可能消耗相当大的带宽,可能是昂贵的,并且花费长时间。
本文所要求保护的主题不限于解决诸如以上描述的那些之类的任何缺点或者仅操作在诸如以上所描述的那些之类的环境中的实施例。而是,仅为了说明其中可以实践本文所描述的一些实施例的一个示例性技术领域而提供该背景。
发明内容
简要地,本文所描述的主题的各方面涉及文件***占位符。在各方面中,占位符可以由客户端用于表示远程文件***对象。占位符可以包括元数据并且还可以包括所表示的远程文件***对象内容中的没有一个、一些或全部。响应于访问由占位符表示的文件***对象的内容的请求,客户端可以从远程存储***获取所需数据并且基于请求应用是否能够串流数据而将数据串流或不串流到请求应用。
提供本发明内容以简要地标识以下在具体实施方式中进一步描述的主题的一些方面。本发明内容不意图标识所要求保护的主题的关键或本质特征,也不意图用于限制所要求保护的主题的范围。
短语“本文所描述的主题”是指在具体实施方式中描述的主题,除非上下文以其它方式清楚指示。术语“方面”应当读作“至少一个方面”。标识在具体实施方式中描述的主题的各方面不意图标识所要求保护的主题的关键或本质特征。
以上描述的方面和本文所描述的主题的其它方面通过示例的方式来说明而非在附图中受限制,在附图中相同的参考标号指示类似的元件并且其中。
附图说明
图1是表示本文所描述的主题的各方面可以合并到其中的示例性通用计算环境的框图;
图2-3是一般地表示依照本文所描述的主题的各方面的被配置成使用占位符的***的示例性组件的框图;
图4-5是一般地表示依照本文所描述的主题的各方面的从客户端的角度可以发生的示例性动作的流程图;以及
图6是一般地表示依照本文所描述的主题的各方面的从云存储***的角度可以发生的示例性动作的流程图。
具体实施方式
定义
如本文所使用的,术语“包括”及其变型要理解为开放式术语,其意指“包括但不限于”。除非上下文以其它方式清楚地指示,否则术语“或”要理解为“和/或”。术语“基于”要理解为“至少部分地基于”。术语“一个实施例”和“一实施例”要理解为“至少一个实施例”。术语“另一实施例”要理解为“至少一个其它实施例”。
如本文所使用的,诸如“一”、“一个”和“该”之类的术语包括所指示的项或动作中的一个或多个。特别地,在权利要求中,对一项的引用一般意指存在至少一个这样的项,并且对一动作的引用意指执行该动作的至少一个实例。
在本文中有时可以使用术语“第一”、“第二”、“第三”等。在没有附加上下文的情况下,权利要求中的这些术语的使用不意图暗示排序,而是用于标识的目的。例如,短语“第一版本”和“第二版本”不一定意指第一版本是真正的第一版本或是在第二版本之前创建,或甚至第一版本是在第二版本之前被请求或操作的。相反,这些短语用于标识不同的版本。
标题仅是为了方便;关于给定话题的信息可以在其标题指示该话题的章节之外找到。
其它显式或隐式定义可以包括在下文中。
示例性操作环境
图1图示了本文所描述的主题的各方面可以在其上实现的合适计算***环境100的示例。计算***环境100仅是合适计算环境的一个示例,并且不意图建议关于本文所描述的主题的各方面的使用或功能性的范围的任何限制。也不应当将计算环境100解释为具有涉及示例性操作环境100中所图示的组件中的任一个或组合的任何依赖性或要求。
本文所描述的主题的各方面可利用众多其它通用或专用计算***环境或配置来操作。可以适合于与本文所描述的主题的各方面一同使用的众所周知的计算***、环境或配置的示例包括个人计算机、服务器计算机——不论在裸金属上还是作为虚拟机——手持或膝上型设备、多处理器***、基于微控制器的***、机顶盒、可编程和非可编程消费电子产品、网络PC、微型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶、媒体中心或其它电器的电器、机动车嵌入式或附着式计算设备、其它移动设备、包括蜂窝电话、无线电话和有线电话的电话设备、包括任何上述***或设备的分布式计算环境等。
本文所描述的主题的各方面可以在由计算机执行的诸如程序模块之类的计算机可执行指令的一般上下文中描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所描述的主题的各方面还可以在分布式计算环境中实践,其中任务由通过通信网络链路的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质二者中,包括存储器存储设备中。
可替换地或此外,本文所描述的功能性可以至少部分地由一个或多个硬件逻辑组件执行。例如并且没有限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***的***(SOC)、复杂可编程逻辑器件(CPLD)等。
参照图1,用于实现本文所描述的主题的各方面的示例性***包括以计算机110形式的通用计算设备。计算机可以包括能够执行指令的任何电子设备。计算机110的组件可以包括处理单元120、***存储器130、以及将包括***存储器的各种***组件耦合到处理单元120的一个或多个***总线(由***总线121表示)。***总线121可以是任何若干类型的总线结构,包括存储器总线或存储器控制器、***总线以及使用任何各种总线架构的局部总线。作为示例并且没有限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、也称为夹层总线的***组件互连(PCI)总线、***组件互连扩展(PC1-X)总线、高级图形端口(AGP)和PCI快线(PCIe)。
处理单元120可以连接到硬件安全设备122。安全设备122可以存储并且能够生成可以用于保护计算机110的各方面的加密密钥。在一个实施例中,安全设备122可以包括受信平台模块(TPM)芯片、TPM安全设备等。
计算机110典型地包括各种计算机可读介质。计算机可读介质可以是可以由计算机110访问的任何可用介质,并且包括易失性和非易失性介质、以及可移除和不可移除介质二者。作为示例并且没有限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质二者。计算机存储介质包括RAM、ROM、EEPROM、固态存储装置、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储装置、盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或者可以用于存储期望的信息并且可以由计算机110访问的任何其它介质。计算机存储介质不包括通信介质。
通信介质典型地将计算机可读指令、数据结构、程序模块或其它数据体现在诸如载波之类的调制数据信号或其它输运机制中,并且包括任何信息递送介质。术语“调制数据信号”意指使其特性中的一个或多个以便于将信息编码在信号中的这样的方式来设置或改变的信号。作为示例并且没有限制,通信介质包括诸如有线网络或直接连线连接之类的有线介质,以及诸如声学、RF、红外和其它无线介质之类的无线介质。以上的任何组合也应当包括在计算机可读介质的范围内。
***存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132之类的以易失性和/或非易失性存储器形式的计算机存储介质。包含诸如在启动期间帮助在计算机110内的元件之间传送信息的基本例程的基本输入/输出***133(BIOS)典型地存储在ROM131中。RAM132典型地包含对处理单元120而言可立即访问和/或目前正***作在其上的数据和/或程序模块。作为示例并且没有限制,图1图示了操作***134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它可移除/不可移除、易失性/非易失性计算机存储介质。仅作为示例,图1图示了从不可移除、非易失性磁介质读取或向其写入的硬盘驱动器141,从可移除、非易失性磁盘152读取或向其写入的磁盘驱动器151,以及从诸如CDROM、DVD或其它光学介质之类的可移除、非易失性光盘156读取或向其写入的光盘驱动器155。可以在示例性操作环境中使用的其它可移除/不可移除、易失性/非易失性计算机存储介质包括盒式磁带、闪速存储器卡和其它固态存储设备、数字多功能盘、其它光盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141可以通过接口140连接到***总线121,并且磁盘驱动器151和光盘驱动器155可以通过诸如接口150之类的用于可移除非易失性存储器的接口而连接到***总线121。
在上文讨论的并且在图1中图示的驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被图示为存储操作***144、应用程序145、其它程序模块146和程序数据147。要指出的是,这些组件可以与操作***134、应用程序135、其它程序模块136和程序数据137相同或不同。操作***144、应用程序145、其它程序模块146和程序数据147在本文中被给予不同数字以说明在最低限度上它们是不同的副本。
用户可以通过诸如键盘162和定点设备161(其常被称为鼠标、跟踪球或触摸板)之类的输入设备将命令和信息录入到计算机110中。其它输入设备(未示出)可以包括麦克风(例如用于输入语音或其它音频)、操纵杆、游戏板、盘式卫星、扫描仪、触敏屏、书写板、相机(例如用于输入手势或其它视觉输入)等。这些和其它输入设备通常通过耦合到***总线的用户输入接口160连接到处理单元120,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构来连接。
通过使用以上标识的输入设备中的一个或多个,可以建立自然用户接口(NUI)。NUI可以依赖于语言识别、触摸和触笔识别、屏幕上和屏幕附近二者的手势识别、空中手势、头部和眼睛追踪、话音和语音、视觉、触摸、手势、机器智能等。可以用于与用户交互的一些示例性NUI技术包括触敏显示器、话音和语音识别、意图和目标理解、使用深度相机(例如立体相机***、红外相机***、RGB相机***及其组合)的运动手势检测、使用加速度计/陀螺仪的运动手势检测、脸部识别、3D显示器、头部、眼睛和凝视追踪、沉浸式增强型现实和虚拟现实***、以及用于使用电场感测电极感测脑部活动的技术(EEG和相关方法)。
监视器191或其它类型的显示设备也经由诸如视频接口190之类的接口连接到***总线121。除监视器之外,计算机还可以包括诸如扬声器197和打印机196之类的其它***输出设备,其可以通过输出***接口195来连接。
计算机110可以使用到诸如远程计算机180之类的一个或多个远程计算机的逻辑连接而在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,并且典型地包括上文关于计算机110所描述的元件中的许多或全部,尽管仅存储器存储设备181在图1中图示。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括电话网络、近场网络和其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接到LAN171。当在WAN联网环境中使用时,计算机110可以包括调制解调器172或用于建立通过诸如因特网之类的WAN173的通信的其它构件。可以为内部的或外部的调制解调器172可以经由用户输入接口160或其它合适的机制连接到***总线121。在联网环境中,关于计算机110或其部分所描绘的程序模块可以存储在远程存储器存储设备中。作为示例并且没有限制,图1将远程应用程序185图示为驻留在存储器设备181上。将领会到,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它构件。
占位符
依照本文所描述的主题的一方面,可以使用占位符。占位符可以包括表示文件***对象的数据结构。文件***对象可以是文件或目录。目录可以包括零或多个文件并且可以是传统文件目录或文件的某个其它集合或容器。为了简化,通常在本文中使用术语文件,但是要理解的是,本文的教导还可以应用于目录而不脱离于本文所描述的主题的各方面的精神或范围。
占位符可以存储在机器的本地存储设备上。在一个实现中,占位符可以指示与占位符相关联的内容在除机器的文件***(以下有时称为本地文件***或客户端文件***)之外的地方可用。例如,占位符可以指示与占位符相关联的内容存储在图3中图示的一个云存储***中。
在另一实现中,占位符可以指示内容通过驻留在机器上的应用可访问。该应用可以将内容存储在存储器、本地文件***或远程文件***中,可以生成内容,可以执行以上的组合等。即使文件***可以直接获取内容,文件***也仍旧可以依赖于应用来访问文件的内容。
在一个实现中,对于其中相关联的内容相对小(例如小于预确定的、可配置的或经计算的阈值)的占位符,与占位符相关联的整个内容的副本也可以存储在占位符中。将数据存储“在占位符中”意指包括将数据存储在占位符的数据结构中和/或将数据存储在由占位符指示的本地存储位置中。
取决于实现,占位符可以包括关于文件的各种层级的细节。在最低限度上,占位符包括标识远程存储***中的文件的数据。例如,占位符可以指示在其处可以连同向云存储***标识文件的信息(例如标识符)一起找到内容的特定云存储***。
占位符可以包括文件的外来元数据和/或固有元数据。外来元数据是存储在文件内容外部的任何元数据。例如,外来元数据可以包括名称、大小、修改日期、创建日期、最后一次访问日期、文件属性、版本、由文件***维护的其它元数据等。
固有元数据是存储在文件内容内部的任何元数据。例如,对于音频文件,固有元数据可以包括艺术家姓名、唱片名称、年份、歌曲标题、排名、标签、评论、流派、长度、比特率等。对于诸如相机图片之类的图像,固有元数据可以包括例如作者、拍取日期、获得程序名称、尺寸、分辨率、位深度、压缩、相机制造商、相机型号、光圈范围、曝光时间、其它信息等。
以上所描述的固有和外来元数据的示例不意图全部包括或穷尽固有和外来元数据的类型。事实上,基于本文的教导,本领域技术人员将容易认识到可以依照本文的教导使用的其它外来和固有元数据而不脱离于本文所描述的主题的各方面的精神或范围。
在一个实现中,占位符可以包括诸如文件名称、文件大小、修改文件的日期和创建文件的日期之类的文件的外来元数据。在另一实现中,除了以上之外,占位符还可以包括文件的属性。
在另一实现中,占位符可以包括文件的固有元数据中的一些或全部。
在一个实现,占位符可以包括文件的可搜索文本中的一些或全部。例如,文字处理文档可以具有包括文本和格式的内容。占位符可以包括文字处理文档的文本的开始N个字符、文字、段落、页面等而没有格式,其中N是预确定的、可配置的或在飞行中确定。
在一个实现中,占位符可以包括可搜索文本的(多个)语言的指示。例如,占位符可以包括指示可搜索文本以英文撰写的数据。作为另一示例,占位符可以包括指示文本的一部分以英文撰写的数据(例如标签或其它数据)以及指示文本的另一部分以西班牙文撰写的数据(例如另一标签或其它数据)。
作为另一示例,相比于用于呈现的其它数据,呈现程序可能具有相对少的文本。在该示例中,占位符可以包括呈现的所有文本而同时省略用于呈现的其它数据。
在一个实现中,占位符可以包括图像的缩略图。图像可以包括在与占位符相关联的文件内容中,而同时缩略图可以从图像生成或者也包括在文件内容中。在一个实施例中,包括在占位符中的缩略图可以具有可以预定义、可配置或在飞行中确定的相对小的大小。
在一个实现中,占位符可以包括标识如何获取与占位符相关联的内容的较大缩略图的数据。例如,占位符可以包括可以从其请求文件的较大缩略图的服务的地址。服务可以能够接受指示要提供的缩略图的大小的输入。
同样地,在一个实现中,占位符可以包括与占位符相关联的文件内容的较低保真度样本(或标识如何获取这样的样本的数据)。例如,占位符可以包括音乐、视频或其它类型文件的较低保真度样本(或到服务的链路)。
在一个实现中,占位符可以包括数据结构(例如位图、链路表或其它数据结构),其指示相关联的内容的哪些部分位于本地文件***上。可以在程序试图访问内容时咨询该数据结构。如果数据结构指示所请求的内容在本地可用,则可以从本地存储装置获取所请求的内容。如果不是,可以在为程序提供内容之前采取其它动作以从远程存储装置获取所请求的内容。
在一个实现中,占位符可以具有指示在离线时是否使文件内容可用的旗标。如之前所指示的,客户端可能间歇性地丧失到在其上找到与占位符相关联的内容的远程存储装置的连接性。如果旗标被设定,则当客户端在线时,针对占位符的内容可以被下载到本地存储装置并且在那里维护使得内容甚至在远程存储装置不可用时可用。
各种实施例可以具有包括以上所指示的数据中的任何一个或多个的占位符。
占位符可以用于给出甚至在文件内容远程驻留时文件也驻留在本地文件***上的幻觉。该幻觉甚至可以在远程文件***不可到达时维持。这可以通过将占位符***到本地文件***的命名空间中来完成。文件***可以修改成识别占位符并且酌情显示关于占位符所表示的文件的信息。例如,当用户导航通过本地文件***的命名空间时,文件***可以显示针对占位符的名称和相关元数据。
占位符可以用于大大减少所消耗的存储空间的量。例如,取代于本地存储针对大视频的内容,占位符可以用于指示视频可用。由于占位符可以使用比视频的实际内容小得多的量的空间,因此甚至相对小的本地存储设备可以包括用于包括大量内容的文件的大集合的占位符。
占位符可以在远程存储***不可用时使用。例如,当网络连接性丧失或不可用时,机器可以使用本地存储的占位符以导航和执行文件***的命名空间上的其它操作。
占位符甚至在客户端机器关机时持续。因此,占位符在重启客户端机器时仍旧可用。该持续行为可以通过将占位符存储在客户端的本地存储装置上来实现。
图2-3是一般地表示依照本文所描述的主题的各方面的被配置成使用占位符的***的示例性组件的框图。图2-3中图示的组件是示例性的并且不意指全部包括可能需要或包括的组件。另外,组件的数目在其它实施例中可以不同而不脱离于本文所描述的主题的各方面的精神或范围。在一些实施例中,结合图2-3描述的组件可以包括在其它组件(示出或未示出)中或者放置在子组件中而不脱离于本文所描述的主题的各方面的精神或范围。在一些实施例中,结合图2-3描述的组件和/或功能可以跨多个设备分布。
如本文所使用的,术语组件要理解成包括诸如设备的全部或部分、一个或多个软件模块或其部分的集合、一个或多个软件模块或其部分和一个或多个设备或其部分的某种组合等之类的硬件。
例如,图2-3中图示的组件可以使用一个或多个计算设备实现。这样的设备可以包括例如个人计算机、服务器计算机、手持或膝上型设备、多处理器***、基于微控制器的***、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、手机、个人数字助理(PDA)、游戏设备、打印机、包括机顶、媒体中心或其它电器的电器、机动车嵌入式或附着式计算设备、其它移动设备、包括任何以上***或设备的分布式计算环境等。
可以被配置成实现图2-3的组件中的一个或多个的示例性设备包括图1的计算机110。
组件还可以包括代码或由代码表示。代码包括指示计算机要采取的动作的指令。代码还可以包括除计算机要采取的动作之外的信息,诸如数据、资源、变量、限定、关系、关联等。
代码可以由计算机执行。当代码由计算机执行时,这可以称为过程。如本文所使用的术语“过程”及其变型可以包括一个或多个传统过程、线程、组件、库、执行任务的对象等。过程可以实现在硬件、软件或硬件和软件的组合中。在实施例中,过程是能够执行动作或者在执行动作中使用的任何机制,无论如何称谓。过程可以分布在多个设备或单个设备之上。代码可以在用户模式、内核模式、某个其它模式、以上的组合等中执行。
转向图2,***200可以包括客户端205、远程存储***210、本地存储装置215、占位符220,并且可以包括其它组件(未示出)。客户端205可以具有对本地存储装置215的直接访问权并且通过使用云网络连接到远程存储***210。
尽管在本文中有时使用术语“客户端”和“服务器”,但是要理解到,客户端可以实现在具有典型地与服务器相关联的硬件和/或软件的机器上,并且同样地,服务器可以实现在具有典型地与台式、个人或移动计算机相关联的硬件和/或软件的机器上。另外,客户端有时可以充当服务器并且反之亦然。有时,更频繁地充当客户端或服务器的两个或更多实体可以并发地为对等设备、服务器或客户端。在实施例中,客户端和服务器可以实现在相同的物理机器上。
另外,如本文所使用的,术语“服务器”和“客户端”中的每一个可以是指一个或多个物理或虚拟实体、在一个或多个物理或虚拟实体上执行的一个或多个过程等。因此,服务器可以包括一个或多个过程在其上执行的实际物理节点、一个或多个过程在其上执行的虚拟节点、在一个或多个节点上执行的服务、一起提供服务的节点组等。服务可以包括在一个或多个物理或虚拟实体上执行的一个或多个过程。另外,单个过程可以实现一个或多个服务器。
本地存储装置215可以包括能够存储数据的任何存储介质。例如,本地存储装置215可以包括易失性存储器(例如缓存)和非易失性存储器(例如持久性存储装置)。术语数据要宽泛地理解成包括可以由一个或多个计算机存储元件表示的任何事物。逻辑上,数据可以表示为易失性或非易失性存储器中的1和0的系列。在具有非二进制存储介质的计算机中,数据可以根据存储介质的能力来表示。数据可以组织成不同类型的数据结构,包括诸如数字、字母等之类的简单数据类型、分层、链路或其它相关数据类型、包括多个其它数据结构或简单数据类型的数据结构等。数据的一些示例包括信息、程序代码、程序状态、程序数据、其它数据等。
本地存储装置215可以是外部的、内部的、或者包括内部的一些组件和在客户端205外部的一些组件。在一个实现中,本地存储装置215可以包括托管客户端205的机器中所容纳的任何存储装置。在另一实现中,本地存储装置215可以包括直接连接到托管客户端205的机器的存储装置。例如,本地存储装置215可以经由USB链路、IEEE1394链路、光学链路、另一硬连线链路等连接到机器。
远程存储***210可以包括布置成存储数据和提供对数据的访问的一个或多个计算机。如本文所使用的访问可以包括读取数据、写入数据、删除数据、更新数据、包括以上中的两个或更多的组合等。远程存储***210可以经由诸如云之类的网络连接到客户端205。云是通常用作针对因特网的比喻的术语。其吸收了以下想法:计算、软件、数据访问、存储和其它资源可以由连接到因特网的实体提供而不要求用户知晓关于递送那些资源的计算基础设施的位置或其它细节。
在一个示例中,远程存储***210可以包括其中计算设备位于单个物理位置中的数据中心。在另一示例中,远程存储***210可以包括在不同位置处附接到云的计算设备和存储装置。在一个示例中,远程存储***210可以包括提供对一个或多个存储设备的访问的单个服务器或其它计算设备。在一个示例中,远程存储***210可以包括不在客户端205的局域网(LAN)上的计算设备。在另一示例中,远程存储***210可以包括未容纳在客户端205中或者直接连接到客户端205的任何存储装置。在另一示例中,远程存储***210可以包括在客户端未连接到从其可访问存储装置的网络时对客户端205不可用的存储装置。
有时在本文中使用术语云存储***。这不意图是关于本文中的教导可以应用于的远程存储***的限制,而是提供可以使用的远程存储***的示例而不脱离于本文所描述的主题的各方面的精神或范围。无论何时在本文中使用术语云存储***时,要理解的是,在其它实施例中,可以使用其它类型的远程存储***而不脱离于本文所描述的主题的各方面的精神或范围。
虽然本地存储装置215可以几乎连续地可用于客户端205或可以通过对用户可用的手段而容易地使其可用(例如通过***连接器),但是远程存储***210有时可能变得对客户端205不可用。例如,如果客户端205托管在膝上型计算机上,则膝上型计算机可能移动到不具有因特网接入的位置。作为另一示例,网络故障可能中断客户端205到远程存储***210的连接性。作为另一示例,远程存储***210可能变得不可操作或者可能关机或者断开以用于维护或其它目的。在没有占位符的情况下,当与远程存储***210的连接性丧失时,客户端205可能不能够导航命名空间或者在其中整个文件内容在本地存储装置215上不可用的文件上执行操作。
占位符220说明可以存储在存储于本地存储装置215上的占位符中的各种示例性数据字段。尽管在图2中仅示出一个占位符,但是更通常地,将存在存储在本地存储装置215上的多个占位符。例如,对于给定命名空间,可以存在用于每一个远程文件***对象的一个占位符,如果远程文件***对象的内容不完全存在于本地存储装置215上的话。作为另一示例,对于给定命名空间,甚至在远程文件***对象的整个内容存在于本地存储装置215上时,也可以存在用于远程文件***对象的占位符。该第二组占位符还可以存储在本地存储装置215上以用于具有大小小于如之前所提到的给定阈值的内容的文件。
命名空间可以包括用于文件***的每一个文件的标识符(例如名称或其它标识符)连同关于文件的层级信息一起。例如,命名空间可以包括对应于D:\DIR1\FILE1.TXT的命名空间条目。该命名空间条目指示文件的名称(例如FILE1.TXT)并且指示文件存在于目录(例如DIR1)中。命名空间还可以包括其它元数据。命名空间可以具有与文件***信息的一对一或某种其它的映射并且可以表示虚拟文件夹层级。
串流
如之前提到的,可能存在避免在用户的每一个设备上存储用户的所有文件的各种原因。利用占位符,文件可以完全水合(hydrate)、部分水合或脱水(dehydrate)。当客户端上的应用请求不存在于客户端文件***上的文件内容时,内容可以从云存储***获取。
为了完全水合文件,在一个实现中,由占位符表示的文件内容可以被下载和存储在客户端文件***上。文件的整个内容可以在单个下载中下载或者可以串流到客户端305,如以下更加详细描述的。当完全水合时,在一个实现中,可以将占位符从本地文件***清除并且利用正常文件***元数据取代。在另一实现中,即使文件的内容和元数据存储在客户端文件***上,占位符也可以保持并结合或替代针对文件维护的正常文件***元数据而使用。
当文件部分水合时,这指示由占位符表示的文件内容的至少部分存储在客户端文件***上。如早前所指示的,占位符的数据结构可以指示文件的哪些部分存储在客户端文件***上以及文件的哪些部分未存储在客户端文件***上。在一个实现中,至少只要文件部分水合,对应占位符就保持在客户端文件***上。
当文件脱水时,除包括在内容中(并且存储在占位符中)的固有元数据之外(如果有的话),文件内容不存储在客户端文件***上。
转向图3,***300可以包括客户端305、云310、云存储***315-317、本地储存装置320和其它组件(未示出)。客户端305可以包括文件管理器325、同步化管理器326、占位符管理器327、串流管理器328、能力检测器329和其它组件(未示出)。
图3的组件可以使用如之前所描述的一个或多个计算设备的硬件和/或软件实现。实现本地储存装置320的(多个)存储设备可以以与图2的本地存储装置215类似的方式实现,并且可以是外部的、内部的,或者包括内部的一些组件和在客户端305外部的一些组件。
本地储存装置320可以具有存留(例如在非易失性存储装置中存储)用于客户端的本地文件***的本地文件***对象的文件***元数据和存留用于云存储***的远程文件***对象的占位符的计算机存储元件。如之前所提到的,占位符可以包括远程文件***对象的元数据而不要求远程文件***对象的内容存在于本地储存装置320中。
包括在存储于本地储存装置320中的占位符中的元数据可以足以允许客户端305在关于云存储***离线的同时从占位符获取命名空间信息。在一个实现中,在最低限度上,充足的元数据可以包括文件***对象的名称。例如,利用文件***对象的名称和维护在文件***中的层级信息,用户甚至可以在客户端关于云存储***离线时导航客户端文件***的命名空间。在其它实现中,包括在占位符中的元数据还可以包括文件***对象的其它固有或外来的元数据。
文件管理器325可以结构化成经由文件***元数据和占位符而创建包括本地文件***对象和远程文件***对象的命名空间。文件管理器325还可以结构化成经由接口提供用于本地文件***对象和远程文件***对象的元数据而不管是否存在到云存储***的连接性。
在没有到云存储***的连接性的情况下,文件管理器325仍旧可以允许操作在驻留于本地的文件和由占位符表示的文件二者上继续进行。例如,文件管理器可以更新本地文件***的文件***数据结构以指示在由占位符表示的文件***对象上执行的操作,甚至在文件***对象的内容不完全驻留在本地储存装置上时。作为另一示例,文件管理器325可以更新命名空间以反映诸如重命名、移动、删除、重新存储、创建、拷贝操作等之类的操作。
同步化管理器326可以结构化(例如包括硬件和/或软件)以发现在没有到云存储***的连接性的情况下对文件***对象发生的改变(例如内容改变、包括固有、外来的元数据改变以及命名空间改变、其它改变等),并且在重建立与云存储***的连接性时,随云存储***而同步化改变。
在不同实现中,同步化管理器326可以使用用于发现改变的各种方法。例如,在一个实现中,同步化管理器326可以通过检查存储在文件***对象上发生的操作的操作日志来发现改变。作为另一示例,在另一实现中,同步化管理器326可以通过比较改变之前的文件***和文件***对象的状态与改变之后的文件***和文件***对象的状态来发现改变。
占位符管理器327可以结构化成创建、填入和维护占位符以确保存在针对命名空间中的每一个远程文件***对象的占位符,至少如果远程文件***对象的内容不完全存在于本地储存装置320上的话。如之前所提到的,当远程文件***对象的内容不完全存在于本地储存装置320上时,占位符还可以维护在本地文件***上。
串流管理器328和/或客户端305的其它组件可以结构化成针对由托管在客户端305上的应用所请求的内容执行串流动作。一些示例性动作包括:
1.接收访问文件内容的请求。例如,在使用呈现图形用户接口的导航应用来导航文件***命名空间时,用户可以选择文件并且请求打开文件。作为响应,导航应用可以通知串流管理器328并且指示将尝试打开文件的另一应用。
访问文件内容的请求可以伴随有所请求的文件的版本。例如,在一些情况中,可能合期望的是获取除最新版本之外的版本。在那些情况中,客户端305可以接收针对由占位符表示的文件的特定版本的请求。
2.基于占位符确定内容是否驻留在本地文件***上。如之前所指示的,占位符可以包括指示什么文件内容存储在本地文件***上的数据结构。当应用请求文件内容时,应用可以请求文件内的数据范围。数据结构可以用于确定该数据范围是否存储在本地文件***上。
3.如果内容驻留(例如存储)在本地文件***上,则确定内容是否为最新的。当文件在客户端与云存储***之间同步时,一个客户端可能更新云存储***上的文件而其它客户端可能直到后来才意识到该更新。为了确定内容是否为最新的,在一个实现中,可以将客户端上的文件版本与云存储***中的版本比较。客户端上的版本可以存储在占位符中。如果内容驻留在本地文件***上并且是最新的,则可以将内容从本地文件***提供到请求应用。否则,如果内容不是最新的,则可以在向请求应用提供内容之前从云存储***下载经更新的内容。
4.如果内容不驻留在本地文件***上,则确定将内容提供到的应用是否结构化成经由串流而访问内容。一些应用可能结构化成经由串流接口访问文件。例如,这些应用可以实现成通过串流对象读取和写入文件内容。
然而,其它应用可能没有结构化成经由串流接口访问文件。例如,这些其它应用在串流接口的可用之前已经被编码。它们可能已经被编码成访问依赖于本地可用的文件内容的文件***的非串流接口。这样的应用有时称为遗留应用。
确定应用是否结构化成经由串流访问内容可以以各种方式执行。在一个实现中,应用是否结构化成经由串流访问内容可以通过访问包括该信息的客户端的数据结构(例如诸如数据库)来确定。例如,在应用的安装期间或在另一时间处,数据库可以更新以指示应用是否结构化成经由串流访问内容。
用于确定应用是否结构化成经由串流访问内容的另一机制包括确定应用已经调用哪个接口。如果应用已经调用与串流内容兼容的接口,则可以确定应用结构化成经由串流访问内容。如果应用已经调用不与串流内容兼容的接口,则可以确定应用没有结构化成经由串流访问内容。该机制可以例如用在应用尝试打开文件时而不是在应用被启动(例如通过导航应用)并且指令以使用文件时。在后一种情况中,如果应用尝试经由遗留机制访问文件内容并且内容在本地不可用,则可能发生错误。
在另一实现中,可以通过其它信息(例如通过安装日期、版本号、标识符、其它数据等)确定应用为遗留应用,倘若不存在应用结构化成经由串流访问内容的其它指示的话。其它指示可以包括例如存储在客户端上的数据结构或者应用是否已经调用如之前所描述的串流接口等。基于安装日期、版本号或其它数据,应用可以被视为典型地将不能够经由串流访问内容的较旧应用。如果不存在应用能够经由串流访问内容的其它指示,则可以确定应用是遗留应用。另一方面,如果其它信息指示应用结构化成经由串流访问内容,则应用可以被分类为串流应用,即使应用可能例如较旧。
在一个实现中,确定应用是否结构化成经由串流访问内容可以由客户端305的组件完成。可以这样做的一个示例性组件是能力检测器329。在其它实施例中,该功能性可以包括在客户端305的其它组件中的一个中。
以上给出的确定应用是否结构化成经由串流访问内容的示例不意图是全部包括或穷尽的。基于本文中的教导,本领域技术人员可以认识到可以用于该目的的其它机制而不脱离于本文所描述的主题的各方面的精神或范围。
5.如果应用结构化成经由串流访问内容,则可以执行包括以下的动作:
A.从云存储***获取文件的至少部分。所获取的部分包括至少与所请求的那么多的内容,并且可以包括比所请求的更多的内容或者甚至确保所有文件内容在本地可用的足够文件内容。
文件类型是可以用于确定响应于针对内容的请求而下载文件的多少的一个因素。例如,文件可以包括视频、图像、文字处理或其它文档、压缩数据、数据库、其它数据等。文件可以与指示文件的(多个)内容类型的数据(例如元数据)相关联。
串流管理器328可以取决于类型而下载文件内容的不同量。例如,如果文件是图像类型,并且请求文件内容,则串流管理器328可以下载不在本地可用的所有文件内容。在一个实现中,这可以在向对文件内容的请求应用提供内容之前完成。
作为另一示例,文件可以是包括一个或多个其它文件的压缩文件。在一些实现中,所包括的压缩文件可能不能够解压缩,除非表示压缩文件的所有数据可用。在该情况中,如果接收到访问文件内的压缩文件的任何部分的请求,则串流管理器328可以在向请求应用提供内容之前下载压缩文件的所有数据。
作为另一示例,如果文件是视频类型,则响应于针对内容的请求,串流管理器328可以下载文件的经计算量的回放数据。经计算量可以例如基于比特率和时间周期。比特率和周期可以用于确定多么需要回放周期。比特率可以包括在占位符中。
此外,从云存储***获取的数据量可以取决于关于文件的访问模式。例如,在应用已经请求文件的N个小连续部分之后,串流管理器238可以增加从期望接收附加顺序读取的云存储***获取的数据的数据获取量的组块大小。
B.更新占位符。占位符可以更新以指示内容从本地文件***可得到。这可以涉及例如更新数据结构以指示文件的什么部分驻留在本地文件***上。在一个实现中,如果全部文件内容驻留在本地文件***上,则占位符可以被删除并且利用正常文件***元数据来取代。
C.向应用提供内容。在已经从云存储***下载内容之后,可以将内容提供给应用。
6.如果应用未结构化成经由串流访问内容,则串流管理器可以确保在向应用提供内容之前所有内容从本地文件***可得到。
应用可以打开由占位符表示的文件并且在将全部文件内容下载到本地储存装置320之前关闭文件。在应用关闭文件之后,客户端305可以基于策略而前摄地将文件标记为离线可用。将文件标记为离线可用可以使同步化管理器326在可能时前摄地下载文件并且使其在本地可用。一些示例性策略包括:
1.策略可以指示应用打开并且然后关闭的文件被完整下载,即使文件未被完整读取。
2.策略可以指示某些文件类型要被完整下载,一旦它们已经被打开和关闭的话,但是某些其它文件类型不被完整下载。例如,文档可以被完整下载而视频则不然。
3.策略可以指示小于可配置大小的文件要被完整下载,一旦它们已经被打开和关闭的话,但是大于阈值大小的文件不被完整下载。
4.策略可以允许应用指示是否使文件离线可用(例如经由API参数)。在一个实现中,客户端305可以基于应用指示盖写其它策略。在另一实现中,客户端305可以使用指示作为关于是否使文件离线可用的提示。
云存储***315-317可以包括一个或多个存储设备,连同提供对那些存储设备的访问的一个或多个计算设备一起。在一个实施例中,云存储***可以包括其中计算设备位于单个物理位置中的数据中心。在另一实施例中,云存储***可以包括在不同位置处附接到云的计算设备和存储装置。在一个实施例中,云存储***可以包括提供对一个或多个存储设备的访问的单个服务器。在一个实施例中,云存储***可以包括不在客户端的局域网(LAN)上的计算设备。在另一实施例中,云存储***可以包括未容纳在客户端中或者直接连接到客户端的任何存储装置。
尽管在图2中示出三个云存储***,但是在其它实现中,可能存在任何数目的云存储***。
图4-6是一般地表示依照本文所描述的主题的各方面可以发生的示例性动作的流程图。为了解释的简化,将结合图4-6描述的方法描绘和描述为一系列动作。要理解和领会的是,本文所描述的主题的各方面不受所图示的动作和/或动作的次序的限制。在一个实施例中,动作以如下文描述的次序发生。然而在其它实施例中,两个或更多动作可以并行或以另一次序发生。在其它实施例中,一个或多个动作可以与本文未呈现和描述的其它动作一同发生。另外,可以不要求所有所图示的动作来实现依照本文所描述的主题的各方面的方法。此外,本领域技术人员将理解和领会到,方法可以可替换地经由状态图表示为一系列相互关联的状态或表示为事件。
图4-5是一般地表示依照本文所描述的主题的各方面的从客户端的角度可以发生的示例性动作的流程图。转向图4,在块405处,动作开始。
在块410处,接收客户端的本地文件***的文件的指示。例如,参照图3,串流管理器328可以从文件管理器325或另一组件接收文件的指示。
在块415处,接收访问文件内容的请求。例如,参照图3,串流管理器328接收读取文件范围内的数据的请求。在一个实施例中,块410和块415的动作可以在单个事件中发生。例如,文件的指示和读取文件数据的请求可以在单个请求中接收(例如作为请求的参数)。
在块420处,基于占位符做出所请求的内容是否驻留在本地文件***上的确定。如果是这样,则动作在块425处继续;否则,动作在图5的块510处继续。例如,参照图3,串流管理器328可以咨询占位符中的数据结构以确定所请求的内容是否驻留在本地储存装置320上。
在块425处,如果内容是最新的,则动作在块435处继续;否则,动作在块430处继续。例如,参照图3,串流管理器328可以通过之前所描述的机制确定所请求的内容是否为最新的。
在块430处,获取最新内容。例如,参照图3,串流管理器328可以从占位符指示的云存储***(例如云存储***315-317中的一个)获取更新的内容。
在块435处,向请求应用提供内容。例如,参照图3,可以向已经请求内容的应用提供本地储存装置320上的最新内容。
在块440处,可以发生其它动作。其它动作可以包括例如结合图3或在本文中的其它地方提到的动作。
转向图5,在块510处,做出关于向其提供内容的应用是否结构化成经由串流访问内容的确定。如果是这样,则动作在块520处继续;否则,动作在块530处继续。例如,参照图3,串流管理器328可以确定应用(未示出)是否被编码成经由串流访问内容。
在块515处,如果应用未结构化成经由串流访问内容,则可以从云存储***下载不驻留在本地的所有文件内容。例如,参照图3,串流管理器328可以使用占位符来确定文件的什么部分不驻留在本地存储装置上并且可以从适当的云存储***下载那些部分。
在块520处,从云存储***获取文件的至少部分。例如,参照图3,串流管理器328可以是来自适当云存储***的文件的部分(或全部)。
在块525处,更新占位符以指示内容从本地文件***可得到。例如,参照图3,客户端305的组件可以更新占位符以指示文件的什么部分在客户端上可用。
在块530处,向应用提供内容。例如,参照图3,可以向请求应用(未示出)提供内容。
在块535处,可以发生其它动作。其它动作可以包括例如结合图3或者在本文中的其它地方提到的动作。
图6是一般地表示依照本文所描述的主题的各方面的从云存储***的角度可以发生的示例性动作的流程图。在块605处,动作开始。
在块610处,接收针对内容的请求。例如,参照图3,云存储***315可以从客户端305接收针对文件的内容的请求。该请求可以例如在客户端305尝试串流数据或获取针对文件的所有数据时接收。
在块615处,提供内容。例如,参照图3,云存储***315可以向客户端305提供所请求的内容。
在块620处,可以发生其它动作。
如可以从前述详细描述看到的,已经与文件***占位符有关地描述了各方面。在本文所描述的主题的各方面容许各种修改和可替换的构造的同时,其某些所图示的实施例在附图中示出并且已经在上文进行了详细描述。然而,应当理解的是,不存在将所要求保护的主题的各方面限于所公开的特定形式的意图,而是相反,意图在于覆盖落在本文所描述的主题的各种方面的精神和范围内的所有修改、可替换构造和等同物。

Claims (10)

1.一种至少部分地由计算机实现的方法,所述方法包括:
接收客户端的本地文件***的文件***对象的指示,文件***对象由占位符表示,占位符存储在本地文件***上,客户端结构化成从占位符获取文件***对象的元数据,客户端结构化成使本地文件***与远程存储***同步,元数据足以允许客户端在关于远程存储***离线的同时从占位符获取关于文件***对象的命名空间信息,占位符包括标识文件***对象的数据从其可获取的远程存储***的数据;
接收访问文件***对象的内容的请求;
基于占位符确定内容是否驻留在本地文件***上;
如果内容驻留在本地文件***上,则确定内容是否为最新的,并且如果是这样,则从本地文件***提供内容;
如果内容不驻留在本地文件***上,则确定向其提供内容的应用是否结构化成经由串流访问内容或者向其提供内容的应用是否未结构化成经由串流访问内容;
如果向其提供内容的应用结构化成经由串流访问内容,则执行包括以下的动作:
  从远程存储***获取文件***对象的至少部分,
  更新占位符以指示内容从本地文件***可得到,以及
  向应用提供内容。
2.权利要求1的方法,其中确定向其提供内容的应用是否结构化成经由串流访问内容包括访问存储在本地文件***上的数据结构,数据结构已经结合安装应用而创建,数据结构指示应用是否结构化成经由串流访问内容。
3.权利要求1的方法,其中获取文件***对象的至少部分包括基于与文件***对象相关联的类型来获取所述至少部分。
4.权利要求3的方法,其中基于与文件***对象相关联的类型来获取所述至少部分包括如果类型是图像类型,则在提供对文件内容的访问之前获取文件***对象的所有内容。
5.权利要求3的方法,其中基于与文件***对象相关联的类型来获取所述至少部分包括如果文件***对象被压缩并且请求是访问压缩文件的任何部分,则获取文件***对象内的压缩文件的所有数据。
6.权利要求1的方法,其中获取文件***对象的至少部分包括获取文件***对象的经计算量的回放数据,经计算量的回放数据是基于文件***对象的比特率,比特率包括在占位符中。
7.在计算环境中,一种***,包括:
储存装置,其具有存留用于本地文件***的本地文件***对象的文件***元数据并且存留用于远程存储***的远程文件***对象的占位符的计算机存储元件,占位符包括远程文件***对象的元数据而不要求远程文件***对象存在于储存装置中;
占位符管理器,其结构化成创建、填入和维护占位符以确保至少如果远程文件***对象不完全存在于储存装置上,则存在针对命名空间中的远程文件***对象的占位符;以及
托管在客户端上的串流管理器,串流管理器结构化成执行包括以下的动作:
  接收访问文件***对象的内容的请求;
  基于占位符确定内容是否驻留在本地文件***上;
  如果内容驻留在本地文件***上,则确定内容是否为最新的,并且如果是这样,则从本地文件***提供内容;
  如果内容不驻留在本地文件***上,则确定向其提供内容的应用是否结构化成经由串流访问内容或者向其提供内容的应用是否未结构化成经由串流访问内容;
  如果向其提供内容的应用结构化成经由串流访问内容,则执行包括以下的动作:
    从远程存储***获取文件***对象的至少部分,
    更新占位符以指示内容从本地文件***可得到,以及
    向应用提供内容。
8.权利要求7的***,其中串流管理器还结构化成如果应用未结构化成经由串流访问内容,则确保在向应用提供内容之前所有内容从本地文件***可得到。
9.一种具有计算机可执行指令的计算机存储介质,所述指令在执行时施行包括以下的动作:
接收针对由客户端指示的文件***对象的数据的请求,客户端具有客户端文件***,客户端文件***具有其中所有内容位于客户端文件***上的文件***对象和其中少于所有的内容位于客户端文件***上的文件***对象,客户端具有至少表示其中少于所有的内容位于客户端文件***上的文件***对象的占位符,文件***对象由存储在客户端文件***上的占位符表示,占位符标识文件***对象的数据从其可获取的远程存储***,客户端结构化成如果应用结构化成经由串流访问内容,则将文件***对象的内容从远程存储***串流到托管在客户端上的应用,并且如果应用未结构化成经由串流访问内容,则确保文件***对象的所有内容在客户端文件***上可用;以及
从远程存储***提供文件***对象的数据。
10.权利要求9的计算机存储介质,其中提供文件***对象的数据包括发送文件***对象内的所有压缩文件,客户端还结构化成如果文件***对象被压缩并且应用请求访问压缩文件的任何部分,则请求所有压缩文件。
CN201380077933.4A 2013-05-01 2013-09-21 串流内容和占位符 Active CN105431838B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/874488 2013-05-01
US13/874,488 US9405767B2 (en) 2013-05-01 2013-05-01 Streaming content and placeholders
PCT/US2013/061072 WO2014178907A1 (en) 2013-05-01 2013-09-21 Streaming content and placeholders

Publications (2)

Publication Number Publication Date
CN105431838A true CN105431838A (zh) 2016-03-23
CN105431838B CN105431838B (zh) 2019-05-03

Family

ID=49305182

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077933.4A Active CN105431838B (zh) 2013-05-01 2013-09-21 串流内容和占位符

Country Status (5)

Country Link
US (2) US9405767B2 (zh)
EP (1) EP2992454B1 (zh)
KR (1) KR102124231B1 (zh)
CN (1) CN105431838B (zh)
WO (1) WO2014178907A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109564529A (zh) * 2016-08-02 2019-04-02 微软技术许可有限责任公司 基于符号链接的占位符
CN109564566A (zh) * 2016-08-10 2019-04-02 微软技术许可有限责任公司 对调用应用的发现以用于控制文件水化行为
CN110622147A (zh) * 2017-05-11 2019-12-27 微软技术许可有限责任公司 存储虚拟化***中占位符的元数据存储
CN115336237A (zh) * 2020-03-20 2022-11-11 国际商业机器公司 远程存储的文件的预测性供应

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US20140181046A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to backup unprotected virtual machines
US9311121B2 (en) 2012-12-21 2016-04-12 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US20140196038A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine management in a data storage system
US20140201162A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to restore selected files from block-level backup for virtual machines
US9286110B2 (en) 2013-01-14 2016-03-15 Commvault Systems, Inc. Seamless virtual machine recall in a data storage system
US9405767B2 (en) 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US20150074536A1 (en) * 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
EP3186701B1 (en) * 2014-08-26 2022-10-05 Ctera Networks, Ltd. A method and computing device for allowing synchronized access to cloud
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
KR20160041398A (ko) * 2014-10-07 2016-04-18 삼성전자주식회사 컨텐츠 처리 장치 및 그의 컨텐츠 처리 방법
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US9563638B2 (en) 2015-01-30 2017-02-07 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US10248705B2 (en) 2015-01-30 2019-04-02 Dropbox, Inc. Storage constrained synchronization of shared content items
US9185164B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Idle state triggered constrained synchronization of shared content items
CN107409142A (zh) * 2015-01-30 2017-11-28 卓普网盘股份有限公司 存储受约束的共享内容项同步
US9413824B1 (en) * 2015-01-30 2016-08-09 Dropbox, Inc. Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US9361349B1 (en) 2015-01-30 2016-06-07 Dropbox, Inc. Storage constrained synchronization of shared content items
US10831715B2 (en) 2015-01-30 2020-11-10 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10887371B2 (en) * 2015-09-14 2021-01-05 Google Llc Systems and methods for content storage and retrieval
US9571573B1 (en) * 2015-10-29 2017-02-14 Dropbox, Inc. Peer-to-peer synchronization protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10341418B2 (en) * 2015-11-06 2019-07-02 Microsoft Technology Licensing, Llc Reducing network bandwidth utilization during file transfer
WO2017115157A1 (en) * 2015-12-29 2017-07-06 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9537952B1 (en) * 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10565067B2 (en) 2016-03-09 2020-02-18 Commvault Systems, Inc. Virtual server cloud file system for virtual machine backup from cloud operations
US10049145B2 (en) 2016-04-25 2018-08-14 Dropbox, Inc. Storage constrained synchronization engine
US9934303B2 (en) * 2016-04-25 2018-04-03 Dropbox, Inc. Storage constrained synchronization engine
US10719532B2 (en) * 2016-04-25 2020-07-21 Dropbox, Inc. Storage constrained synchronization engine
AU2017256162B2 (en) * 2016-04-25 2018-11-08 Dropbox, Inc. Storage constrained synchronization engine
US20180059990A1 (en) * 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
US10616327B2 (en) * 2016-09-20 2020-04-07 Microsoft Technology Licensing, Llc Policy based hydration behavior in cloud storage synchronization
US11368528B2 (en) * 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
US10417102B2 (en) 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US11372816B2 (en) * 2016-12-30 2022-06-28 Dropbox, Inc. Accessing network based content items by a mobile device while offline
US10896100B2 (en) 2017-03-24 2021-01-19 Commvault Systems, Inc. Buffered virtual machine replication
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11494348B2 (en) 2018-06-11 2022-11-08 Microsoft Technology Licensing, Llc System and method for using object references as a data type
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10911539B2 (en) 2019-01-08 2021-02-02 Box, Inc. Managing shared content directory structure metadata
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US11269700B2 (en) * 2019-04-23 2022-03-08 Apple Inc. System call interception for file providers
US11029932B2 (en) * 2019-08-23 2021-06-08 Microsoft Technology Licensing, Llc Hydration of applications
CN110941380B (zh) * 2019-11-20 2022-02-22 三星电子(中国)研发中心 一种图片下载方法、装置和计算机可读存储介质
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11748143B2 (en) 2020-05-15 2023-09-05 Commvault Systems, Inc. Live mount of virtual machines in a public cloud computing environment
US11593363B1 (en) * 2020-09-23 2023-02-28 Styra, Inc. Comprehension indexing feature
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US20230401047A1 (en) * 2022-06-14 2023-12-14 Truist Bank Graphical user interface for reducing vulnerabilities associated with legacy software

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0746819A1 (en) * 1994-02-25 1996-12-11 Kodak Limited Data storage management for network interconnected processors
WO2007068147A1 (en) * 2005-12-17 2007-06-21 Intel Corporation Installing and executing shared applications in shared folders
US20090030620A1 (en) * 2007-07-24 2009-01-29 David Novo System and method for electronic publication of scientific data and analysis
CN101930449A (zh) * 2009-06-22 2010-12-29 三星电子株式会社 客户机、代理服务器和用于提供云存储器的方法
US8108483B2 (en) * 2004-01-30 2012-01-31 Microsoft Corporation System and method for generating a consistent user namespace on networked devices
CN102567489A (zh) * 2010-12-21 2012-07-11 微软公司 搜索文件
US20130036135A1 (en) * 2011-08-04 2013-02-07 Michael Brockey Cloud data storage
WO2013036920A1 (en) * 2011-09-09 2013-03-14 Cloudon, Inc. Systems and methods for workspace interaction with cloud-based applications

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0713183A3 (en) 1994-11-18 1996-10-02 Microsoft Corp Network-independent shadow files
US20060129627A1 (en) * 1996-11-22 2006-06-15 Mangosoft Corp. Internet-based shared file service with native PC client access and semantics and distributed version control
AU6037198A (en) 1997-01-27 1998-08-26 Benjamin Slotznick System for delivering and simultaneously displaying primary and secondary information, and for displaying only the secondary information during interstitial space
US5978815A (en) 1997-06-13 1999-11-02 Microsoft Corporation File system primitive providing native file system support for remote storage
US7373391B2 (en) 2000-10-24 2008-05-13 Seiko Epson Corporation System and method for digital content distribution
US6868424B2 (en) 2002-07-25 2005-03-15 Xerox Corporation Electronic filing system with file-placeholders
US20040049513A1 (en) 2002-08-30 2004-03-11 Arkivio, Inc. Techniques for moving stub files without recalling data
US20040267812A1 (en) 2003-06-26 2004-12-30 Microsoft Corporation Media platform
RU2371757C2 (ru) 2003-08-21 2009-10-27 Майкрософт Корпорейшн Системы и способы моделирования данных в основанной на предметах платформе хранения
RU2412461C2 (ru) 2003-08-21 2011-02-20 Майкрософт Корпорейшн Системы и способы сопряжения прикладных программ с платформой хранения на основе статей
US7441011B2 (en) 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US7568042B2 (en) 2004-03-18 2009-07-28 Sony Corporation Networked local media cache engine
US7698516B2 (en) 2005-01-12 2010-04-13 Emc Corporation Methods and apparatus for managing deletion of data
US7720890B2 (en) 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US20060200570A1 (en) 2005-03-02 2006-09-07 Nokia Corporation Discovering and mounting network file systems via ad hoc, peer-to-peer networks
US7725837B2 (en) 2005-03-31 2010-05-25 Microsoft Corporation Digital image browser
US7634514B2 (en) 2005-05-09 2009-12-15 Microsoft Corporation Synchronizing file system directories
US7630999B2 (en) 2005-07-15 2009-12-08 Microsoft Corporation Intelligent container index and search
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
US8275049B2 (en) 2006-06-16 2012-09-25 Via Technologies, Inc. Systems and methods of improved motion estimation using a graphics processing unit
JP5082310B2 (ja) 2006-07-10 2012-11-28 日本電気株式会社 データ移行装置及びプログラム
CN100498781C (zh) 2006-08-11 2009-06-10 中国科学院计算技术研究所 用附着属性存储逻辑文件***元数据的方法
US7603397B1 (en) 2006-10-03 2009-10-13 Emc Corporation Detecting and managing missing parents between primary and secondary data stores
EP2109835A4 (en) 2007-02-05 2011-06-08 Moonwalk Universal Pty Ltd DATA MANAGEMENT SYSTEM
US8583878B2 (en) 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
US8065381B2 (en) 2008-01-25 2011-11-22 Microsoft Corporation Synchronizing for directory changes performed while offline
US7958167B2 (en) 2008-03-05 2011-06-07 Microsoft Corporation Integration of unstructed data into a database
US9426244B2 (en) * 2008-04-09 2016-08-23 Level 3 Communications, Llc Content delivery in a network
WO2010045456A1 (en) 2008-10-15 2010-04-22 Workscape. Inc. Performance driven compensation for enterprise-level human capital management
US8468070B1 (en) * 2009-04-16 2013-06-18 Amazon Technologies, Inc. Local rendering in lieu of streaming
WO2010135359A2 (en) 2009-05-19 2010-11-25 Smx Inet Global Services Sa Providing a local device with computing services from a remote host
US10496608B2 (en) 2009-10-28 2019-12-03 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
US8612423B2 (en) 2010-10-29 2013-12-17 Microsoft Corporation Search cache for document search
US9824091B2 (en) 2010-12-03 2017-11-21 Microsoft Technology Licensing, Llc File system backup using change journal
US20120158891A1 (en) 2010-12-21 2012-06-21 Microsoft Corporation Techniques for universal representation of digital content
US8910149B2 (en) 2010-12-24 2014-12-09 Microsoft Corporation On-demand or incremental remote data copy
JP2012174113A (ja) 2011-02-23 2012-09-10 Hitachi Ltd ファイルストレージシステム及び記憶制御方法
US8812662B2 (en) * 2011-06-29 2014-08-19 Sonic Ip, Inc. Systems and methods for estimating available bandwidth and performing initial stream selection when streaming content
JP5552720B2 (ja) 2011-09-29 2014-07-16 ビッグローブ株式会社 ストレージシステム、ストレージサーバ、ユーザデータ共有方法、及びプログラム
US8331566B1 (en) 2011-11-16 2012-12-11 Google Inc. Media transmission and management
US8938550B2 (en) 2011-12-15 2015-01-20 Microsoft Corporation Autonomous network streaming
US20140250069A1 (en) 2013-03-01 2014-09-04 Appsense Limited Systems and methods for selectively synchronizing files
US9166866B2 (en) 2013-04-30 2015-10-20 Microsoft Technology Licensing, Llc Hydration and dehydration with placeholders
US9218350B2 (en) 2013-04-30 2015-12-22 Microsoft Technology Licensing, Llc Searching and placeholders
US9552363B2 (en) 2013-04-30 2017-01-24 Microsoft Technology Licensing, Llc File management with placeholders
US9405767B2 (en) 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0746819A1 (en) * 1994-02-25 1996-12-11 Kodak Limited Data storage management for network interconnected processors
US8108483B2 (en) * 2004-01-30 2012-01-31 Microsoft Corporation System and method for generating a consistent user namespace on networked devices
WO2007068147A1 (en) * 2005-12-17 2007-06-21 Intel Corporation Installing and executing shared applications in shared folders
US20090030620A1 (en) * 2007-07-24 2009-01-29 David Novo System and method for electronic publication of scientific data and analysis
CN101930449A (zh) * 2009-06-22 2010-12-29 三星电子株式会社 客户机、代理服务器和用于提供云存储器的方法
CN102567489A (zh) * 2010-12-21 2012-07-11 微软公司 搜索文件
US20130036135A1 (en) * 2011-08-04 2013-02-07 Michael Brockey Cloud data storage
WO2013036920A1 (en) * 2011-09-09 2013-03-14 Cloudon, Inc. Systems and methods for workspace interaction with cloud-based applications

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109564529A (zh) * 2016-08-02 2019-04-02 微软技术许可有限责任公司 基于符号链接的占位符
CN109564529B (zh) * 2016-08-02 2023-09-29 微软技术许可有限责任公司 基于符号链接的占位符
CN109564566A (zh) * 2016-08-10 2019-04-02 微软技术许可有限责任公司 对调用应用的发现以用于控制文件水化行为
CN109564566B (zh) * 2016-08-10 2023-06-20 微软技术许可有限责任公司 对调用应用的发现以用于控制文件水化行为
CN110622147A (zh) * 2017-05-11 2019-12-27 微软技术许可有限责任公司 存储虚拟化***中占位符的元数据存储
CN110622147B (zh) * 2017-05-11 2024-01-16 微软技术许可有限责任公司 存储虚拟化***中占位符的元数据存储
CN115336237A (zh) * 2020-03-20 2022-11-11 国际商业机器公司 远程存储的文件的预测性供应

Also Published As

Publication number Publication date
CN105431838B (zh) 2019-05-03
US10264039B2 (en) 2019-04-16
EP2992454B1 (en) 2021-05-05
US9405767B2 (en) 2016-08-02
WO2014178907A1 (en) 2014-11-06
US20160330256A1 (en) 2016-11-10
US20140330874A1 (en) 2014-11-06
EP2992454A1 (en) 2016-03-09
KR20160003687A (ko) 2016-01-11
KR102124231B1 (ko) 2020-06-17

Similar Documents

Publication Publication Date Title
CN105431838A (zh) 串流内容和占位符
CN105474200B (zh) 具有占位符的水合和脱水
CA2907990C (en) File management with placeholders
US9734158B2 (en) Searching and placeholders
US10380074B1 (en) Systems and methods for efficient backup deduplication
US10423495B1 (en) Deduplication grouping
CN109416621B (zh) 利用支持共享对象的计算机存储***来恢复非易失性存储中的空闲空间
US10877992B2 (en) Updating a database
TWI546727B (zh) 跨平台的檔案屬性同步的方法及電腦可讀取的儲存媒體
CA2722511C (en) Efficient change tracking of transcoded copies
TW201804343A (zh) 檢索索引產生方法及應用此方法之伺服器
CN103617166A (zh) 一种元数据的镜像方法
KR20190067656A (ko) 메타정보에 따른 파일 관리 방법 및 그 시스템

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