CN109983431A - 用于存储设备中的列表检索的系统和方法 - Google Patents
用于存储设备中的列表检索的系统和方法 Download PDFInfo
- Publication number
- CN109983431A CN109983431A CN201780071925.7A CN201780071925A CN109983431A CN 109983431 A CN109983431 A CN 109983431A CN 201780071925 A CN201780071925 A CN 201780071925A CN 109983431 A CN109983431 A CN 109983431A
- Authority
- CN
- China
- Prior art keywords
- data
- additional
- node
- equipment
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于存储设备中的列表检索的系统和方法,其显著减少了检索数据所需的命令的数量。可以发出单个命令或请求来接收存储在父节点、子节点和/或孙节点处的数据。例如,可以发出包括与特定级别对应的节点、低于获得数据的该特定级别的深度级别和/或过滤标准的请求。利用该信息,可以获得到该深度级别的所请求的信息,同时过滤掉不包括在该请求中的信息。当请求对应于父节点并且期望关于子节点的信息时,例如,不需要附加的请求来从所有的父节点和子节点获得信息。因此,减少了提供某些被存储的管理信息所需的时间长度。
Description
技术领域
本公开一般而言涉及存储系统,并且更具体而言涉及用于存储设备中的列表检索的系统和方法。
背景技术
互联网的不断扩展、企业计算网络和系统的扩展和复杂性,通过互联网存储的和可访问的内容的激增以及许多其它因素继续推动对大型复杂数据存储系统的需求。因此,随着对数据存储的需求持续增加,更大和更复杂的存储系统正在被设计和部署。许多大规模数据存储系统利用包括存储介质阵列的存储设备。通常,这些存储系统包括用于存储和访问文件的文件系统。除了存储系统文件(例如,操作系统文件、设备驱动程序文件等)之外,文件系统还提供用户数据文件的存储和访问。
通常,大容量存储系统包括接口或其它管理门户,诸如管理员的用户可以通过这些接口或其它管理门户经由设备或应用来控制或管理系统。例如,存储设备可以包括可通过用户的计算设备或终端访问的接口。该接口提供了门户,通过该门户可以将命令发送到存储系统以控制系统的操作。管理程序可以接收诸如以下的操作:向系统添加有效用户使得用户可以存储和/或检索存储在存储系统中的数据,选择或取消选择存储系统的某些特征(诸如对一个或多个存储在系统中的文件激活冗余)和/或配置存储系统的底层物理设备以提高存储系统的效率。通常,管理门户和/或计算设备可以从系统管理员接收任何数量的指令以配置和管理数据存储系统。
发明内容
提供了用于列表检索的方法(包括计算机实现的方法)、设备(包括存储设备)以及计算机程序产品。
根据一些实施例,提供了一种方法。该方法包括由存储设备存储与存储设备相关的数据。数据存储在多个节点处。所述多个节点包括一个或多个级别的层次结构。所述多个节点中的每个节点存储数据的一部分。该方法还包括接收数据请求。该数据请求识别所述多个节点中的第一节点和深度级别。该深度级别对应于一个或多个级别中的一个级别。该方法还包括识别与该深度级别对应的所述多个节点中的一个或多个附加节点。该方法还包括生成针对存储在第一节点处的数据的子集的命令。该方法还包括生成针对存储在所述一个或多个附加节点处的数据的一个或多个附加子集的一个或多个附加命令。所述命令和所述一个或多个附加命令是与表述性状态转移应用编程接口(RESTful API)相关联的GET命令。该方法还包括向RESTful API发出所述命令。该方法还包括从RESTful API接收对所述命令的第一响应,第一响应包括来自第一节点的数据的所述子集。该方法还包括向RESTfulAPI发出所述一个或多个附加命令。该方法还包括从RESTful API接收对所述一个或多个附加命令的一个或多个附加响应。所述一个或多个附加响应包括来自所述一个或多个附加节点的数据的所述一个或多个附加子集。该方法还包括响应于该数据请求而合并数据的子集和数据的所述一个或多个附加子集。该方法还包括将响应传送到该数据请求。
根据本发明的一些实施例,提供了一种设备。该设备包括一个或多个处理器。该设备还包括包含指令的非瞬态计算机可读介质,当所述指令由所述一个或多个处理器执行时使得所述一个或多个处理器执行包括上述方法的操作。
根据一些实施例,提供了一种计算机程序产品。该计算机程序产品有形地实施在设备的非瞬态机器可读存储介质中,包括指令,当所述指令由一个或多个处理器执行时使得所述一个或多个处理器执行上述方法。
本发明内容不旨在识别所要求保护的主题的关键或必要特征,也不旨在单独使用以确定所要求保护的主题的范围。应该通过参考本专利的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解本主题。
通过参考以下说明书、权利要求和附图,前述以及其它特征和实施例将变得更加明显。
附图说明
下面参考以下附图详细描述本发明的说明性实施例:
图1是图示根据一些实施例的数据存储系统的框图。
图2是图示根据一些实施例的存储设备的文件系统的层的框图。
图3是图示根据一些实施例的存储或安装在文件系统中的数据的层次结构的框图。
图4是图示根据一些实施例的网络中的主机设备的框图。
图5是图示根据一些实施例的用于存储设备中的列表检索的系统的框图。
图6是图示根据一些实施例的用于列表检索的计算设备的框图。
图7是图示根据一些实施例的文件系统中的节点和级别的框图。
图8A-图8C是图示根据一些实施例的响应于单独的命令而返回的文件系统中的节点和级别的框图。
图9是图示根据一些实施例的用于存储设备中的列表检索的方法的流程图。
具体实施方式
以下提供本公开的某些方面和实施例。这些方面和实施例中的一些可以被独立地应用,并且它们中的一些可以被组合应用,这对于本领域技术人员来说是明显的。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本发明实施例的透彻理解。但是,明显的是,可以在没有这些具体细节的情况下实践各种实施例。图和描述不旨在是限制性的。
随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。而是,随后对示例性实施例的描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应该理解的是,在不脱离所附权利要求中阐述的本发明的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
在以下描述中给出了具体细节以提供对实施例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些实施例。例如,电路、系统、网络、处理和其它组件可以被示为框图形式的组件,以便不以不必要的细节模糊实施例。在其它情况下,可以在没有不必要的细节的情况下示出众所周知的电路、处理、算法、结构和技术,以避免模糊实施例。
另外,应该注意的是,各个实施例可以被描述为处理,该处理被描绘为流程图(flowchart)、流图(flow diagram)、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序处理,但是许多操作可以并行或并发执行。此外,操作的次序可以被重新布置。当处理的操作完成时,该处理终止,但是可以具有不被包括在图中的附加步骤。处理可以与方法、函数、过程、子例程,子程序等对应。当处理与函数对应时,该处理的终止可以与函数到调用函数或主函数的返回对应。
术语“计算机可读介质”包括但不限于:便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带(一条或多条)指令和/或数据的各种其它介质。计算机可读介质可以包括非瞬态介质,其中可以存储数据并且不包括载波和/或无线地或通过有线连接来传播的瞬态电子信号。非瞬态介质的示例可以包括但不限于:磁盘或磁带、诸如紧凑盘(CD)或数字通用盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以具有存储在其上的代码和/或机器可执行指令,其可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容被耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段(包括存储器共享、消息传递、令牌传递、网络传送等)被传递、转发或传送。
另外,实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在计算机可读或机器可读介质中。(一个或多个)处理器可以执行必要的任务。
数据存储系统
数据存储系统可以包括用于保留数据并且在一些情况下处理数据的任何单独的或组合的存储设备和/或组件。没有数据存储系统,计算设备将被限制某些操作的执行并且将必须立即输出结果。数据存储系统的使用可以允许计算设备执行更广泛的操作、存储和引用所执行的操作的结果(短期或长期)以及存储和执行用于各种目的的专用应用。如在本文中所使用的,“存储设备”可以是用于将数据保留在数据存储系统中的任何组件或组件的组合。
图1是图示根据一些实施例的数据存储系统100的框图。数据存储系统100可以全部或部分地被包括在一个或多个计算设备中,计算设备诸如个人计算机(例如,客户端)或服务器(例如,主机)。数据存储系统100可以包括主存储装置105、辅助存储装置135以及第三且离线存储装置140。虽然被示出和描述为包括这三种不同类型的存储装置,但是可以预期数据存储系统100可以或单独地或组合地实现或多或少的不同类型的存储装置。另外,虽然被示出和描述为包括这些不同类型的存储装置中的每一种中的一个,但是可以预期可以包括不同类型的存储装置中的零个或多于一个。例如,在一些实施例中,可以在辅助存储装置135中包括多于一个存储设备。
主存储装置105可以包括处理器110(或多于一个处理器110)和主存储器130。处理器110可以是或包括例如中央处理单元(CPU)。处理器110可以检索和操纵存储在数据存储系统100中的数据。因此,通常,存储在紧邻处理器110的数据存储系统100中的数据可以被最快地检索和处理,而存储在离处理器110更远的数据存储系统100中的数据可以被较慢地处理。但是,经常地,一些配置可能使得仅有少量数据可用于存储在紧邻处理器110中(并且在一些实施例中,仅临时存储),而较大的存储装置选项通常可能位于离处理器110更远处(并且可以用于永久地存储数据)。
处理器110可以包括其自己的存储器(未示出)。处理器110的存储器可以包括一个或多个处理器寄存器和一个或多个处理器高速缓存。处理器寄存器可以保持小的离散量的数据(例如,8、32或64位)。处理器寄存器可以采用多种形式中的任何一种。例如,处理器寄存器可以包括一个或多个数据寄存器。处理器110可以将数据从数据存储系统100中的较大存储器(例如,主存储器130)加载到数据寄存器中,以对数据执行操作或操纵。然后数据可以被存储回该较大存储装置(例如,主存储器130)。在另一个示例中,处理器寄存器可以包括一个或多个地址寄存器。地址寄存器可以保持可以由执行的指令请求的数据的地址。在又一个示例中,处理器寄存器可以包括一个或多个通用寄存器。通用寄存器可以是可以存储数据和/或地址的组合寄存器。可替代地或附加地被包括在处理器寄存器中的其它类型的寄存器包括浮点寄存器、状态寄存器、常量寄存器、向量寄存器、专用寄存器、特定于机器的寄存器、内部寄存器等。处理器寄存器由于其位于处理器110内部而可能是数据存储系统100中可用的最快类型的存储器,但是可能仅限于少量数据。
处理器110还可以包括一个或多个处理器高速缓存。处理器高速缓存可以包括一个或多个数据高速缓存。数据高速缓存可以存储经常使用的数据。处理器高速缓存可以替代地或附加地包括一个或多个指令高速缓存。指令高速缓存可以存储经常使用的可执行指令。处理器高速缓存可以替代地或附加地包括转换后备缓冲器。转换后备缓冲器可以用于加快可执行指令和数据的虚拟到物理地址转换。虽然处理器高速缓存也位于处理器110内部,但它们可能比处理器寄存器慢。但是,对于少量存储主动或常用的数据或指令,处理器高速缓存可能优于主存储器130,因为处理器高速缓存可以比主存储器130更快地被访问。
处理器110可以通过地址总线115和数据总线120直接或间接耦合到主存储器130。当从主存储器130请求某些数据时,处理器110可以通过地址总线115将存储器地址发送到主存储器130。存储器地址可以指示所请求的数据的位置。然后,处理器110可以通过数据总线120从主存储器130读取数据。处理器110可以替代地或附加地通过数据总线120将数据写入到主存储器130。
主存储器130可以包括例如随机存取存储器(RAM),诸如动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)或任何其它类型的易失性存储装置。如本文所使用的,“易失性”存储装置可以指在未被供电时不保留其内容并且因此在启动时未被初始化的存储设备的特性(例如,临时存储装置)。换句话说,易失性存储装置可能需要恒定的电源以保留存储的数据。虽然主存储器130可以是易失性的,但是由于其紧邻处理器110,因此对存储在其中的数据的访问通常比存储在辅助存储装置135或第三且离线存储装置140中的数据更快。在一些实施例中,主存储装置105也可以包括非易失性存储装置,诸如只读存储器(ROM)。
处理器110可以使用输入/输出通道125来访问辅助存储装置135。辅助存储装置135可以包括例如硬盘驱动器、闪存或任何其它类型的非易失性存储装置。如在本文中所使用的,“非易失性”存储装置可以指在断电时保留其内容并且数据可以临时或永久地存储在其中的存储设备的特性。辅助存储装置135可以具有存储在其上的可以提供存储在辅助存储装置135中的文件和目录的层次结构的一个或多个文件系统,如本文关于图3进一步描述的。在一些实施例中,辅助存储装置135也可以包括易失性存储装置,诸如RAM盘。
在一些实施例中,主存储装置105与辅助存储装置135并置例如在单个计算设备上。但是,可以预期在一些实施例中主存储装置105可以位于远离辅助存储装置135处,例如,在两个或更多个不同的计算设备上。例如,辅助存储装置135可以位于主机处,而主存储装置105可以位于客户端处。客户端可以使用客户端处的主存储装置105的处理器110发出命令以检索和访问存储在主机处的辅助存储装置135上的数据。
第三且离线存储装置140可以包括第三存储装置,诸如用于存储不经常被访问、但是可以使用机器人技术在没有人为干预的情况下被访问的大量数据的可移动大容量存储介质。第三且离线存储装置140可以替代地或附加地包括离线存储装置,诸如在没有人为干预的情况下不能被访问的可移动存储介质,诸如CD-ROM、CD-RW、DVD、软盘、通用串行总线(USB)闪存驱动器等。离线存储装置可以被记录并且物理地与数据存储系统100断开连接。虽然被示出为与辅助存储装置135通信,但是可以预期第三且离线存储装置140可以替代地或附加地与主存储装置105直接通信。
文件系统
数据存储系统的存储设备可以实现一个或多个文件系统以组织存储在其上的数据。如本文所使用的,“文件系统”可以指文件或目录的结构或组织,并且“文件”可以指一组数据。每个文件可以与文件名相关联,文件名允许唯一地识别和定位文件。取决于具体要求和期望的应用,可以使用多种不同的文件系统。图2和图3图示了可以在存储设备上实现的示例性文件系统。
图2是图示根据一些实施例的存储设备210的文件系统215的层的框图。文件系统215可以具有三层:逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230。虽然被示出并描述为具有这三层,但可以预期可以使用更少或更多的层。例如,在一些实施例中,逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230的功能可以被组合到单个层中。在一些实施例中,可以省略虚拟文件系统层225。
逻辑文件系统层220可以与客户端应用205交互以处理对数据的请求。逻辑文件系统层220可以提供用于文件访问和操作(例如,打开、关闭、读取、写入等)的应用编程接口(API)。逻辑文件系统层220可以接收所请求的操作,并且可以将其传递到虚拟文件系统层225以传递到物理文件系统层230。
逻辑文件系统层220可以提供可以由多个文件系统实现来定义的多个物理文件系统的一致视图。可以通过由虚拟文件系统层225实现的物理文件系统层230的抽象来提供这种一致性。抽象可以指定给定实现应该包括、以便执行通过逻辑文件系统层220接收的文件系统请求的一组操作。因此,由虚拟文件系统层225执行的抽象可以向逻辑文件系统层220提供统一的接口。
换句话说,虚拟文件系统层225可以提供对多个不同物理文件系统的支持。虚拟文件系统层225可以允许客户端应用205以统一的方式访问不同类型的文件系统。例如,虚拟文件系统层225可以允许客户端应用205访问本地存储设备和网络存储设备两者上的文件系统、用于不同操作系统(例如,Windows、Mac OS、Unix等)的文件系统、不同类型的文件系统(例如,Unix文件系统(UFS)、网络文件系统(NFS)等)等等。
物理文件系统层230可以处理对文件的所请求的操作(例如,读取、写入等)。物理文件系统层230可以物理地将文件放置在存储设备210上的特定位置中。物理文件系统层230可以与存储设备210的驱动程序交互以物理地操作存储设备210。
图3是图示根据一些实施例的存储或安装在文件系统315中的数据的层次结构的框图。在一些实施例中,数据可以根据图3中所示的层次结构物理地存储在文件系统315中,诸如在Windows操作系统(使用文件系统,诸如,例如,FAT、NTFS、exFAT、Live File System、ReFS文件系统等)中。在一些实施例中,数据可以替代地被物理地存储在单个根目录下。可以通过向操作系统通知某些文件应该出现在层次结构中的哪里来“安装”文件系统315。这些实施例可以在Unix或类Unix操作系统中实现。
文件系统315可以包括一个或多个目录(例如,目录320、330、350)、一个或多个子目录(例如,子目录335)以及一个或多个文件(例如,文件325A-C、340A-B、360)。目录(在本文也可以被称为“文件夹”)可以将文件分组到单独的集合中。例如,目录320可以包括文件325A-C。目录也可以包括子目录。例如,目录330可以包括子目录335,并且子目录335可以包括文件340A-B。也可以在没有任何文件的情况下创建目录(例如,目录350)。文件也可以位于文件系统315中而没有相关联的目录(例如,文件360)。
文件系统315内的文件(例如,文件325A-C、340A-B、360)可以具有相关联的元数据。元数据可以与文件(未示出)分开存储。元数据可以包括例如文件中的数据量、文件时间戳(例如,文件最后被修改的时间、文件被创建时的时间、文件上次备份的时间和/或文件上次被访问的时间)、用户ID、访问许可、文件属性(例如,只读、读取/写入等)等等。
网络设备
数据存储系统可以被实现为可由客户端设备通过网络访问的网络设备。图4是图示根据一些实施例的网络中的主机设备405的框图。主机设备405可以是主机存储设备、主机计算设备(例如,主机服务器)和/或主机数据存储系统。主机设备405可以包括处理器410和存储装置415。处理器410可以类似于图1的处理器110。存储器415可以包括图1的主存储装置105、辅助存储装置135和/或第三且离线存储装置140。存储装置415可以包括文件系统420,其可以类似于图2的文件系统215和/或图3的文件系统315。如本文关于图1所讨论的,可以预期在一些实施例中,主机设备405的处理器410不是必需的,并且客户端设备425、435、445的相应处理器可以用于处理来自主机设备405的对数据的请求。
主机设备405可以通过网络与客户端设备425、435、445通信。主机设备405可以通过任何标准数据连接与客户端设备425、435、445通信,包括但不限于互联网连接。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。客户端设备425、435、445可以利用主机设备405来存储数据、定义规则、设置许可等。主机设备405还可以与一个或多个用户设备(未示出)通信。用户设备可以利用主机设备405来请求和/或使用数据。此外,虽然被示出并描述为与三个客户端设备425、435、445通信,但是可以预期主机设备405可以在该实施例中与任何数量的客户端设备通信。
主机设备405可以出于任何目的存储可以由客户端设备425、435、445请求并传送到客户端设备425、435、445的数据。在这些实施例中,可以从主机设备405请求的数据可以被称为“共享”,即,可以由一个设备使得可用于其它设备的资源。例如,客户端设备425、435、445可以请求应用或服务。在另一个示例中,主机设备405可以执行一个或多个文件、文件系统和/或数据库到客户端设备425、435、445中的一个或多个的迁移。
数据管理接口
通常,到存储设备的管理接口可以维护用于管理该存储设备的特定信息或数据(即,管理数据)。例如,管理接口可以维护可以访问该存储设备的所有用户(例如,图4的客户端设备425、435、445)的列表,包括能够在存储设备上存储数据的用户、能够从存储设备读取数据的用户、具有管理权限以配置存储设备的用户的首选项和可访问性的用户等等。
为了获得该信息,系统管理员可以通过计算设备(诸如台式计算机或终端计算机)访问管理接口。通过计算设备,系统管理员可以向管理接口提供命令以管理或配置存储设备。通过管理接口可用的一个这样的管理特征可以是系统信息的列表。例如,系统管理员可以利用管理接口来请求存储设备的所有用户的列表。作为响应,管理接口可以编译存储设备的用户列表并将该列表返回给系统管理员。如果请求其它信息,则可由系统管理员将附加请求输入到计算设备中。通常,存储在与用户相关联的子节点或孙节点(或其它类型的节点项)中的信息可以通过由系统管理员提供的若干命令和若干次返回到计算设备的信息来访问。
实现管理接口的一个示例性存储设备是Z文件系统存储设备(ZFSSA)。除了一个或多个交互式管理接口之外,ZFSSA还可以具有鲁棒的脚本引擎和表述性状态转移应用编程接口(RESTful API)。通常,脚本引擎可以用于编写脚本来管理ZFSSA。RESTful API是可以用于通过网络在计算设备之间提供互操作性的编程接口。RESTful API可以允许计算设备使用统一且预定义的无状态操作来访问和操纵存储设备上的数据。在RESTful API中,可以根据定义的格式接收请求并生成响应,格式诸如超文本传输协议(HTTP)。在HTTP中,可用的操作可以包括用于检索数据的GET、用于创建数据的POST、用于改变数据的状态或用于更新数据的PUT、用于移除数据的DELETE等。通过将事务分解成由预定操作定义的一系列小事务,RESTful API可以实现高效的性能、增强的可靠性、简单性和可伸缩性。
脚本引擎和RESTful API两者都可以以各种形式提供关于ZFSSA的数据。其中一种形式的数据是如上所述的列表,诸如存储设备上的用户的列表。常规上,脚本引擎仅提供列表项的名称。RESTful API提供列表项的名称以及列表项的属性。但是,要获取有关这些列表项的任何进一步信息,系统管理员必须输入每个项的上下文,然后请求附加数据,诸如这些列表项的子项。如上所述,这可能导致系统管理员发出多个命令,因为RESTful API仅允许离散数量的预定义操作。例如,要获得有关用户和用户的许可两者的信息,系统管理员可能必须对表示用户的父节点发出第一GET命令,并对表示该用户的许可的子节点发出第二GET命令。
此外,脚本引擎和RESTful API没有过滤能力。例如,管理接口通常无法返回具有管理员权限的所有用户的列表。因此,要获得此信息,系统管理员必须使用第三方工具或编写自己的过滤应用。虽然关于ZFSSA进行了描述,但是可以预期许多其它类型的存储设备可能面临类似的限制。
用于列表检索的系统
在一些实施例中,提供了用于存储设备中的列表检索的系统,该系统显著减少了检索数据所需的命令的数量。数据可以存储在节点结构中,其中一些数据存储在依赖于父节点或以其它方式与父节点相关的节点中。例如,父节点可以包括该用户的标识符,诸如用户名、登录名等。基于该父节点的子节点可以包括存储设备的该特定用户的属性(例如,许可)、该用户的访问异常、用户的首选项等。另外,孙节点可以依赖于还具有关于用户的其它类型信息的子节点,从而创建关于特定用户的存储信息的层次树结构。
根据一些实施例,可以发出单个命令或请求以接收存储在父节点、子节点和/或孙节点处的数据。例如,可以发出包括节点和深度级别(例如,子级、孙级、曾孙级等)和/或过滤标准的数据请求。利用该信息,所请求的信息可以被获得到特定级别,同时过滤掉未包括在该请求中的信息。例如,当请求对应于与父节点相关联的子节点时,不需要附加的请求来从子节点和父节点两者获得信息。因此,减少了提供某些存储的管理信息所需的时间长度。
图5是图示根据一些实施例的用于存储设备中的列表检索的系统500的框图。系统500可以包括客户端设备505、网络510、计算设备515和存储设备550。存储设备550可以包括文件系统555。客户端设备505可以由例如系统管理员或其它用户操作。虽然被示出为包括单个客户端设备505,但是可以预期任何数量的客户端设备可以访问计算设备515和/或存储设备550,并且可以执行客户端设备505的功能。另外,虽然被示出为与计算设备515分离,但是可以预期,在一些实施例中,存储设备550可以被集成到计算设备515中。
计算设备515可以向存储设备550提供接口以供客户端设备505使用,使得客户端设备505可以向存储设备550发出命令。存储设备550上维护的一些或全部数据可以经由一个或多个脚本或协议(诸如在计算设备515上实现的应用编程接口(API))与客户端设备505共享。换句话说,计算设备515可以是API的客户端。API是允许用户(例如,客户端设备505的用户)访问数据(例如,存储设备550上的数据)的接口。例如,用户可以与网页交互。交互可以包括与web服务器的请求和响应通信。响应于特定类型的交互,web服务器可以生成并传送被发送到数据管理服务器(例如,计算设备515)的API请求。API可以由数据管理服务器实现。数据管理服务器可以接收API请求、响应于API请求而检索数据,并将其返回(例如,以JavaScript对象表示法(JSON)格式)。RESTful API是一种符合REST体系架构的API。
在图5中,存储设备550可以存储与存储设备相关的数据,诸如与存储设备550的管理相关的数据。在一些实施例中,数据可以存储在列表中。数据可以存储在层次结构中的多个级别上的多个节点处。换句话说,多个级别中的至少一些级别可以是多个级别中的一个或多个其它级别的子级别。多个节点中的每个节点可以存储与存储设备相关的数据的一部分。因此,与存储设备相关的数据可以存储在层次树结构中,如关于图7所示和进一步描述的。
计算设备515可以通过网络510从客户端设备505接收数据请求。可以根据任何协议或脚本接收数据请求。在一些实施例中,根据除RESTful API以外的协议接收数据请求。数据请求可以识别多个节点中的第一节点。例如,数据请求可以是“http://www.website.com/users”,并且节点可以是“users”(“用户”)。节点可以是目录、子目录、文件夹、文件、元数据或其它数据对象。在一些实施例中,每个节点可以包括一个或多个其它节点,诸如包含子目录的目录,以及包含文件的子目录。在上面的示例中,父节点可以对应于目录www.website.com,并且子节点可以对应于子目录“users”。孙节点可以是与子目录“users”中的特定用户(例如“user1”、“user2”、“user3”等)对应的文件夹。曾孙节点可以是与特定用户对应的属性,例如“首选项”“异常”等。如本文所使用的,“父节点”可以指代包括任何级别处的另一个节点的任何节点,例如,父节点、祖父节点、曾祖父节点等。“子节点”可以指代被包括在任何级别处的另一个节点内的任何节点,例如,子节点、孙节点、曾孙节点等。
数据请求可以包括或以其它方式与对应于层次级别中的级别的深度级别相关联。深度级别可以指示为该节点及其子节点请求的数据的量和细节。在上面的示例中,深度级别“0”可以列出“users”节点中的项目,例如“user1”、“user2”、“user3”等。深度级别“1”可以列出与所列出的每个项目对应的任何属性,例如,“user1”的“首选项”、“user2”的“首选项”和“异常”、“user3”的“异常”等。虽然关于两个深度级别进行了描述,但是可以预期的是,可以实现任何数量的深度级别以表示任何深度的层次数据。
计算设备515可以识别与深度级别对应的附加节点,诸如,如果指定深度级别“1”则为子节点,如果指定深度级别“2”则为孙节点,如果指定深度级别“3”则为曾孙节点等。在上面的示例中,如果指定深度级别“0”,则计算设备515可以识别与“用户”对应的节点。如果指定深度级别“1”,则计算设备515还可以识别与“user1”、“user2”、“user3”等对应的节点。
计算设备515可以生成针对存储在第一节点处的数据的子集的命令。计算设备515还可以生成针对存储在一个或多个附加的识别出的节点处的数据的一个或多个附加子集的一个或多个附加命令。该命令和所述一个或多个附加命令可以是数据请求命令,诸如READ命令、GET命令等。计算设备515可以将该命令和所述一个或多个附加命令发出到API,诸如RESTful API。如上所述,因为RESTful API实现离散数量的简单命令,因此从客户端设备505接收到的数据请求可能无法直接被传递到RESTful API以便接收与对应于深度级别的所述一个或多个附加节点和第一节点的所有对应的数据。
在一些实施例中,客户端设备505的请求可以被传递到计算设备515,计算设备515可以将请求分解成与RESTful API通信所需的多个命令。一旦接收到对该命令的响应和对所述一个或多个附加命令的一个或多个附加响应,RESTful API就可以从第一节点接收数据的子集,并且从所述一个或多个附加节点(例如,子节点)接收数据的一个或多个附加子集。然后,RESTful API可以将数据的子集和数据的一个或多个附加子集返回到计算设备515,其中数据的每个子集响应于每个命令在单独的通信中被返回。在一些实施例中,数据的每个子集可以结合其关联节点的标识被返回,使得数据的子集对应的节点是清楚的。在一些实施例中,在可以发出下一个命令之前,数据的子集必须响应于特定命令被返回,使得节点对于特定接收到的数据的子集是已知的。
在以上示例中,可以针对“users”处的数据生成第一命令,其可以返回例如被授权访问存储设备550的用户名列表。对于RESTful API,第一命令可以是“GET http://www.website.com/users"。如果指示的深度级别为“1”,则可以针对与用户名列表中的用户名相关联的节点处的数据生成第二命令,该第二命令可以返回例如与每个用户相关联的属性列表。对于RESTful API,第二命令可以是“GET http://www.website.com/users/user1”。可以针对与用户名列表中的其它用户名相关联的节点处的数据生成第三和后续命令,例如,“GET http://www.website.com/users/user2”、“GET http://www.website.com/users/user3”等。
计算设备515可以将数据的子集与数据的一个或多个附加子集合并以形成对数据请求的响应。例如,计算设备515可以以层次树结构来组织数据的子集,该层次树结构指示数据的子集之间的关系。计算设备515可以通过网络510将对数据请求的响应传送到客户端设备505。
图6是图示根据一些实施例的用于列表检索的计算设备615的框图。例如,计算设备615可以用于实现图5的计算设备515。计算设备615可以包括处理器620和存储设备625。例如,存储设备625可以用于实现图5的存储设备550。虽然被示出和描述为在计算设备615内部,但是可以预期存储设备625可以替代地定位在计算设备615的外部,如关于图5的情况。
存储设备625可以包括与处理器620可操作通信的用户接口630。在一些实施例中,用户接口630与客户端设备(例如,图5的客户端设备505)接口,以便接收命令并发出响应,如本文进一步描述的。在一些实施例中,用户接口630还可以被配置为直接与用户接口,例如,以经由直接耦合到计算设备615的输入机制来接收命令。用户接口630可以根据任何协议或脚本与用户通信。在一些实施例中,用户接口630根据与RESTful API不同的协议从用户接收命令。
存储设备625还可以包括与处理器620和/或用户接口630可操作通信的数据管理引擎635。数据管理引擎635可以包括命令生成引擎636、过滤引擎637和合并引擎638。命令生成引擎636可以被配置为经由用户接口630接收数据请求,识别第一节点和与节点的一个或多个级别对应的深度级别或节点的子节点。命令生成引擎636可以被配置为识别与深度级别对应的一个或多个附加节点。命令生成引擎636还可以被配置为生成针对存储在第一节点处的数据的子集的命令以及针对存储在一个或多个附加节点(例如,深度级别大于“0”的子节点)处的数据的一个或多个附加子集的一个或多个附加命令。该命令和一个或多个附加命令可以是例如数据访问命令,诸如与RESTful API 640相关联的GET命令。命令生成引擎636可以向RESTful API 640发出命令和一个或多个附加命令。
RESTful API 640可以从数据管理引擎635接收命令和一个或多个附加命令。RESTful API 640可以使用这些命令来从第一节点和一个或多个附加节点接收相应的数据650。然后,RESTful API 640可以将数据650传递到数据管理引擎635。虽然在图6中关于RESTful API 640被示出和描述,但是可以预期可以关于其它API架构和命令执行类似的功能。
在一些实施例中,经由用户接口630接收的数据请求可以包括过滤标准,诸如一个或多个数据要求。在这样的实施例中,数据管理引擎635可以实现过滤引擎637;但是,在其它实施例中,可以省略过滤引擎637。过滤引擎637可以被配置为从RESTful API 640接收数据650,并且通过仅包括符合一个或多个数据要求的数据650将过滤标准应用于数据650。例如,数据650可以包括被授权访问存储设备625的用户列表和每个用户的许可列表。过滤标准可以仅指定对存储设备625具有WRITE许可的用户。因此,过滤引擎637可以仅提取被授权访问存储设备625的用户列表中具有WRITE许可的用户及其对应的许可。然后,过滤引擎637可以将过滤后的数据传递给合并引擎638。
数据管理引擎635的合并引擎638可以接收所请求的数据(例如,来自过滤引擎637的过滤数据或来自RESTful API 640的数据650)。合并引擎638可以合并所请求的数据以形成对数据请求的响应。例如,合并引擎638可以以层次树结构来组织数据650,该层次树结构指示数据650的子集之间的关系。合并引擎638可以被配置为与用户接口630通信以将对数据请求的响应传送到请求者(例如,客户端设备)。
虽然由过滤引擎637执行的过滤功能被描述为在合并之前发生,但是可以预期该功能可以替代地在数据650已经由合并引擎638合并之后执行。在这样的实施例中,过滤引擎637可以在合并引擎638形成对数据请求的响应之后过滤对数据请求的响应。然后,过滤引擎637可以将对数据请求的响应传送给请求者(例如,客户端设备)。
如上所述,数据可以存储在特定节点和级别的存储设备上。图7是图示根据一些实施例的文件系统700中的节点和级别的框图。例如,文件系统700可以被实现为图5的存储设备550的文件系统555。
如图7所示,文件系统700在四个级别上具有十三个节点(一个节点对应于每个目录、子目录、文件和属性)。第一级别包括目录705。目录705可以是例如“www.users.com”。第二级别包括子目录710、子目录720和文件730,并且是第一级别的子级别。因此,目录705是子目录710、子目录720和文件730的父节点。第三级别包括文件712、文件714、文件722和属性731A,并且是第二级别的子级别。第四级别包括属性713A、属性715A、属性715B、属性723A和属性723B,并且是第三级别的子级别。
子目录710是文件712和文件714的父节点。因此,目录705是文件712和文件714的祖父节点。子目录710可以对应于例如目录705中名为“username1”的文件夹。文件712可以对应于例如“首选项”,并且文件714可以对应于例如“许可”。文件712可以是属性713A的父节点。属性713A可以包括例如与username1相关联的会话超时首选项。文件714可以是属性715A和属性715B的父节点。属性715A可以指示例如username1对目录705具有READ许可,并且属性715B可以指示例如username1对目录705具有WRITE许可。
子目录720是文件722的父节点。因此,目录705是文件722的祖父节点。子目录720可以对应于例如目录705中名为“username2”的文件夹。文件722可以对应于例如“首选项”。文件722可以是属性723A和属性723B的父节点。属性723A可以指示例如username2的登录屏幕首选项,并且属性723B可以指示例如username2的会话超时首选项。
文件730是属性731A的父节点。因此,目录705是属性731A的祖父节点。文件730可以对应于例如目录705中名为“administrator”(“管理员”)的文件。例如,属性731A可以对应于系统管理员首选项。
作为示例,数据请求可以由计算设备接收,该计算设备识别对应于目录705和深度级别为“3”的第一节点。深度级别可以指示应该识别目录705的子级别的深度。例如,深度级别“0”可以指示不应该识别子级别,并且应该仅从与目录705相关联的节点检索数据。深度级别“1”可以指示应该从与目录705相关联的节点和目录705的直接子节点(即子目录710、子目录720和文件730)两者中检索数据。深度级别“2”可以指示应该从与目录705相关联的节点、目录705的直接子节点以及目录705的孙节点(即文件712、文件714、文件722和属性731A)检索数据。深度级别“3”可以指示应该从与目录705相关联的节点、目录705的直接子节点、目录705的孙节点以及目录705的曾孙节点(即属性713A、属性715A、属性715B、属性723A以及属性723B)检索数据。
在深度级别为“3”的上述示例中,计算设备可以识别子节点、孙节点和曾孙节点(例如,子目录710、文件712、属性713A、文件714、属性715A、属性715B、子目录720、文件722、属性723A、属性723B、文件730和属性731A)。然后,计算设备可以针对由数据请求识别出的每个节点、子节点、孙节点和曾孙节点生成单独的命令。一旦接收到数据,计算设备就可以根据层次树结构合并数据以形成对数据请求的响应。层次树结构可以指示图7中所示的层次结构。
因此,根据本发明的实施例,可以经由来自用户的单个数据请求来检索与文件系统700对应的所有数据。这可以通过接收所识别出的节点和深度级别、遍历文件系统以识别与深度级别对应的附加节点(例如,子节点)并且自动生成针对识别出的节点和每个附加节点处的数据的单独命令来完成。
图8A-图8C图示了常规上被进行的多个单独数据请求的结果。这些多个单独的数据请求(包括未示出的其它数据请求)必须按常规地进行以检索相对于图7从单个数据请求中接收到的相同数据。图8A图示了响应于对与目录705对应的节点的第一数据请求而返回的数据800A。如图所示,可以返回目录705内的项目列表(即子目录710、子目录720和文件730)。
为了检索关于子目录710的进一步数据,必须常规地发出第二数据请求。图8B图示了响应于对与子目录710对应的节点的第二数据请求而返回的数据800B。如图所示,可以返回子目录710内的项目列表(即文件712和文件714)。
为了检索关于文件714的进一步数据,必须常规地发出第三数据请求。图8C图示了响应于对与文件714对应的节点的第三数据请求而返回的数据800C。如图所示,可以返回文件714内的项目列表(即属性715A和属性715B)。
因此,请求用户将能够仅通过三个单独的数据请求获得关于目录705、子目录710、文件714、属性715A和属性715B的数据。为了接收图7的文件系统700中所示的所有数据,用户将不得不进行四个附加数据请求(未示出):对文件712的数据请求(其将返回文件712和属性713A)、对子目录720的数据请求(其将返回子目录720和文件722)、对文件722的数据请求(其将返回文件722、属性723A和属性723B)以及对文件730的数据请求(其将返回文件730和属性731A)。
换句话说,根据常规的系统和方法,用户需要进行最少七个数据请求来获得图7中所示的所有数据。本发明的实施例允许用户通过使用深度级别发出单个数据请求来获得图7中所示的所有数据。
用于列表检索的方法
上述系统可以实现各种方法来执行它们的功能。图9是图示根据一些实施例的用于存储设备中的列表检索的方法的流程图。例如,可以通过图5的计算设备515和/或图6的计算设备615来实现图9的方法。
在步骤905处,存储设备存储与存储设备相关的数据。存储设备可以与计算设备相关联。数据可以存储在多个节点处。多个节点可以包括一个或多个级别的层次结构。多个节点中的每个节点可以存储数据的一部分。在一些实施例中,与存储设备相关的数据包括存储设备的管理数据。管理数据可以包括例如可以由系统管理员或其它用户访问或控制的存储设备的特征、特性、规范和/或配置。
在步骤910处,可以接收数据请求。数据请求可以识别多个节点中的第一节点。例如,数据请求可以是“http://www.example.com/user6”,并且第一节点可以是“user6”。user6可以是例如user0到user141的多个节点中的一个节点。在一些实施例中,数据请求可以包括过滤标准,例如,仅是具有WRITE许可的用户。例如,可以从远程计算设备或存储设备的接口中的至少一个接收数据请求。可以通过网络接收数据请求。在一些实施例中,可以经由网站和/或使用响应于用户输入的API来接收数据请求。在一些实施例中,数据请求可以被确认为来自授权设备和/或用户,即具有访问所请求的节点的适当许可的实体。
数据请求还可以识别与层次结构中的一个或多个级别之一对应的深度级别。深度级别可以指示低于应该被识别的第一节点的级别的子级别的深度。例如,深度级别“0”可以指示仅应该检索与第一节点相关的数据。深度级别“1”可以指示除了与第一节点相关的数据之外还应该检索与第一节点的子节点相关的数据。深度级别“2”可以指示应该检索与第一节点的孙节点相关的数据、与第一节点的子节点相关的数据以及与第一节点相关的数据等等。
在步骤915处,可以识别与深度级别对应的多个节点中的一个或多个附加节点。附加节点可以存在于由深度级别所包含的级别上,例如,深度级别为“1”的子节点,深度级别为“2”的孙节点和子节点,深度级别为“3”的曾孙节点、孙节点和子节点等,依此类推。在上面的示例中,对于深度级别“1”,附加节点“首选项”、“异常”和“许可”可以被识别为“user6”的子节点。
在步骤920处,生成针对存储在第一节点处的数据的子集的命令。在步骤925处,生成针对存储在一个或多个附加节点处的数据的一个或多个附加子集的一个或多个附加命令。该命令和一个或多个附加命令可以是指定与相关节点(即父节点和子节点)对应的数据的不同子集的相同命令(例如,READ、GET等)。该命令和一个或多个附加命令可以是与RESTful API相关联的GET命令。在上面的深度值为“1”的示例中,第一命令将是“GEThttp://www.example.com/user6”,并且附加命令将是“GET http://www.example.com/user6/preferences”、“GET http://www.example.com/user6/exceptions”和“GEThttp://www.example.com/user6/permissions”。
在步骤930处,向RESTful API发出命令。在步骤935处,从RESTful API接收对命令的第一响应。第一响应可以包括来自第一节点的数据的子集。在上面的示例中,响应于“GEThttp://www.example.com/user6”,RESTful API可以用“user6”下面给出的以下节点列表进行响应:“首选项、异常、许可”。
在步骤940处,向RESTful API发出一个或多个附加命令。在步骤945处,从RESTfulAPI接收对一个或多个附加命令的一个或多个附加响应。一个或多个附加响应可以包括来自一个或多个附加节点的数据的一个或多个附加子集。在上面的示例中,响应于“GEThttp://www.example.com/user6/preferences”,RESTful API可以用“首选项”下面给出的以下属性列表进行响应:“advanced_analytics:false,session_timeout:15,login_screen:'status/dashboard',locale:'C'”。RESTful API还可以相应地响应与“异常”和“许可”相关联的命令。
在步骤950处,可以合并数据的子集和数据的一个或多个附加子集以形成对数据请求的响应。例如,数据的子集和数据的一个或多个附加子集可以以层次树结构来组织,该层次树结构指示数据的子集之间的关系。对数据请求的响应可以包括至少一个列表。在上面的示例中,可以在“user6”下提供“首选项、异常、许可”的列表,可以在“首选项”下提供与“首选项”相关联的属性列表,可以在“异常”下提供与“异常”相关联的属性列表,并且可以在“许可”下提供与“许可”相关联的属性列表。
在步骤955处,可以传送对数据请求的响应。在由数据请求指定过滤标准的实施例中,可以在传送对数据请求的响应之前过滤该响应。例如,响应可以包括被授权访问存储设备的用户列表和每个用户的许可列表。过滤标准可以仅指定对存储设备具有WRITE许可的用户。因此,可以仅提取和传送被授权访问存储设备的用户列表中具有WRITE许可的用户及其相应的许可。虽然被描述为在数据被合并之后发生过滤标准,但是可以预期过滤标准可以替代地在数据的第一子集和数据的第二子集被合并之前应用于它们。
如所指出的,计算机可读介质可以包括瞬态介质,诸如无线广播或有线网络传输,或存储介质(即非瞬态存储介质),诸如硬盘、闪存驱动器、紧凑盘、数字视频盘、蓝光盘或其它计算机可读介质。在各种示例中,计算机可读介质可以被理解为包括各种形式的一种或多种计算机可读介质。
在前面的描述中,参考本申请的具体实施例描述了本申请的各方面,但是本领域技术人员将认识到本发明不限于此。因此,虽然本文已经详细描述了本申请的说明性实施例,但是应该理解的是,可以以其它方式不同地实施和采用本发明构思,并且除了受现有技术的限制之外,所附权利要求旨在被解释为包括这样的变型。上述发明的各种特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛的精神和范围的情况下,可以在除了本文描述的那些环境和应用之外的任何数量的环境和应用中利用实施例。因此,说明书和附图应被视为说明性的而非限制性的。出于说明的目的,以特定顺序描述了方法。应该认识到的是,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。
在将组件描述为执行或“被配置为”执行某些操作的情况下,这种配置可以例如通过设计电子电路或其它硬件来执行操作、通过编程可编程电子电路(例如,微处理器或其它合适的电子电路)来执行操作或其任何组合来实现。
结合本文所公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地图示硬件和软件的这种可互换性,上面已经在其功能方面对各种说明性的组件、块、模块、电路和步骤进行了一般性描述。这样的功能被实现为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决策不应被解释为导致脱离本发明的范围。
本文描述的技术还可以用电子硬件、计算机软件、固件或其任何组合来实现。这些技术可以在各种设备中的任何设备中实现,诸如通用计算机、无线通信设备手持终端,或具有包括在无线通信设备手持终端和其它设备中的应用的多种用途的集成电路设备。描述为模块或组件的任何特征可以在集成逻辑设备中一起实现,或者作为离散但可互操作的逻辑设备单独实现。如果用软件实现,则本技术可以至少部分地由包括程序代码的计算机可读数据存储介质实现,所述程序代码包括在被执行时执行上述方法中的一个或多个方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM)、诸如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、FLASH存储器、磁或光数据存储介质等。附加地或替代地,本技术可以至少部分地由计算机可读通信介质实现,该计算机可读通信介质以指令或数据结构的形式携带或传送程序代码,并且可以由计算机访问、读取和/或执行,诸如传播的信号或波。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路系统。这样的处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP内核结合的一个或多个微处理器,或任何其它这样的配置。因此,如本文中所使用的术语“处理器”可以指任何前述结构、前述结构的任何组合、或适合于实现本文描述的技术的任何其它结构或装置。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用软件模块或硬件模块内提供,或者被并入到组合的视频编码器-解码器(CODEC)中。
Claims (20)
1.一种方法,包括:
由与计算设备相关联的存储设备存储与存储设备相关的数据,所述数据存储在多个节点处,其中所述多个节点包括一个或多个级别的层次结构,并且其中所述多个节点中的每个节点存储所述数据的一部分;
在计算设备处接收数据请求,其中所述数据请求识别所述多个节点中的第一节点和深度级别,并且其中所述深度级别对应于所述一个或多个级别中的一个级别;
由计算设备识别与所述深度级别对应的所述多个节点中的一个或多个附加节点;
由计算设备生成针对存储在第一节点处的所述数据的子集的命令;
由计算设备生成针对存储在所述一个或多个附加节点处的所述数据的一个或多个附加子集的一个或多个附加命令,其中所述命令和所述一个或多个附加命令是与表述性状态转移应用编程接口RESTful API相关联的get命令;
由计算设备向RESTfulAPI发出所述命令;
由计算设备从RESTful API接收对所述命令的第一响应,第一响应包括来自第一节点的所述数据的所述子集;
由计算设备向RESTfulAPI发出所述一个或多个附加命令;
由计算设备从RESTful API接收对所述一个或多个附加命令的一个或多个附加响应,所述一个或多个附加响应包括来自所述一个或多个附加节点的所述数据的所述一个或多个附加子集;
由计算设备响应于所述数据请求而合并所述数据的所述子集和所述数据的所述一个或多个附加子集;以及
由计算设备传送对所述数据请求的响应。
2.如权利要求1所述的方法,其中所述一个或多个级别包括子级别,并且其中所述深度级别对应于所述子级别。
3.如权利要求1所述的方法,其中所述数据请求与除RESTful API之外的协议相关联。
4.如权利要求1所述的方法,其中所述一个或多个附加命令每个由计算设备单独发出到RESTfulAPI。
5.如权利要求1所述的方法,其中所述一个或多个附加响应每个由计算设备从RESTfulAPI单独接收。
6.如权利要求1所述的方法,其中所述数据请求包括过滤标准,并且其中所述过滤标准包括对所述数据的所述子集或所述数据的所述一个或多个附加子集中的所述数据的附加子集中的至少一个的要求。
7.如权利要求6所述的方法,还包括:
在将响应传送到所述数据请求之前,根据所述要求过滤所述数据的所述子集或所述数据的所述附加子集中的至少一个。
8.一种设备,包括:
一个或多个处理器;以及
包含指令的非瞬态计算机可读介质,当所述指令由所述一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:
由与所述设备相关联的存储设备存储与存储设备相关的数据,所述数据存储在多个节点处,其中所述多个节点包括一个或多个级别的层次结构,并且其中所述多个节点中的每个节点存储所述数据的一部分;
接收数据请求,其中所述数据请求识别所述多个节点中的第一节点和深度级别,并且其中所述深度级别对应于所述一个或多个级别中的一个级别;
识别与所述深度级别对应的所述多个节点中的一个或多个附加节点;
生成针对存储在第一节点处的所述数据的子集的命令;
生成针对存储在所述一个或多个附加节点处的所述数据的一个或多个附加子集的一个或多个附加命令,其中第一命令和所述一个或多个附加命令是与表述性状态转移应用编程接口RESTful API相关联的get命令;
向RESTfulAPI发出所述命令;
从RESTful API接收对所述命令的第一响应,第一响应包括来自第一节点的所述数据的所述子集;
向RESTfulAPI发出所述一个或多个附加命令;
从RESTful API接收对所述一个或多个附加命令的一个或多个附加响应,所述一个或多个附加响应包括来自所述一个或多个附加节点的所述数据的所述一个或多个附加子集;
响应于所述数据请求而合并所述数据的所述子集和所述数据的所述一个或多个附加子集;以及
传送对所述数据请求的响应。
9.如权利要求8所述的装置,其中所述一个或多个级别包括子级别,并且其中所述深度级别对应于所述子级别。
10.如权利要求8所述的设备,其中所述数据请求与除RESTful API之外的协议相关联。
11.如权利要求8所述的设备,其中所述一个或多个附加命令每个被单独发出到RESTfulAPI。
12.如权利要求8所述的设备,其中所述一个或多个附加响应每个从RESTfulAPI被单独接收。
13.如权利要求8所述的设备,其中所述数据请求包括过滤标准,并且其中所述过滤标准包括对所述数据的所述子集或所述数据的所述一个或多个附加子集中的所述数据的附加子集中的至少一个的要求。
14.如权利要求13所述的设备,其中所述操作还包括:
在将响应传送到所述数据请求之前,根据所述要求过滤所述数据的所述子集或所述数据的所述附加子集中的至少一个。
15.一种有形地实施在设备的非瞬态机器可读存储介质中的计算机程序产品,包括指令,当所述指令由一个或多个处理器执行时使得所述一个或多个处理器:
存储与存储设备相关的数据,所述数据存储在多个节点处,其中所述多个节点包括一个或多个级别的层次结构,并且其中所述多个节点中的每个节点存储所述数据的一部分;
接收数据请求,其中所述数据请求识别所述多个节点中的第一节点和深度级别,并且其中所述深度级别对应于所述一个或多个级别中的一个级别;
识别与所述深度级别对应的所述多个节点中的一个或多个附加节点;
生成针对存储在第一节点处的所述数据的子集的命令;
生成针对存储在所述一个或多个附加节点处的所述数据的一个或多个附加子集的一个或多个附加命令,其中所述命令和所述一个或多个附加命令是与表述性状态转移应用编程接口RESTful API相关联的get命令;
向RESTfulAPI发出所述命令;
从RESTful API接收对所述命令的第一响应,第一响应包括来自第一节点的所述数据的所述子集;
向RESTfulAPI发出所述一个或多个附加命令;
从RESTful API接收对所述一个或多个附加命令的一个或多个附加响应,所述一个或多个附加响应包括来自所述一个或多个附加节点的所述数据的所述一个或多个附加子集;
响应于所述数据请求而合并所述数据的所述子集和所述数据的所述一个或多个附加子集;以及
传送对所述数据请求的响应。
16.如权利要求15所述的计算机程序产品,其中所述一个或多个级别包括子级别,并且其中所述深度级别对应于所述子级别。
17.如权利要求15所述的计算机程序产品,其中所述一个或多个附加命令每个被单独发出到RESTfulAPI。
18.如权利要求15所述的计算机程序产品,其中所述一个或多个附加响应每个从RESTfulAPI被单独接收。
19.如权利要求15所述的计算机程序产品,其中所述数据请求包括过滤标准,并且其中所述过滤标准包括对所述数据的所述子集或所述数据的所述一个或多个附加子集中的所述数据的附加子集中的至少一个的要求。
20.如权利要求19所述的计算机程序产品,其中所述指令还使所述一个或多个处理器:
在将响应传送到所述数据请求之前,根据所述要求过滤所述数据的所述子集或所述数据的所述附加子集中的至少一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/380,184 US9996301B1 (en) | 2016-12-15 | 2016-12-15 | Systems and methods for list retrieval in a storage device |
US15/380,184 | 2016-12-15 | ||
PCT/US2017/065610 WO2018111770A1 (en) | 2016-12-15 | 2017-12-11 | Systems and methods for list retrieval in a storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109983431A true CN109983431A (zh) | 2019-07-05 |
CN109983431B CN109983431B (zh) | 2023-05-23 |
Family
ID=60915641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780071925.7A Active CN109983431B (zh) | 2016-12-15 | 2017-12-11 | 用于存储设备中的列表检索的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9996301B1 (zh) |
EP (2) | EP3555771B1 (zh) |
CN (1) | CN109983431B (zh) |
WO (1) | WO2018111770A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210173814A1 (en) * | 2019-12-06 | 2021-06-10 | EMC IP Holding Company LLC | Methods, electronic devices and computer program products for accessing data |
CN113448929A (zh) * | 2021-07-19 | 2021-09-28 | 上海商汤科技开发有限公司 | 数据存储方法及装置、设备、存储介质 |
CN113536075A (zh) * | 2021-07-20 | 2021-10-22 | 锐掣(杭州)科技有限公司 | 数据提取方法、装置及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929759B2 (en) | 2017-04-06 | 2021-02-23 | AIBrain Corporation | Intelligent robot software platform |
US10810371B2 (en) * | 2017-04-06 | 2020-10-20 | AIBrain Corporation | Adaptive, interactive, and cognitive reasoner of an autonomous robotic system |
US10963493B1 (en) | 2017-04-06 | 2021-03-30 | AIBrain Corporation | Interactive game with robot system |
US10839017B2 (en) | 2017-04-06 | 2020-11-17 | AIBrain Corporation | Adaptive, interactive, and cognitive reasoner of an autonomous robotic system utilizing an advanced memory graph structure |
US11151992B2 (en) | 2017-04-06 | 2021-10-19 | AIBrain Corporation | Context aware interactive robot |
CN111818305B (zh) * | 2020-07-09 | 2021-12-10 | 杭州海康威视数字技术股份有限公司 | 一种分布式系统、业务控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080306910A1 (en) * | 2007-06-08 | 2008-12-11 | Hardeep Singh | Method and process for end users to query hierarchical data |
US20140025711A1 (en) * | 2012-07-23 | 2014-01-23 | Red Hat, Inc. | Unified file and object data storage |
CN103858090A (zh) * | 2011-10-06 | 2014-06-11 | 马维尔国际贸易有限公司 | 用于合并用于访问存储装置的命令的具有最大命令队列长度的装置及其方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002953555A0 (en) | 2002-12-23 | 2003-01-16 | Canon Kabushiki Kaisha | Method for presenting hierarchical data |
US8572033B2 (en) * | 2008-03-20 | 2013-10-29 | Microsoft Corporation | Computing environment configuration |
US8370279B1 (en) * | 2011-09-29 | 2013-02-05 | Google Inc. | Normalization of predictive model scores |
EP2981892B1 (en) * | 2013-04-01 | 2020-05-06 | OC Acquisition LLC | Update management for a distributed computing system |
-
2016
- 2016-12-15 US US15/380,184 patent/US9996301B1/en active Active
-
2017
- 2017-12-11 CN CN201780071925.7A patent/CN109983431B/zh active Active
- 2017-12-11 WO PCT/US2017/065610 patent/WO2018111770A1/en unknown
- 2017-12-11 EP EP17823295.5A patent/EP3555771B1/en active Active
- 2017-12-11 EP EP22204259.0A patent/EP4145299A1/en active Pending
-
2018
- 2018-05-07 US US15/972,450 patent/US10338852B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080306910A1 (en) * | 2007-06-08 | 2008-12-11 | Hardeep Singh | Method and process for end users to query hierarchical data |
CN103858090A (zh) * | 2011-10-06 | 2014-06-11 | 马维尔国际贸易有限公司 | 用于合并用于访问存储装置的命令的具有最大命令队列长度的装置及其方法 |
US20140025711A1 (en) * | 2012-07-23 | 2014-01-23 | Red Hat, Inc. | Unified file and object data storage |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210173814A1 (en) * | 2019-12-06 | 2021-06-10 | EMC IP Holding Company LLC | Methods, electronic devices and computer program products for accessing data |
US11681652B2 (en) * | 2019-12-06 | 2023-06-20 | EMC IP Holding Company LLC | Methods, electronic devices and computer program products for accessing data |
CN113448929A (zh) * | 2021-07-19 | 2021-09-28 | 上海商汤科技开发有限公司 | 数据存储方法及装置、设备、存储介质 |
CN113536075A (zh) * | 2021-07-20 | 2021-10-22 | 锐掣(杭州)科技有限公司 | 数据提取方法、装置及存储介质 |
CN113536075B (zh) * | 2021-07-20 | 2024-06-04 | 锐掣(杭州)科技有限公司 | 数据提取方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2018111770A1 (en) | 2018-06-21 |
US20180173459A1 (en) | 2018-06-21 |
US9996301B1 (en) | 2018-06-12 |
EP3555771A1 (en) | 2019-10-23 |
EP4145299A1 (en) | 2023-03-08 |
US20180253262A1 (en) | 2018-09-06 |
EP3555771B1 (en) | 2022-12-21 |
US10338852B2 (en) | 2019-07-02 |
CN109983431B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983431A (zh) | 用于存储设备中的列表检索的系统和方法 | |
US9866508B2 (en) | Aggregating and presenting recent activities for synchronized online content management systems | |
US10911324B2 (en) | Declarative and reactive data layer for component-based user interfaces | |
JP6276388B2 (ja) | 共有コンテンツのアクセス許可 | |
US9251183B2 (en) | Managing tenant-specific data sets in a multi-tenant environment | |
US9294485B2 (en) | Controlling access to shared content in an online content management system | |
US9565232B2 (en) | Importing content items | |
US8555018B1 (en) | Techniques for storing data | |
US20150012861A1 (en) | Syncing content clipboard | |
JP2020521209A (ja) | プラグイン関数プラットフォームおよび方法 | |
US10242215B2 (en) | Content preview including sharable information | |
US9613047B2 (en) | Automatic content item upload | |
US20140188869A1 (en) | Migrating content items | |
US20220121632A1 (en) | Dynamic inclusion of custom columns into a logical model | |
US20140317128A1 (en) | Natural language search | |
US20170160904A1 (en) | Sharing a template file | |
US9432238B2 (en) | Communicating large amounts of data over a network with improved efficiency | |
JP2020502605A (ja) | プレースホルダーを介したコンテンツ管理システムの履歴コンテンツアイテムへのアクセス | |
US11809381B2 (en) | Accessing network based content items by a mobile device while offline | |
US11568067B2 (en) | Smart direct access | |
US20150172263A1 (en) | Limited-functionality accounts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |