CN104303165A - 管理对存储在输入块中的数据待执行的分析函数 - Google Patents
管理对存储在输入块中的数据待执行的分析函数 Download PDFInfo
- Publication number
- CN104303165A CN104303165A CN201280072902.5A CN201280072902A CN104303165A CN 104303165 A CN104303165 A CN 104303165A CN 201280072902 A CN201280072902 A CN 201280072902A CN 104303165 A CN104303165 A CN 104303165A
- Authority
- CN
- China
- Prior art keywords
- reader
- data
- write device
- user
- analytic function
- 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.)
- Pending
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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- 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/061—Improving I/O performance
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0669—Configuration or reconfiguration with decentralised address assignment
- G06F12/0676—Configuration or reconfiguration with decentralised address assignment the address being position dependent
-
- 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/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
在示例中,通过框架的接口来管理对存储在输入块中的数据待执行的分析函数,用户通过该接口定义分析函数。当用户定义的分析函数被执行时,通过对存储在输入块中的数据实施读取器、写入器、预读器和预写器,该框架将多批数据缓冲到存储器中,且其中读取器、写入器、预读器和预写器在输入块中相对于彼此单独地可移动。此外,通过该接口接收用户定义的分析函数。
Description
背景技术
分析函数常常被执行,以分析存储在相对大的输入块中的数据。例如当读取器和写入器推进以及与缓冲数据相关的规则被分析时,编程员为分析函数的各种方面编程。各种规则之一包括当数据存储在磁盘(例如硬盘驱动器磁盘)而不是存储器(例如随机存取存储器(RAM))上时,例如当在读取器和写入器之间的距离超过缓冲器尺寸时编程。各种规则中的另一个包括当存储器被释放用于当前批数据时编程。当待缓冲的数据的量相对大时,如可在各种分析函数的执行下发生,分析函数的编程常常相对难且耗时。
附图说明
本公开的特征作为示例被示出且并不被限制在下面的附图中,其中相似的数字指示相似的元件,其中:
图1A-1C分别示出根据本公开示例的本文公开的框架的状态的图;
图2示出根据本公开示例的机器的块图;
图3描绘根据本公开示例的用于管理对存储在输入块中的数据待执行的分析函数的方法的流程图;
图4A-4B共同描绘根据本公开另一示例的用于管理对存储在输入块中的数据待执行的分析函数的方法的流程图;以及
图5示出根据本公开示例的可用于执行在图2中描绘的机器的各种功能的计算设备的示意性表示。
详细描述
为了简单和例证性目的,本公开通过主要参考其示例而被描述。在下面的描述中,阐述了很多特定的细节,以便提供对本公开的彻底理解。然而将容易明白显,本公开可被实施而没有对这些特定细节的限制。在其它实例中,未详细描述一些方法和结构,以便不必要地使本公开难理解。在本公开中,术语“包括”意指包括但不限于此。术语“基于”意指至少部分地基于。此外,术语“一个”意欲表示至少一个特定元件。
针对用户定义的分析函数的现有框架一般使在输出块中产生需要完整传送数据同时将滚存信息复制到输出块中的输出行变得很难。用户定义的分析函数的示例是“NthValue”函数,其将每整行输出在块中,后面是第n行。当N增长得太大而不能装入存储器中时,现有的框架在降低的性能下操作,或需要由用户进行相对麻烦的编程以继续操作。用户定义的分析函数的另一示例是“滞后(Lag)”函数,其对于块中的每行,输出当前行,后面是位于当前行之前的第N行。当滞后偏移增长得太大时,在当前行之前的N行数据可能不再存储在存储器中。现有的框架常常试图通过将数据暂时写到硬盘驱动磁盘来解决这个问题。然而,访问被写到硬盘驱动磁盘上的数据常常是低效的。
本文公开一种用于管理对存储在输入块中的数据待执行的分析函数的方法,其允许独立和/或单独的读取器和写入器通过输入块移动。此外本文公开了用于实施该方法的装置和非临时计算机可读介质,该非临时计算机可读介质上存储有用于实施该方法的计算机可读指令。
在本文公开的方法和装置中,读取器和写入器指向输入块中的不同位置,同时只在被请求时才使必要的数据具体化。这使数据的缓冲能够对用户例如编程员隐藏,同时也充分地优化缓冲的效率。特别地,本文公开的接口实施两个未暴露的存取器——预读器和预写器,以及使读取器和写入器能够在输入块中独立地和/或单独地被推进的上下文切换。这也向用户提供整个输入块适应存储器的错觉。
此外,本文公开的接口实施自动缓冲机制,其中缓冲被执行而不需要用户输入关于缓冲如何被执行的指令。特别地,预读器和预写器被编程,以在对存储在大输入块中的数据实施分析函数时执行各种功能,其中分析函数的实施包括自动缓冲。一般来说,预写器是控制来自写入器的批数据的边界的存取器,写入器也是存取器,该批数据被复制到存储器中并当写入器到达预写器时自动(例如没有用户干预)移动到用于限定将被存储在存储器中的下批数据的边界的位置。此外,预写器将下批数据从输入块移动到存储器中,将滚存信息复制到输出块,并释放存储器的、将这批数据缓冲回到例如操作系统的部分。
同样,预读器是控制来自读取器的批数据的边界的存取器,读取器也是存取器,该批数据被复制到存储器中并当读取器到达预读器时自动移动到用于限定将被存储在存储器中的下批数据的边界的位置。此外,预读器将下批数据从输入块移动到存储器中,将滚存信息复制到输出块,并释放存储器的、将这批数据缓冲回到例如操作系统的部分。特别地,例如由预读器或预写器划界的这批数据被放置到存储器中,使得这批数据可被快速访问。当读取器(或写入器)推进而超出由预读器(或预写器)定义的边界时,用户不再需要快速访问这批数据。因此,存储器的、缓冲这批数据的部分被释放,使得存储器的那个部分可用于存储期望和/或需要快速访问的其它数据。
通过本文公开的方法和装置的实施,提供框架的接口,用户例如编程员或其它类型的用户可通过该接口定义分析函数,而不必也定义在分析函数的实施或调用期间,何时以及哪些数据块应被缓冲在存储器中,以及在各种实例中被写到磁盘和从磁盘读取。这可通常简化分析函数的编程。
首先参考图1A,示出了根据示例的本文公开的框架的状态的图100。如本文所示的,包含在大输入块102中的数据被写到输出块104。一般来说,大输入块102包括稳定存储装置例如硬盘、固态驱动器、基于磁带的存储装置等的一部分。此外,输出块104包括存储器(未示出)中的区域,数据块被存储在该区域中,用于由用户例如对存储在大数据块102中的数据执行分析函数的用户访问。存储器包括RAM、动态随机存取存储器(DRAM)、磁阻随机存取存储器(MRAM)、忆阻器、闪存等中的任一个。根据示例,大输入块102比存储器相对更大,使得存储器不能够一次存储包含在大数据块102中的所有数据。
输出块104代表已经从大输入块102复制的滚存数据。数据被滚存到输出块104,例如以维持在大输入块102中的数据的状态。在任何方面中,随着对包含在大输入块102中的数据操作分析函数,多批数据110和120被缓冲到存储器并然后写到输出块104。特别地,当读取器领先写入器一段与比可存储在存储器中的更大量的数据相应的距离时,相应于在读取器112和预读器114的当前位置之间的特定批数据的批数据110可存储在存储器的一个区域中,且相应于在写入器124和预写器126的当前位置之间的特定批数据的批数据120可存储在存储器的另一区域中。然而,当写入器122赶上读取器112时,读取器缓冲的这批数据110和写入器缓冲的这批数据120可存储在存储器的同一区域中。因此根据示例,本文公开的框架使用智能缓冲,其实质上最小化在存储器中的保存读取器缓冲的这批数据110和写入器缓冲的这批数据120所需的空间的量。
此外,读取器缓冲的这批数据110和写入器缓冲的这批数据120能够存储在存储器的分开的区域中,且读取器112能够相对于写入器122独立地移动,数据不需要与一般在常规框架中所需的一样容易写到磁盘。因此在一个方面中,本公开的框架通常相对于将数据写到输出块104实施更大的效率,因为从存储器写一般比从磁盘写明显更快。
作为示例,分析函数包括关于存储在大输入块102中的特定数据(目标)如何与存储在大输入块102中的其它数据比较的查询。在这个示例中,读取器112逐行推进,直到读取器112到达目标。写入器122然后推进,以比较大输入块102中的其余数据与目标。这样的功能的特定示例包括确定顶尖生产者的销售额与组织中的所有其它销售人员。在这个示例中,读取器112将仔细检查数据,以识别顶尖生产者,且那个人的销售量将被存储。写入器122可接着采用该销售量并仔细检查大输入块102,以比较顶尖生产者的销售量与其它销售人员的销售量。
现在转到图1B,示出了根据示例的本文公开的框架的另一状态的图100。如图1B所示,写入器122前进到预写器126的位置并因而读取预写器126以前缓冲的所有行。此时,用于推进写入器122的下一呼叫调用到预写器126的推进代码的上下文切换。预写器126的推进代码为用户准备下一可写块。特别地且如图1C所示,预写器126将下批数据128从大输入块102移动到存储器中,并将滚存信息复制到输出块104,其现在相对更大。此外,存储器中以前的批数据120被释放回到操作系统。然而,因为预写器126未暴露于用户,因此从用户的观点看,用于推进写入器122的最后呼叫与用于推进写入器122的任何以前的呼叫相同。
虽然没有在图1A-1C中示出,但当用户推进读取器112时,上面讨论的相同过程由预读器114实施。
当预读器114与预写器126之间的距离足够小时,本文公开的框架被编程,以使预读器114和预写器126都从同一缓冲器被读取。当预读器114和预写器126之间的距离相对大时,本文公开的框架被编程,以给读取器缓冲的这批数据110和写入器缓冲的这批数据120分配单独的缓冲器,它们一结束消耗其数据就释放每一缓冲器。如果在上面的示例中,预写器126最终赶上预读器114,则接口被编程以释放存储器缓冲器之一,因为它变成另一个的复制品。
现在转到图2,示出了根据本公开的示例的机器200的方框图。应理解,机器200可包括额外的部件,以及本文描述的一个或多个部件可被移除和/或修改而不偏离机器200的范围。
机器200被描绘为包括处理器202、存储器204、磁盘205、输入/输出接口206和接口管理器210。机器200包括例如服务器、计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话或执行用于管理输入块中的数据的分析函数的方法的其它电子装置中的任一个。机器200可因此包括输入块,并可存储数据和/或可管理存储在其它机器例如服务器、磁盘阵列等中的数据的分析函数的性能。
接口管理器210被描绘为包括输入/输出模块212、接口提供模块214、用户定义的分析函数接收模块216、用户定义的分析函数实施模块218、预读器模块220和预写器模块222。可包括微处理器、微控制器、专用集成电路(ASIC)等的处理器202在机器200中执行各种处理功能。处理功能之一包括调用或实施包含在接口管理器210中的模块212-222,如在本文中在下面更详细讨论的。
根据示例,接口管理器210包括硬件设备,例如布置在板上的一个电路或多个电路。在这个示例中,模块212-222包括电路部件或单独的电路。根据另一示例,接口管理器210包括易失性或非易失性存储器,例如动态随机存取存储器(DRAM)、电可擦除可编程只读存储器(EEPROM)、磁阻随机存取存储器(MRAM)、忆阻器、闪存、软盘、光盘只读存储器(CD-ROM)、数字视频盘只读存储器(DVD-ROM)或其它光学或磁性介质等。在这个示例中,模块212-222包括存储在接口管理器210中的软件模块。根据另一示例,模块212-222包括硬件和软件模块的组合。根据特定的示例,模块212-222包括被提供给用户作为软件开发工具包(SDK)的部分的软件模块。
输入/输出接口206包括硬件和/或软件接口。在任何方面中,输入/输出接口206可连接到内部总线和/或网络,例如互联网、内联网等,接口管理器210可通过这些网络接收并传递信息。处理器202可将通过输入/输出接口206接收的信息存储在磁盘205中并可在实施模块212-222时使用该信息。存储器204包括易失性和/或非易失性存储器,例如DRAM、EEPROM、MRAM、相变RAM(PCRAM)、忆阻器、闪存等。磁盘205包括稳定存储装置,例如硬盘、固态驱动器、基于磁带的存储装置等。
虽然存储器204和磁盘205被描绘为构成机器200的部分,应清楚地理解,存储器204和磁盘205中的任一个或两个可与机器200分开地被定位。在这些示例中,处理器202可通过输入/输出接口206与存储器204和磁盘205中的任一个或两个通信。
关于在图3和4A-4B中描绘的方法300和400更详细讨论了可实施模块212-222所用的各种方式。图3以及图4A和图4B共同描绘根据本发明的示例的用于管理存储在输入块中的数据的分析函数的方法300、400的相应流程图。对本领域中的普通技术人员应明显,方法300和400代表一般化实例和在不偏离方法300和400的范围的情况下可被添加的其它操作或可被移除、修改或重新布置的现有操作。虽然特别参考在图2中被描绘为包括可执行在方法300和400中描述的操作的装置和/或一组机器可读指令的接口管理器210,应理解,不同地配置的装置和/或机器可读指令可执行方法300和400,而不偏离方法300和400的范围。
方法400与方法300有关,因为除了在方法300中包括的操作以外,方法400还包括其它操作。因此,方法400应被解释为包括下面关于方法300讨论的所有特征。方法400也不同于方法300,因为方法400包括相应于用户定义的分析函数的实施或执行的操作。
一般来说,方法300和400可单独地被实施,以管理对存储在输入块中的数据执行的分析函数。在一个方面中,方法300和400可被实施,来向用户提供框架的接口,其使用户定义分析函数变得相对简单。特别地,因为本文公开的框架执行待分析的数据的智能缓冲,因此用户不需要编程或提供关于数据如何被缓冲的指令。
首先参考图3,在块302,例如通过接口提供模块214来提供框架的接口,用户通过该接口定义分析函数。根据示例,例如通过在本地附接的显示器上显示接口的部分或通过在远程定位的显示器上显示接口的部分,来通过输入/输出模块212和输入/输出接口206向用户提供接口。接口可包括例如向用户提供关于分析函数的定义的各种选项和特征的门户,例如web门户、桌上型计算机门户等。在这个方面中,接口通常包括用户可通过其来写分析函数的代码和API的接口,其中用户可定义何时移动读取器和写入器,而不需要用户也定义如何缓冲由读取器和写入器读取的数据。
作为特定的示例,接口包括多个示例性分析函数,用户可使用多个示例性分析函数来作为在定义它们的分析函数时的指导。因此例如,用户可复制包含示例性分析函数之一的文件,修改如何和何时读取器112和写入器122移动以及何时写入器122向输出写入。用户也可编译文件,登录到数据库中,装入所编译的文件作为库,并创建功能。此外,用户可接着运行功能。如上面讨论的,接口通过不要求用户也必须对数据如何被缓冲编程,来简化用户定义分析函数所需的编程,这是因为缓冲由本文公开的框架自动执行(例如没有用户干预)。
如在本文更详细讨论的,框架包括在输入块中相对于彼此可单独地移动的读取器112、写入器122、预读器114和预写器126。此外,在读取器112到达预读器114之前,预读器114控制被复制到存储器204中的批数据110的预定边界。同样,在写入器122到达预写器126之前,预写器126控制被复制到存储器204中的批数据120的预定边界。
在块304,用户定义的分析函数例如由用户定义的分析函数接收模块216接收。根据示例,用户可通过接口来定义分析函数,并可通过接口来提交所定义的逻辑。在这个方面中,例如接口可提供用户定义的分析函数提交特征,用户可选择该用户定义的分析函数提交特征,来将用户定义的分析函数提交到接口管理器210。
如上面也讨论的,用户可在提交用户定义的分析函数之前编译用户定义的分析函数。此外,所编译的用户定义的分析函数可存储在磁盘205中用于以后执行。关于在图4A和4B中描绘的方法400更详细描述了接口管理器210可在执行或实施分析函数时实施的各种操作。
现在转到图4A和4B,在块402,例如由接口提供模块214提供框架的接口,用户通过该接口定义分析函数。块402类似于上面关于图3讨论的块302。此外,在块404,用户定义的分析函数例如由类似于上面关于图3讨论的块304的用户定义的逻辑接收模块216接收。
在块406,数据例如由用户定义的分析函数实施模块218缓冲到存储器中。关于图1A-1C在上文中更详细描述了例如读取器缓冲的这批数据110和写入器缓冲的这批数据120的数据存储在存储器204的至少一个区域中所用的各种方式。
在块408,读取器112由用户定义的分析函数实施模块218推进,直到读取器112的位置到达预读器114的位置为止。特别地,读取器112可在块404被推进,如由用户通过接口编程的。可选地,在块408,写入器122由用户定义的分析函数实施模块218推进,直到写入器122的位置到达预写器124的位置为止。特别地,写入器122在块404被推进,如由用户通过接口编程的。
在块410,做出关于方法400是否将继续的决定。如果例如读取器112没有到达期望目标,则方法400可对读取器112继续。在这个方面中,例如在块408,读取器112可被推进,直到读取器112到达期望目标为止。此外,如果写入器122没有到达输入块102的末尾,方法400可对写入器122继续。响应于方法400将不继续的确定,该方法可在块412如所指示的结束。可选地,响应于方法400将继续的确定,在块414,用于推进读取器112的呼叫例如通过输入/输出模块212被接收。可选地,在块414,用于推进写入器122的呼叫被接收。在任何方面中,在块414推进读取器112或写入器122的呼叫引起上下文切换。
在块416,预读器114例如通过预读器模块220移动到用于限定将被存储在存储器204中的下批数据的边界的位置。可替代地,在块414,预写器124例如通过预写器模块222移动到用于限定将被存储在存储器204中的下批数据128的边界的位置。在块418,下批数据例如通过预读器模块220或预写器模块222从输入块102移动到存储器204中。此外,在块420,下批数据被复制到输出块104。在上文中关于图1B和1C更详细描述了下批数据被定义、从输入块102移动到存储器204中并复制到输出块104所用的各种方式。
在块422,前批数据110或120例如通过预读器模块220或预写器模块222从存储器204释放。前批数据110或120从存储器204的释放通常使处理器202能够例如在必要时删除该数据110或120,因为额外的数据将存储在存储器204中。
在块424,返回对读取器112或写入器12的控制。在一个方面中,通过将控制返回到读取器112或写入器122,读取器112或写入器122可被推进,如上面关于块408讨论的。此外,块410-424可重复,直到做出在块410接收方法400的确定。根据示例,在分开的迭代期间对读取器112和写入器122实施方法400。
在方法300和400中阐述的一些或所有操作可作为实用程序、程序或子程序被包含在任何期望计算机可访问介质中。此外,方法300和400可由可以以活动和不活动的各种形式存在的计算机程序体现。例如,它们可作为机器可读指令——包括源代码、对象代码、可执行代码或其它格式——而存在。任何上述格式可体现在非临时计算机可读存储介质中。非临时计算机可读存储介质的示例包括常规计算机系统RAM、ROM、EPROM、EEPROM和磁盘或光盘或磁带。因此应理解,能够执行上述功能的任何电子设备可执行上面列举的这些功能。
现在转到图5,示出了根据示例的可用于执行在图2中描绘的机器200的各种功能的计算设备500的示意性表示。计算设备500包括处理器502,例如但不限于中央处理单元;显示设备504,例如但不限于监视器;存储器506,例如但不限于RAM;磁盘驱动器507,例如但不限于光盘驱动器;网络接口508,例如但不限于局域网LAN、无线802.11LAN、3G/4G移动WAN或WiMax WAN;以及计算机可读介质510。这些部件中的每个操作地耦合到总线512。例如,总线512可以是EISA、PCI、USB、FireWire、NuBus或PDS。
计算机可读介质510包括参与向处理器502提供指令用于执行的任何适当介质。例如,计算机可读介质510可以是非易失性介质,例如存储器。计算机可读介质510也可存储操作系统514,例如但不限于Mac OS、MS Windows、Unix或Linux;网络应用程序516;以及分析函数管理应用程序518。操作系统514可以是多用户、多处理、多任务、多线程、实时的等。操作系统514也可执行基本任务,例如但不限于识别来自输入设备——例如但不限于键盘或袖珍键盘——的输入;将输出发送到显示器504;在介质510上记录文件和目录;控制外围设备,例如但不限于存储器、磁盘驱动器、打印机、图像捕获设备;以及在总线512上管理业务。网络应用程序516包括用于建立和维持网络连接例如但不限于用于实施通信协议——包括TCP/IP、HTTP、以太网、USB和FireWire——的机器可读指令的各种部件。
分析函数管理应用程序518提供用于管理存储在任何输入块中的数据的分析函数的各种部件,如上面关于图3和4中的方法300和400讨论的。分析函数管理应用程序518可因此包括输入/输出模块212、接口提供模块214、用户定义的分析函数接收模块216、用户定义的分析函数实施模块218、预读器模块220和预读器模块222。在这个方面中,分析函数管理应用程序518可包括用于执行方法300和/或400的模块。
在某些示例中,由应用程序518执行的一些或所有处理可集成到操作系统514中。在某些示例中,处理可以至少部分地在数字电子电路中或在计算机硬件、机器可读指令(包括固件和软件)中或在其任何组合中实施,也如上面讨论的。
在本文描述和示出的内容是本公开的示例以及一些变形。本文使用的术语、描述和附图仅作为例证被阐述,且并不意味着限制。在本公开的范围内的很多变化是可能的,本公开的范围由下面的权利要求及其等效形式限定,其中所有术语意指在其最广泛的合理意义上,除非另有指示。
Claims (15)
1.一种用于管理对存储在输入块中的数据待执行的分析函数的方法,所述方法包括:
通过处理器提供框架的接口,用户通过所述接口定义对存储在所述输入块中的所述数据待执行的所述分析函数,其中当用户定义的分析函数被执行时,通过对存储在所述输入块中的所述数据实施读取器、写入器、预读器和预写器,所述框架将多批数据缓冲到存储器中,并且其中所述读取器、所述写入器、所述预读器和所述预写器在所述输入块中相对于彼此单独地可移动;以及
通过所述接口接收所述用户定义的分析函数。
2.如权利要求1所述的方法,进一步包括:
响应于所述用户定义的分析函数被调用,来将所述多批数据缓冲到所述存储器中,而无需从所述用户接收关于所述多批数据如何被缓冲的指令。
3.如权利要求2所述的方法,其中在所述读取器到达所述预读器之前,所述预读器控制被复制到所述存储器中的来自所述读取器的批数据的预定边界,并且其中在所述写入器到达所述预写器之前,所述预写器控制被复制到所述存储器中的来自所述写入器的批数据的预定边界。
4.如权利要求3所述的方法,其中所述框架基于所述读取器和所述写入器相对于彼此的位置,以智能方式缓冲来自所述读取器的批数据和来自所述写入器的批数据。
5.如权利要求3所述的方法,进一步包括:
推进所述写入器,直到所述写入器的位置到达所述预写器的位置为止;
接收用于推进所述写入器的呼叫;
调用上下文切换;以及
将所述预写器移动到用于限定将被存储在所述存储器中的下批数据的边界的位置。
6.如权利要求5所述的方法,进一步包括:
通过所述预写器:
将所述下批数据从所述输入块移动到所述存储器中;
将滚存信息复制到输出块;
将所述批数据释放回到操作系统;以及
将控制返回到所述写入器。
7.如权利要求3所述的方法,进一步包括:
推进所述读取器,直到所述读取器的位置到达所述预读器的位置为止;
接收用于推进所述读取器的呼叫;
调用上下文切换;以及
将所述预读器移动到用于限定将被存储在所述存储器中的下批数据的边界的位置。
8.如权利要求7所述的方法,进一步包括:
通过所述预读器:
将所述下批数据从所述输入块移动到所述存储器中;
将滚存信息复制到输出块;
将所述批数据释放回到操作系统;以及
将控制返回到所述写入器。
9.如权利要求1所述的方法,其中通过所述接口接收所述用户定义的分析函数进一步包括:接收关于在所述用户定义的分析函数的实施期间何时移动所述读取器和所述写入器的指令,而无需接收关于如何缓冲所述数据的指令。
10.一种用于管理对存储在输入块中的数据待执行的分析函数的装置,所述装置包括:
至少一个模块,用于:
提供框架的接口,用户通过所述接口定义对存储在所述输入块中的所述数据执行的所述分析函数,其中当用户定义的分析函数被执行时,通过对存储在所述输入块中的所述数据实施读取器、写入器、预读器和预写器,所述框架将多批数据缓冲到存储器中,其中所述读取器、所述写入器、所述预读器和所述预写器在所述输入块中相对于彼此单独地可移动,其中在所述读取器到达所述预读器之前,所述预读器控制被复制到所述存储器中的来自所述读取器的批数据的预定边界,以及其中在所述写入器到达所述预写器之前,所述预写器控制被复制到所述存储器中的来自所述写入器的批数据的预定边界;和
通过所述接口接收所述用户定义的分析函数;以及
处理器,用于实施所述至少一个模块。
11.如权利要求10所述的装置,其中所述至少一个模块进一步基于所述读取器和所述写入器相对于彼此的位置,以智能方式缓冲来自所述读取器的批数据和来自所述写入器的批数据,而无需从所述用户接收关于所述批数据如何被缓冲的指令。
12.如权利要求10所述的装置,其中所述至少一个模块进一步用于:
推进所述写入器,直到所述写入器的位置到达所述预写器的位置为止;
接收用于推进所述写入器的呼叫;
调用上下文切换;
将所述预写器移动到用于限定将被存储在所述存储器中的下批数据的边界的位置;
将所述下批数据从所述输入块移动到所述存储器中;
将滚存信息复制到输出块;
将所述批数据释放回到操作系统;以及
将控制返回到所述写入器。
13.如权利要求10所述的装置,其中所述至少一个模块进一步用于:
推进所述读取器,直到所述读取器的位置到达所述预读器的位置为止;
接收用于推进所述读取器的呼叫;
调用上下文切换;
将所述预读器移动到用于限定将被存储在所述存储器中的下批数据的边界的位置;
将所述下批数据从所述输入块移动到所述存储器中;
将滚存信息复制到输出块;
将所述批数据释放回到操作系统;以及
将控制返回到所述写入器。
14.一种非临时计算机可读存储介质,其上存储有机器可读指令,当所述机器可读存储指令被处理器执行时实施用于管理存储在输入块中的数据的分析函数的方法,所述机器可读指令包括执行下列操作的代码:
提供框架的接口,用户通过所述接口定义对存储在所述输入块中的所述数据待执行的所述分析函数,其中当用户定义的分析函数被执行时,通过对存储在所述输入块中的所述数据实施读取器、写入器、预读器和预写器,所述框架将多批数据缓冲到存储器中,其中所述读取器、所述写入器、所述预读器和所述预写器在所述输入块中相对于彼此单独地可移动,并且其中在所述读取器到达所述预读器之前,所述预读器控制被复制到所述存储器中的来自所述读取器的批数据的预定边界,以及其中在所述写入器到达所述预写器之前,所述预写器控制被复制到所述存储器中的来自所述写入器的批数据的预定边界;以及
通过所述接口接收所述用户定义的分析函数。
15.如权利要求14所述的非临时计算机可读存储介质,所述机器可读指令进一步包括执行下列操作的代码:
接收关于在所述用户定义的分析函数的实施期间何时移动所述读取器和所述写入器的指令,而无需接收关于如何缓冲所述数据的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/040767 WO2014070129A2 (en) | 2012-06-04 | 2012-06-04 | Managing an analytic function to be performed on data stored in an input block |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104303165A true CN104303165A (zh) | 2015-01-21 |
Family
ID=50628223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072902.5A Pending CN104303165A (zh) | 2012-06-04 | 2012-06-04 | 管理对存储在输入块中的数据待执行的分析函数 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9652174B2 (zh) |
EP (1) | EP2856324A4 (zh) |
CN (1) | CN104303165A (zh) |
WO (1) | WO2014070129A2 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5890212A (en) * | 1997-05-28 | 1999-03-30 | Western Digital Corporation | Disk drive with cache employing host pointer jumps during skip-ahead or semi-repeating accesses |
US6430653B1 (en) * | 1998-05-01 | 2002-08-06 | Nec Corporation | Disk control unit and method for prefetching according to partition information and concatenation information |
TW200424948A (en) * | 2003-04-09 | 2004-11-16 | Intervideo Inc | Systems and methods for caching multimedia date |
US20080021502A1 (en) * | 2004-06-21 | 2008-01-24 | The Trustees Of Columbia University In The City Of New York | Systems and methods for automatic symmetry identification and for quantification of asymmetry for analytic, diagnostic and therapeutic purposes |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829007A (en) * | 1993-06-24 | 1998-10-27 | Discovision Associates | Technique for implementing a swing buffer in a memory array |
AU5774200A (en) * | 1999-06-28 | 2001-01-31 | Sangate Systems Inc. | Intelligent splitter, system, and methods of use |
US7245586B2 (en) | 2002-08-30 | 2007-07-17 | Lucent Technologies Inc. | Buffer management based on buffer sharing across ports and per-port minimum buffer guarantee |
US7953891B2 (en) | 2003-03-18 | 2011-05-31 | Microsoft Corporation | Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow |
US7657706B2 (en) * | 2003-12-18 | 2010-02-02 | Cisco Technology, Inc. | High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory |
US7685434B2 (en) * | 2004-03-02 | 2010-03-23 | Advanced Micro Devices, Inc. | Two parallel engines for high speed transmit IPsec processing |
US7752016B2 (en) | 2005-01-11 | 2010-07-06 | Hewlett-Packard Development Company, L.P. | System and method for data analysis |
JP2008533564A (ja) | 2005-02-24 | 2008-08-21 | ゼラウンド システムズ リミテッド | データ管理のための方法および装置 |
JP4498426B2 (ja) * | 2008-03-01 | 2010-07-07 | 株式会社東芝 | メモリシステム |
US10289611B2 (en) | 2010-04-30 | 2019-05-14 | Teradata Us, Inc. | Global and persistent memory for user-defined functions in a parallel database |
-
2012
- 2012-06-04 US US14/398,269 patent/US9652174B2/en active Active
- 2012-06-04 CN CN201280072902.5A patent/CN104303165A/zh active Pending
- 2012-06-04 EP EP12887850.1A patent/EP2856324A4/en not_active Withdrawn
- 2012-06-04 WO PCT/US2012/040767 patent/WO2014070129A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5890212A (en) * | 1997-05-28 | 1999-03-30 | Western Digital Corporation | Disk drive with cache employing host pointer jumps during skip-ahead or semi-repeating accesses |
US6430653B1 (en) * | 1998-05-01 | 2002-08-06 | Nec Corporation | Disk control unit and method for prefetching according to partition information and concatenation information |
TW200424948A (en) * | 2003-04-09 | 2004-11-16 | Intervideo Inc | Systems and methods for caching multimedia date |
US20080021502A1 (en) * | 2004-06-21 | 2008-01-24 | The Trustees Of Columbia University In The City Of New York | Systems and methods for automatic symmetry identification and for quantification of asymmetry for analytic, diagnostic and therapeutic purposes |
Also Published As
Publication number | Publication date |
---|---|
WO2014070129A3 (en) | 2014-07-03 |
EP2856324A4 (en) | 2016-01-20 |
US20150089177A1 (en) | 2015-03-26 |
US9652174B2 (en) | 2017-05-16 |
WO2014070129A2 (en) | 2014-05-08 |
EP2856324A2 (en) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669277B2 (en) | Latency-based scheduling of command processing in data storage devices | |
US9696934B2 (en) | Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory | |
CN101243396B (zh) | 用于在虚拟化环境中支持通用串行总线装置的方法和设备 | |
CN102682069A (zh) | 管理数据库恢复时间 | |
CN104508660A (zh) | 数据到数据库上的用户定义加载 | |
US11449952B2 (en) | Efficiently modeling database scenarios for later use on live data | |
US10534714B2 (en) | Allocating cache memory on a per data object basis | |
US10656850B2 (en) | Efficient volume replication in a storage system | |
CN107025070B (zh) | 版本化存储设备和方法 | |
CN102317901B (zh) | 对象调整方法、装置及系统 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN103809917A (zh) | 用于存储器的工作调度方法及其存储系统 | |
KR20120112965A (ko) | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 | |
WO2020033150A1 (en) | Quality of service control for read operations in memory systems | |
US20170316591A1 (en) | Graph processing using a shared memory | |
CN114647508A (zh) | 用于准时(jit)调度器的qos业务类别等待时间模型 | |
US20170351721A1 (en) | Predicting index fragmentation caused by database statements | |
CN105574008B (zh) | 应用于分布式文件系统的任务调度方法和设备 | |
CN105190577A (zh) | 合并存储器访问请求 | |
AU2013227350A1 (en) | Systems and methods for enhancing performance of software applications | |
CN104303165A (zh) | 管理对存储在输入块中的数据待执行的分析函数 | |
WO2023071101A1 (zh) | Io任务处理方法、装置和计算机设备和存储介质 | |
CN116089477A (zh) | 分布式训练方法及系统 | |
US9996390B2 (en) | Method and system for performing adaptive context switching | |
US11068250B2 (en) | Crowdsourced API resource consumption information for integrated development environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150121 |