CN101617299A - 数据库管理方法 - Google Patents
数据库管理方法 Download PDFInfo
- Publication number
- CN101617299A CN101617299A CN200780049156A CN200780049156A CN101617299A CN 101617299 A CN101617299 A CN 101617299A CN 200780049156 A CN200780049156 A CN 200780049156A CN 200780049156 A CN200780049156 A CN 200780049156A CN 101617299 A CN101617299 A CN 101617299A
- Authority
- CN
- China
- Prior art keywords
- node
- record
- pointer
- data element
- speed cache
- 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
Images
Classifications
-
- 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
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了能够增强存储器管理的方法和系统。以对应于数据库中多个最老记录的数据元素的排序列表来填充高速缓存存储器。在接收到向已满的数据库添加记录的请求后,可检查高速缓存以确定数据库中最老的记录。可删除该记录,并从排序列表中移除高速缓存中对应的数据元素,并将该数据元素与浮动数据元素指针相关联。
Description
技术领域
本发明一般地涉及数据库配置及管理,更特别地,涉及一种在数据库修改期间用于管理存储资源的改进的方法。
背景技术
存储结构的维护可能需要相当多的处理和存储资源。例如,应用程序可以从可用资源池中分配存储资源用于执行应用程序。虽然这很便利,但不是所有的应用程序都能正确地以及时的方式释放所使用的资源,从而导致存储空间减少且性能降低。
传统的存储管理系统通过使用所谓的“无用单元收集”技术来回收存储资源。已知的无用单元收集技术定期地识别那些在未来不大可能被调用的存储资源,并释放这些资源以供其他进程或应用程序后续使用。遗憾的是,这种自治的无用单元收集技术由于需要定期地处理资源以便操作,并且在可能需要资源的时间内暂时冻结所分配的所有资源,故而可能要在性能上承受负面影响。
另外,在数据库管理领域,固定大小的数据库可能需要无用单元收集类型处理以确保在正确有效地删除不必要的记录的同时,可以添加新的记录到数据库中。遗憾的是,在没有不适当的性能影响的情况下,自动无用单元收集技术无法提供有效的管理。
发明内容
根据一个方面,一种方法可包括,以指向存储结构中多个记录的多个数据元素填充高速缓存;识别指向存储结构中最老记录的数据项;从存储结构中移除最老记录;从高速缓存中移除指向存储结构中最老记录的数据元素。
另外,该多个数据元素可以包括N个数据元素,存储结构中的多个记录可以包括存储结构中N个最老记录,其中N为整数。
另外,该方法可以包括,基于存储结构中相关联记录的年龄对高速缓存中的多个数据元素进行排序;将头指针与指向存储结构中最老记录的数据元素相关联,其中识别指向存储结构中最老记录的数据元素包括,识别与尾指针相关联的数据元素;并将尾指针与指向高速缓存中最新记录的数据元素相关联。
另外,存储结构中的记录和高速缓存中相关联的数据元素都包括指示记录最近访问时间的时间戳,并且可基于该时间戳对所述多个数据元素进行排序。
另外,对所述多个数据元素的排序可以进一步包括在每个数据元素中提供指向高速缓存中下一个数据元素的下一指针;并且在每个数据元素中提供指向高速缓存中上一个数据元素的上一指针。
另外,从高速缓存中移除指向存储结构中最老记录的数据元素可以进一步包括,将浮动数据元素指针关联到先前与头指针关联的数据元素,其中浮动数据元素列表维护先前涉及指向存储结构中最老记录的数据元素的存储分配;并且将头指针与当前与头指针相关联的数据元素中下一指针所引用的数据元素相关联。
另外,填充高速缓存可以进一步包括,确定高速缓存是否已满;确定当前记录是否比尾指针所引用的数据元素更老;以及当确定当前记录比尾指针所引用的数据元素更老的时候,执行下列操作:将浮动节点指针分配给尾指针所引用的数据元素;重写尾指针所引用的数据元素以使其指向当前记录;将尾指针分配给高速缓存中下一个最新的数据元素;识别由浮动节点指针所引用的数据元素的排序位置;以及将浮动节点指针所引用的数据元素插入到高速缓存。
另外,识别由浮动节点指针所引用的数据元素的排序位置包括,将由浮动节点指针所引用的数据元素的时间戳与高速缓存中数据元素的时间戳相比较。
另外,该方法可以包括,确定存储结构是否已满;并且当确定存储结构已满时,填充高速缓存。
另外,该方法可以包括,确定高速缓存是否要被填充;并且当确定高速缓存要被填充时,填充高速缓存。
另外,高速缓存可以包括具有多个数据元素的双向链表,且其中高速缓存进一步包括浮动数据元素指针,其被配置为引用从双向链表中分离的数据元素。
另外,确定高速缓存是否要被填充可以包括,确定双向链表是否为空。
另外,确定双向链表是否为空,可以包括,对高速缓存存取的次数计数;并确定计数器存取数目何时是高速缓存中数据元素总数的倍数。
另外,该方法可以包括,确定存储结构是否已满;并且当确定存储结构已满时,确定高速缓存是否要被填充。
另外,该方法可以包括,向存储结构添加新记录。
另外,存储结构可以包括数据库。
另外,数据库可配置为维护数字权利管理信息,且可以在移动计算设备的存储器中维护该数据库。
根据另一方面,一种方法可以包括,用指向存储结构中多个记录的多个节点填充高速缓存;接收更新来自存储结构的记录的请求;确定要更新的记录的年龄是否比多个节点中最新节点的年龄新;当确定要更新的记录的年龄不比多个节点中最新节点的年龄新的时候,确定该多个节点中的节点是否与要删除的记录相关联。
另外,高速缓存可以包括双向链表,其中该多个节点中的每个节点都包括指向下一个最老节点的下一指针和指向下一个最新节点的上一指针。
另外,更新记录的请求可包括,删除记录的请求。
另外,该方法可以包括,重写与在与要删除记录相关联的节点的上一指针中标识的节点相关联的下一指针,以使该下一指针指向与要删除记录相关联的节点的下一指针中所标识的节点;重写与在与要删除记录相关联的节点的下一指针中标识的节点相关联的上一指针,以使该上一指针指向与要删除记录相关联的节点的上一指针中所标识的节点;将与要删除记录相关联的节点添加到浮动节点列表;并从存储结构中移除要删除的记录。
另外,更新记录的请求可以包括修改记录的请求。
另外,该方法可以包括重写与在与要删除记录相关联的节点的上一指针中标识的节点相关联的下一指针,以使该下一指针指向与要修改记录相关联的节点的下一指针中所标识的节点;重写与在与要删除记录相关联的节点的下一指针中标识的节点相关联的上一指针,以使该上一指针指向与要修改记录相关联的节点的上一指针中所标识的节点;并将与要修改记录相关联的节点添加到浮动节点列表。
根据本发明的又一方面,一种计算机可读介质,其上存储有可由至少一个处理器执行的指令序列,可以包括用于接收向数据库添加记录的请求的一条或多条指令;用于确定数据库是否已满的一条或多条指令;用于识别当确定数据库已满时、高速缓存中指向数据库中最老记录的数据元素的一条或多条指令;用于从数据库中移除该最老记录的一条或多条指令;用于移除高速缓存中该已被识别的数据元素的一条或多条指令;以及用于向数据库添加记录的一条或多条指令。
另外,该计算机可读介质可以包括用于确定高速缓存是否要被填充的一条或多条指令;以及用于以指向数据库中对应的多个记录的多个节点来填充高速缓存的一条或多条指令,其中数据库中对应的多个记录包括数据库中的最老记录。
另外,用于确定高速缓存是否要被填充的一条或多条指令可以进一步包括,用于确定数据库是否已满的一条或多条指令;以及用于确定高速缓存存取计数器值是否是高速缓存中节点最大数的倍数的一条或多条指令。
根据又另一方面,一种方法可以包括,接收向节点的排序列表添加节点的请求,其中节点的排序列表基于与节点相关联的时间戳进行排序,头节点表示排序列表中最老的节点,尾节点表示排序列表中最新的节点;确定要添加的节点是否比尾节点老;当确定要添加的节点比排序列表中的尾节点更老时,给尾节点分配浮动指针;重写尾节点以表示要添加的节点;重写尾指针使其指向排序列表中的下一个最新节点;识别要在排序列表中添加的节点的排序位置;以及在所识别的排序位置将要添加的节点插入到排序列表中。
附图说明
参考附图,其中具有相同引用数字标记的元素自始至终表示同样的元件。
图1是可实现符合这里所描述各方面的方法及系统的示范性计算系统的示图;
图2是表示图1中存储器的一个实例的示范性框图;
图3-6是表示由符合这里所描述各方面的计算机系统所执行的示范性处理过程的流程图。
具体实施方式
下面参照附图对发明进行详细描述。不同附图中相同的引用数字表示同样的或相似的元件。还有,下面的具体描述不限制本发明,本发明的保护范围由附带的权利要求及等同物来确定。
示范性系统
图1是示范性计算系统100的图示,其中可实现这里所述的发明各个方面。计算系统100可以包括总线110,处理逻辑120,存储器130,存储设备140,输入设备150,输出设备160和通信接口170。总线110允许计算系统100的各个部件之间进行通信。本领域的技术人员能够知道,计算系统100可以多种其它方式来配置,并可以包括其他的或不同的元件。例如,计算系统100可以包括一个或多个电源(未示出)。计算系统100也可以包括用于处理数据的调制器,解调器,编码器,解码器等(未示出)。
计算系统100可以包括任何类型的能够处理指令的传统计算设备。例如,计算系统100可以包括能够向/从网络(未示出)传输和接收数据(例如,声音,文本,图像,多媒体数据)的任何类型的设备。在示范性实施例中,计算系统100可以是移动终端。如这里所使用的,术语“移动终端”可以包括具有或不具有多路显示的蜂窝式无线电话;可以将数据处理,传真和数据通信能力组合到蜂窝式无线电话的个人通信系统(PCS)终端;包括无线电话,寻呼机,互联网/企业内部网访问,web浏览器,管理器,日历和/或全球定位系统(GPS)接收器的个人数字助理(PDA);被配置为作为计算机网络上与另一个设备的接口的瘦客户端计算机设备;以及传统的膝上型电脑和/或掌上型电脑接收器或包括无线电话收发器的其它设备。移动终端也可被称作“普适计算”设备。
在可替换实施例中,计算系统100可以包括例如个人计算机(PC),膝上型计算机,PDA,基于web的装置,便携式媒体播放器等能够接收并处理存储于其上的数据的设备。在一个实施例中,计算系统100可以与其他计算系统通过无线,有线或光连接在网络上进行通信。
处理逻辑120可以包括处理器,微处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或类似设备。处理逻辑120可以执行软件指令/程序或数据结构以控制计算系统100的操作。
存储器130可以包括随机存取存储器(RAM)或储存由处理逻辑120执行的信息和指令的另一类型的动态存储设备;只读存储器(ROM)或储存由处理逻辑120使用的静态信息和指令的另一类型的静态存储设备;储存信息和指令的闪存设备(例如,电可擦除可编程只读存储器(EEPROM));和/或一些其他类型的磁记录或光记录介质及其对应的驱动器。存储器130也可以用于存储临时变量或在处理逻辑120执行指令期间的其他中间信息。在一个与此处所述各方面相一致的实施例中,存储器130可以维护或存储处理逻辑120可用的一个或多个存储结构(例如,数据库结构)。在一个实施例中,这些数据库结构可以被配置为维护在处理数据的应用请求中由处理逻辑120使用的数字权利管理(DRM)信息。关于存储器130配置的细节在下面描述。
存储设备140可以包括闪存(例如,NOR或NAND型EEPROM),磁记录和/或光记录介质及其对应的驱动器。
输入设备150可以包括允许操作者向计算系统100输入信息的任何装置,例如小键盘,麦克风,键盘,鼠标,笔,声音识别和/或生物测定装置,条形码读取器或扫描器,视觉姿态解释引擎(例如组合了陀螺仪,加速计等等),光学字符识别(OCR)引擎,手写识别装置等等。输入设备150也可以包括允许用户通过输出设备160接收选项菜单的一个或多个按钮。该菜单可以允许用户选择不同的功能或与计算系统100所执行的应用程序相关联的模式。输出设备160可以包括向用户输出信息的一个或多个传统装置,包括显示器,打印机,一个或多个扬声器,等等。
通信接口170可以包括使计算系统100能够与其他设备和/或系统通信的类似于收发器的装置。例如,通信接口170可以包括调制解调器或到局域网的以太网接口。可替代地,通信接口170可以包括通过网络,例如无线网络进行通信的其他装置。例如,通信接口170可以包括通过无线网络或蜂窝网络进行通信的一个或多个射频(RF)发射机和接收机和/或收发器。
与在此所述的方面相一致,计算系统100在处理数据库修改的过程中可以动态地管理存储器130的资源。与此处理相关的细节将在下面描述。响应于处理逻辑120执行计算机可读介质例如存储器130中所包含的指令序列,计算系统100可以执行这些操作。这样的指令可以从另一个计算机可读介质通过例如通信接口170读入到存储器130中。计算机可读介质可以包括一个或多个存储设备和/或载波。在可替换实施例中,可以使用硬件实现的电路代替软件指令或与软件指令组合来实现符合本发明的处理。因此,符合本发明的实现不限于硬件电路和软件的任何特定组合。
图2是表示存储器130的一个实施例的示范性框图。如上面简要描述的,存储器130可被配置为包括具有从210-1到210-n(一起被称作数据库记录210)的许多数据库记录的数据库205。在一个实施例中,数据库205可以在存储器130中有固定大小,其对应于固定数量的可能的数据库记录210。
在一个实施例中,数据库记录210可以涉及数字版权管理(DRM)许可或由移动计算系统100中处理逻辑120使用的其他数据。在移动计算系统的实现中,对速度和性能的需求增强了对快速而成本低廉的数据库管理方法的需求。
每个数据库记录210可以包括不同的数据元素字段215,其中包括在数据库205中唯一地标识了每个记录的关键字字段220和指示每个记录210被访问或更新的最后时间的时间戳字段225。在一个实施例中,记录210也可以包括用于维护由处理逻辑120使用的DRM信息的一个或多个DRM许可信息字段。
除了记录210之外,数据库205还可以包括数据库尺寸计数器230和高速缓存存取计数器235。数据库尺寸计数器230和高速缓存存取计数器235在数据库205的管理中的作用将在下面详细描述。
存储器130也可以包括配置为包括许多数据元素或“节点”245-1到245-m(一起被称作节点245)的高速缓存240。除了节点245之外,高速缓存240可以包括指示最老节点245的头指针250,指示最新节点245的尾指针255,浮动节点指针260,最大高速缓存尺寸变量265,当前高速缓存尺寸变量270和节点项关键字尺寸变量(node-item key-size variable)275。
与此处所述的方面相一致,可从存储器130中以传统方式分配每个节点245。如同下面将要详述的,当数据库205已经被填充满,基于数据库记录210中的时间戳字段225,可以将高速缓存240中的节点245填充以便引用数据库205中最老的m个记录。引用数据库记录210的节点245的列表可被称为高速缓存列表247。在高速缓存列表247的填充之后,可以基于高速缓存列表247的内容对数据库205做后续的修改。
在一个实施例中,高速缓存列表247中的节点245可以作为双向链表来实现,每个节点245包括指向高速缓存列表247中上一节点和下一节点245的指针。高速缓存列表247中的每个节点245可以包括标识用于所关联的数据库记录210的唯一关键字字段的关键字指针280,对应于用于所标识数据库记录210的时间戳字段225的时间戳285,以及分别指示高速缓存列表247中每个节点245的位置、以及便于对高速缓存列表247进行排序的上一指针290和下一指针295。在一个实施例中,可基于时间戳255对高速缓存列表247排序,这样,头指针250引用最老的节点245,尾指针255引用最新的节点245。
如同下面将要详述的,可使用浮动节点指针260以便于有效地对节点245排序,而无需从可用节点资源池中请求不必要的存储分配及释放。实质上,节点245的存储分配是固定的,节点245的总数等于被高速缓存240识别为“老的”记录的数据库记录210的最大数目。在上述实施例中,这个数目由变量m指定。
更特别地,在最初按时间排序填充节点245时,可以确定数据库205中的下一个记录210(也就是,第m1个记录210)是否比由尾指针250指示的节点(也就是,高速缓存列表247中最新的节点)更老。如果是,则高速缓存列表247中直到该点的节点245中的一个必须被重新分配,以便为新的指针腾出空位。为了便于这种操作,由尾指针250指定的节点245中的指针280可被重新分配给数据库205中第mth+1个记录210。接着这个节点245从高速缓存240中“出栈”,因为它不再指向数据库205中“最不老”(“least oldest”)的记录210。通过“出栈”,可以理解,可以将该节点的上一指针290设置为空,以及可将列表中上一节点245的下一指针295设置为空。尾指针255可被重写以指向新的尾节点245(如先前的尾节点245的上一指针290中所指定的)。接着可以写浮动节点指针260以指向从节点245的链接列表中“出栈”的上一尾节点245(现在指向数据库205中第mth+1个记录210),从而确保分配给上一尾节点245的存储器不会被无效率地释放。
接着遍历节点245的列表,以识别由浮动节点指针260指定的节点245的新位置。一旦识别出,前一节点245的下一指针295和后一节点的上一指针290就被重新分配以指向浮动节点指针260所指定的节点,而浮动节点指针被设置为空。
如下面将更详尽地加以描述的,对数据库修改的请求导致删除由头指针250标识的最老节点245。因为高速缓存列表247被排序为最老的数据库记录在其头节点中被标识,所以就不必遍历数据库205以识别最老的记录了。此外,一旦标识了头节点245-m并删除了对应的数据库记录210,就可以将头节点245“出栈”并更新头指针250以指向下一个最老的节点。
然而,可以使用浮动节点指针260所引用的节点245的列表来保存节点245的存储分配,而不是释放对应于先前的头节点245的存储器资源并在以后高速缓存重新填充时(例如,从可用的存储资源池中)为新的高速缓存节点分配新的存储资源。更特别地,通过重写浮动节点列表中当前尾节点的下一指针295并重写上一头节点245的上一指针290,先前的头节点245可被添加到浮动节点列表(其头部可以由浮动节点指针260引用)的尾部。
通过使用并行的双链高速缓存240进行数据库205的管理,可以实现具有最小性能影响的尽可能的有效管理。此外,使用浮动节点对高速缓存列表247进行更新,通过消除不必要的存储器释放和分配,可以进一步提高性能并减少存储碎片。此外,虽然就浮动节点指针260对列表结构作了描述,但可以理解的是,可以使用任何合适的存储器结构,例如数组,向量,双向链表,单向链表等等。
示范性处理
图3-6是示出了依照这里所述的方面用于管理数据库205的计算设备100所执行的示范性处理过程的流程图。如上面最初所述,通过消除在数据库205的维护或更新期间不必要的数据库处理以及存储分配和释放,以符合这里所述的实现方式来执行的数据库管理可以最大化计算设备100的性能。可以通过计算设备100中的一个或多个软件和/或硬件组件来执行图3的处理过程。
处理过程从处理逻辑120接收更新数据库205的请求开始(动作300)。所接收的更新请求可以包括在数据库205中添加,删除,或修改记录的请求。典型地,这样的请求可被接收作为来自处理逻辑120执行的软件的函数调用。可以理解,可以以任何适合的方式接收或实现数据库更新请求。
一接收到更新请求,就可确定该请求是向数据库205中添加记录210,还是从数据库205中删除记录210,或是更新数据库205中已存在的记录210(动作305)。
当在动作300接收到向数据库205中添加记录210的请求时,要确定数据库尺寸计数器230是否已达到其最大值,即指示数据库205中的每个可用位置都已被填充满(动作310)。如果没有填充满,向数据库205添加记录(动作315)并将数据库尺寸计数器230加1(动作320)。
当数据库尺寸计数器230等于其最大值时,这意味着数据库205已满,且在储存新记录之前需要删除记录。这一过程可以由确定与高速缓存存取计数器235相关联的值是否达到或满足预定的值或值的范围(动作325)开始。在一个实施例中,预定值可以涉及基于高速缓存存取计数器235的值的数学运算。
更特别地,动作325可以确定(高速缓存存取计数器的值)对(总的高速缓存尺寸)取模是否为0,其中,总的高速缓存尺寸指的是高速缓存240中节点的最大数量。这一运算指示了高速缓存存取数量是否等于最大高速缓存尺寸的倍数。例如,当高速缓存存取数量是0(例如,高速缓存尚未被填充)时,这个值(在这个例子中是0)对任何高速缓存最大值(例如,10)取模都是0,表示该高速缓存240需要被填充。
如果高速缓存存取计数器235的值满足预定的标准,则高速缓存列表247的节点245-1到245-m与指向数据库205中m个最老的记录210的指针或引用一起被填充(动作330)。在填充期间,可以基于时间戳210从最新的245-1到最老的节点245-m对高速缓存列表247进行排序。在高速缓存240中可以配置指针以反映排序的节点,头指针250指向最老节点245-m的存储地址,尾指针255指向最新节点245-1的存储地址。关于高速缓存列表247的填充细节,下面结合图4进一步阐述。
如果在动作325中确定高速缓存列表247先前已被填充过(例如,响应于向数据库205添加数据库记录210的在先请求),高速缓存存取计数器235可具有值1。不同于前面的例子,1对10(高速缓存240中总的示范性节点数量)取模不等于0。在这种情况下,不填充(或重新填充)高速缓存240,并且处理过程继续来到动作340,以基于现有的高速缓存240维护数据库。
在填充(或重新填充)高速缓存240后,可以识别(由头指针255标识的)最老的节点245-m(动作340)。然后可以从数据库205中删除由头节点245-m引用的数据库记录210(动作345),并且可以将数据库尺寸计数器230递减以指示数据库尺寸的减小(动作350)。
可以通过添加节点到浮动节点存储结构,例如单向链表或双向链表,数组,或向量(可由浮动节点指针260指定其头部),来从双链高速缓存列表247中分离或弹出最老的节点245-m(指向刚删除的记录210)。添加节点245-m到并行列表可以阻止分配给节点245-m的存储资源在从高速缓存240中移除时被释放(动作355)。在一个实施例中,通过写节点245-m中的上一指针290使其指向浮动节点列表中的当前尾节点(其通过遍历浮动节点列表来确定,遍历从由浮动节点指针260指定的节点245开始),来实现将先前最老的节点245-m添加到浮动节点列表。如果不存在浮动节点,浮动节点指针260可被设置到节点245-m。
可以更新头指针250以指向下一个最老节点245(也就是在先前的浮动节点245-m的上一指针290中标识的节点)(动作360)。可以将当前最老节点245(现在由头指针250指定)的上一指针290设置为空,表示当前最老节点245是高速缓存列表247中的第一节点(动作365)。可以将高速缓存存取计数器值235加1以表示“命中”了高速缓存列表247(动作370)。接着可以添加新记录210到数据库205(动作375),并将数据库尺寸计数器230递增(动作380)。处理过程可以返回动作300,以便接收下一个数据库更新请求。
图4是表示依照这里所述的方面,使用浮动节点指针260对高速缓存列表247排序的示范性处理过程的流程图。一开始,在动作325一旦确定高速缓存列表247需要被填充,就检查数据库记录400(动作400)。接着,确定高速缓存列表247是否已满(动作405)。如果没有,就将高速缓存列表247中的下一个可用节点245分配给当前记录(动作410)。可以识别与当前数据库记录相关的节点245的位置(动作415),并将该节点在已识别的位置插入到高速缓存列表247中(动作420)。在一个实施例中,可以通过将该节点的时间戳与高速缓存列表247中已存在的节点245的时间戳进行比较,来实现识别在高速缓存列表247中节点的正确排序位置。一旦识别出来,就要重写当前节点、前一节点,后一节点的下一指针和上一指针以便插入。接着,可以确定是否已检查过所有的数据库记录(动作422)。如果是,过程停止。然而,如果还有更多的记录需要检查,那么处理过程可以转到动作400,以便分析数据库205中的下一个记录210。
转到动作405,当确定了高速缓存列表247已满,接着可以确定与当前记录相关联的时间戳是否比与高速缓存列表247中的尾节点245相关联的时间戳更加新(动作425)。如果是,不创建与当前记录相关的节点,且处理过程继续进行到动作427,在该动作中确定当前记录是否是数据库205中的最后记录210。如果是,排序处理结束。然而,如果当前记录210不是数据库205中的最后记录,处理过程转到动作400,检查下一个记录210。
然而,当与当前记录相关联的时间戳不比与高速缓存列表247中的尾节点245相关联的时间戳更加新时,将浮动节点指针260分配给尾节点245(动作430)。通过使用浮动节点指针260,无需释放及重新分配节点存储器即可维持正确排序的高速缓存列表247。然后,重写尾节点245以指向数据库205中的当前记录210(动作435)。接下来,必须确定新节点的正确位置。为了做到这一点,可重写高速缓存尾指针255以指向先前的下一个最新节点245(也就是,节点尾部+1)(动作440)。随后,可以将尾节点245(由尾指针255所引用的)的下一指针295设置为空(动作440),表示这个节点245是新的尾节点。
接着,通过比较浮动节点245与高速缓存列表247中节点245的时间戳,可以识别高速缓存列表247中的正确排序位置标识(动作450)。在识别其位置之后,可以将浮动节点245插入到高速缓存列表247中(动作455)。接着,可以将浮动节点指针260设置为空(动作460)。然后处理过程转而继续进行到上述动作427。
通过使用有限的存储资源集合和浮动节点指针,这里所述的排序方法可以达到提高性能和减少存储碎片的目的。
回到图3的动作305,当确定在动作300接收的更新数据库请求是记录更新请求时(例如,指示记录210的改变,或指示对记录210的访问等等),可更新与修改的记录210相关联的时间戳225以反映修改的时间(动作500,图5)。可以理解,可以在更新的时候修改记录210中的附加信息。接着,可以确定与更新的记录相关联的预更新时间戳值是否比尾指针250所引用的节点更加新(动作510)。如果是,则高速缓存列表247中没有记录与移除的元素相关联,且处理过程继续进行到动作300等待下一更新请求。
然而,如果与被更新的记录相关联的预更新时间戳值老于尾指针255指定的节点(也就是,高速缓存列表247中的“最新”节点),则基于预更新的时间戳,可针对与被更新记录210相关联的任何节点245来遍历高速缓存列表247(动作515)。如果识别了高速缓存240中的关联节点245,则通过重写在前和在后节点中的下一指针290和上一指针295,来从链表中移除该节点(动作520)。
接着,可将已移除的节点245添加到浮动节点列表(其头部由浮动节点指针260指定)的尾部,从而阻止了分配给已移除节点245的存储资源被释放(动作525)。高速缓存存取计数器235可被递增,以表示发生了高速缓存命中,并在随后只维护指定老的数据库记录的更少数量的高速缓存节点(动作530)。处理过程可以转到动作300,以便接收下一数据库更新请求。
当确定在动作300接收的更新数据库请求是记录删除请求时,可以确定与要删除的记录相关联的时间戳值是否比尾指针255所引用的节点更加新(动作600,图6)。如果是,则高速缓存列表247中没有记录与已移除元素相关联,并删除数据库记录(动作610),且将数据库尺寸计数器230减1(动作615)。接着,处理过程转到动作300,以便接收下一数据库更新请求。
然而,如果与要删除的记录相关联的时间戳比由尾指针255(也就是,高速缓存240中的“最新”节点)所指定的节点更老的话,则基于要删除的记录的时间戳,可以针对与已更新记录210相关联的任意节点245来遍历高速缓存列表247(动作620)。如果识别了高速缓存240中的关联节点245,则通过重写在前节点和在后节点的下一指针290和上一指针295来将该节点从链表中移除(动作625)。
接着,可将已移除的节点245添加到浮动节点列表(其头部由浮动节点指针260指定)的尾部,从而阻止了分配给已移除节点245的存储资源被释放(动作630)。可以将高速缓存存取计数器235递增,以表示发生了高速缓存命中,并在随后维护指定老的数据库记录的、高速缓存列表247中更少数量的节点(动作635)。接着,处理过程可进行到上述动作610来移除数据库记录210,并递减数据库尺寸计数器230。
结论
符合这里所述各方面的实现通过促进对数据库记录的有效修改以及用于优化存储分配的并行高速缓存,能够增强数据库的管理。
前面描述的本发明实施例提供了示例和说明,但其并不试图穷举或限制本发明为所公开的精确形式。根据上面的教导做些修改及变化是可能的,或者可从本发明的实施中得到某些修改及变化。
进一步地,虽然就图3-6描述了一系列动作,但是在符合本发明的其他实施例中,这些动作的顺序可以不同。而且,不相依赖的动作可以并行执行。
对于本领域的普通技术人员来说明显的是,如上所述的本发明的各方面可以以例如计算机设备,蜂窝通信设备/系统,方法和/或计算机程序产品来实现。相应地,本发明可以体现为硬件和/或软件(包括固件,常驻软件,微代码等等)形式。此外,本发明的各方面可以采用位于计算机可用或计算机可读的存储介质上的计算机程序产品的形式,其中该存储介质具有包含于介质中的计算机可用或计算机可读的程序代码,该程序代码由指令执行系统使用或与指令执行系统一起使用。实际的软件代码或用于实现符合本发明原理的各方面的专用控制硬件并不限制本发明。因此,已描述的各方面的操作和行为没有参照特定软件代码——可以理解,本领域的普通技术人员能够基于此处的描述来设计软件并控制硬件以实现这些方面。
此外,可以将本发明的某些部分实现为执行一个或多个功能的“逻辑”。该逻辑可以包括硬件,例如处理器,微处理器,专用集成电路或现场可编程门阵列,软件,或硬件和软件的组合。
需要强调的是,说明书中使用的术语“包括”是用于详细说明所描述的特征,整体,步骤或元件的存在,但是不排除一个或多个其他的特征,整体,步骤,元件或它们的组合的存在或追加。
本申请的说明书中用到的元件,动作或指令没有哪个应被解释为对本发明而言是关键的或必要的,除非已明确地这样描述过。还有,如这里所使用的,冠词“a”意图包括一个或多个项目。如果想要仅指一个项目,将使用词语“一个”或类似用语。此外,这里所使用的词语“基于”意指“至少部分地基于”,除非以其它方式明确作了声明。
本发明的保护范围由权利要求及其等同物来限定。
Claims (27)
1、一种方法,包括:
以指向存储结构中多个记录的多个数据元素来填充高速缓存;
识别指向该存储结构中最老记录的数据元素;
从该存储结构中移除该最老记录;及
从该高速缓存中移除指向该存储结构中最老记录的数据元素。
2、如权利要求1的方法,其中所述多个数据元素包括N个数据元素,并且其中存储结构中的所述多个记录包括存储结构中N个最老记录,其中N是整数。
3、如权利要求1的方法,进一步包括:
基于存储结构中相关联记录的年龄对高速缓存中的所述多个数据元素进行排序;
将头指针与指向存储结构中最老记录的数据元素相关联;
其中识别指向存储结构中最老记录的数据元素包括,识别与头指针相关联的数据元素;及
将尾指针与指向高速缓存中最新记录的数据元素相关联。
4、如权利要求3的方法,其中存储结构中的记录和高速缓存中相关联的数据元素都包括指示该记录的最后访问时间的时间戳,其中对所述多个数据元素进行排序基于该时间戳来进行。
5、如权利要求3的方法,其中对所述多个数据元素的排序,进一步包括:
在每个数据元素中提供指向高速缓存中在后数据元素的下一指针;及
在每个数据元素中提供指向高速缓存中在前数据元素的上一指针。
6、如权利要求5的方法,其中从高速缓存中移除指向存储结构中最老记录的数据元素进一步包括:
将与头指针相关联的数据元素添加到浮动数据元素列表,
其中浮动数据元素列表维护先前涉及指向存储结构中最老记录的数据元素的存储分配;及
将头指针与当前与头指针相关联的数据元素中的下一指针所引用的数据元素相关联。
7、如权利要求5的方法,其中填充高速缓存进一步包括:
确定高速缓存是否已满;
确定当前记录是否比尾指针所引用的数据元素更老;及
当确定当前记录比尾指针所引用的数据元素更老时,执行下面的操作:
将浮动节点指针分配给尾指针引用的数据元素;
重写尾指针引用的数据元素以指向当前记录;
将尾指针分配给高速缓存中下一个最新的数据元素;
识别由浮动节点指针引用的数据元素的排序位置;及
将由浮动节点指针引用的数据元素插入到高速缓存中。
8、如权利要求7的方法,其中识别由浮动节点指针引用的数据元素的排序位置包括:
将由浮动节点指针引用的数据元素的时间戳和高速缓存中数据元素的时间戳进行比较。
9、如权利要求1的方法,包括:
确定存储结构是否已满;及
当确定存储结构已满时,填充高速缓存。
10、如权利要求1的方法,包括:
确定高速缓存是否要被填充;及
当确定高速缓存要被填充时,填充高速缓存。
11、如权利要求10的方法,其中高速缓存包括包含所述多个数据元素的双向链表,并且其中高速缓存进一步包括被配置为引用从双向链表分离出的数据元素的浮动数据元素指针。
12、如权利要求11的方法,其中确定高速缓存是否要被填充进一步包括:
确定双向链表是否为空。
13、如权利要求12的方法,其中确定双向链表是否为空进一步包括:
对高速缓存存取的数量计数;及
确定何时高速缓存存取的数量是高速缓存中数据元素总数的倍数。
14、如权利要求10的方法,进一步包括:
确定存储结构是否已满;及
当确定存储结构已满时,确定高速缓存是否要被填充。
15、如权利要求1的方法,进一步包括:
向存储结构添加新的记录。
16、如权利要求1的方法,其中存储结构包括数据库。
17、如权利要求16的方法,其中该数据库被配置为维护数字权利管理信息,且其中在移动计算设备的存储器中维护该数据库。
18、一种方法,包括:
以指向存储结构中多个记录的多个数据元素来填充高速缓存;
接收更新来自存储结构的记录的请求;
确定要更新的记录的年龄是否比多个节点中最新节点的年龄更加新;及
当确定要更新的记录的年龄不比多个节点中最新的节点更加新时,确定所述多个数据元素中的节点是否与要删除的记录相关联。
19、如权利要求18的方法,其中高速缓存包括双向链表,其中所述多个节点中的每个节点都包括指向下一个最老节点的下一指针和指向下一个最新节点的上一指针。
20、如权利要求19的方法,其中更新记录的请求包括删除记录的请求。
21、如权利要求20的方法,进一步包括:
重写与在与要删除记录相关联的节点的上一指针中标识的节点相关联的下一指针,以指向在与要删除记录相关联的节点的下一指针中标识的节点;
重写与在与要删除记录相关联的节点的下一指针中标识的节点相关联的上一指针,以指向在与要删除记录相关联的节点的上一指针中标识的节点;
将与要删除记录相关联的节点添加到浮动节点列表;及
从存储结构中移除该要删除的记录。
22、如权利要求19的方法,其中更新记录的请求包括修改记录的请求。
23、如权利要求22的方法,进一步包括:
重写与在与要修改记录相关联的节点的上一指针中标识的节点相关联的下一指针,以指向在与要修改记录相关联的节点的下一指针中标识的节点;
重写与在与要修改记录相关联的节点的下一指针中标识的节点相关联的上一指针,以指向在与要修改记录相关联的节点的上一指针中标识的节点;
将与该要修改记录相关联的节点添加到浮动节点列表。
24、一种具有存储于其上的可由至少一个处理器执行的指令序列的计算机可读介质,包括:
用于接收向数据库添加记录的请求的一条或多条指令;
用于确定数据库是否已满的一条或多条指令;
用于当确定数据库已满时,识别高速缓存存储器区中指向数据库中最老记录的数据元素的一条或多条指令;
用于从数据库中移除该最老记录的一条或多条指令;
用于移除高速缓存存储器中已识别的数据元素的一条或多条指令;及
用于向数据库添加记录的一条或多条指令。
25、如权利要求24的计算机可读介质,进一步包括:
用于确定高速缓存是否要被填充的一条或多条指令;及
用于以指向数据库中对应的多个记录的多个数据元素来填充高速缓存的一条或多条指令,
其中数据库中所述对应的多个记录包括数据库中的最老记录。
26、如权利要求25的计算机可读介质,其中用于确定高速缓存是否要被填充的一条或多条指令进一步包括:
用于确定数据库是否已满的一条或多条指令;及
用于确定高速缓存存取计数器值是否是高速缓存中数据元素的最大数量的倍数的一条或多条指令。
27、一种方法,包括:
接收向节点的排序列表添加节点的请求,
其中节点的排序列表基于与节点相关联的时间戳进行排序,头节点表示排序列表中最老的节点,尾节点表示排序列表中最新的节点;
确定要添加的节点是否比尾节点更老;
当确定要添加的节点比排序列表中的尾节点更老时,将浮动指针分配给尾节点;
重写尾节点以表示要添加的节点;
重写尾指针以指向排序列表中下一个最新的节点;
识别要添加的节点在排序列表中的排序位置;及
将要添加的节点在所识别的排序位置插入到排序列表中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/620,126 US8615635B2 (en) | 2007-01-05 | 2007-01-05 | Database management methodology |
US11/620,126 | 2007-01-05 | ||
PCT/IB2007/052656 WO2008084341A1 (en) | 2007-01-05 | 2007-07-05 | Database management methodology |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101617299A true CN101617299A (zh) | 2009-12-30 |
CN101617299B CN101617299B (zh) | 2011-12-21 |
Family
ID=39226697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800491567A Expired - Fee Related CN101617299B (zh) | 2007-01-05 | 2007-07-05 | 数据库管理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8615635B2 (zh) |
EP (1) | EP2115600A1 (zh) |
CN (1) | CN101617299B (zh) |
WO (1) | WO2008084341A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779153A (zh) * | 2011-05-13 | 2012-11-14 | 佳能株式会社 | 信息处理设备和信息处理方法 |
CN103425663A (zh) * | 2012-05-16 | 2013-12-04 | 中兴通讯股份有限公司 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
CN109101441A (zh) * | 2017-06-21 | 2018-12-28 | 核桃运算股份有限公司 | 资料管理装置、方法及其电脑程式产品 |
CN112416946A (zh) * | 2020-12-09 | 2021-02-26 | 深圳市优必选科技股份有限公司 | 播放内容管理方法、装置、设备和介质 |
CN113377636A (zh) * | 2021-06-07 | 2021-09-10 | 上海微盟企业发展有限公司 | 一种页面浏览量计算的方法、系统、设备及可读存储介质 |
CN114489468A (zh) * | 2020-11-12 | 2022-05-13 | 西部数据技术公司 | 数据存储设备的数据库管理架构 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599949B1 (en) * | 2004-04-30 | 2009-10-06 | Unisys Corporation | Database management system and method for maintaining a database in a range sensitive manner |
CN100502367C (zh) * | 2007-04-04 | 2009-06-17 | 华为技术有限公司 | 保存域名系统记录的方法、装置 |
US9052824B2 (en) | 2012-01-26 | 2015-06-09 | Upthere, Inc. | Content addressable stores based on sibling groups |
US20160055546A1 (en) | 2014-08-21 | 2016-02-25 | Oracle International Corporation | Managing progressive statistical ids |
US10067981B2 (en) | 2014-11-21 | 2018-09-04 | Sap Se | Intelligent memory block replacement |
US10621104B2 (en) * | 2015-09-25 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Variable cache for non-volatile memory |
US11301393B2 (en) * | 2018-12-17 | 2022-04-12 | SK Hynix Inc. | Data storage device, operation method thereof, and storage system including the same |
CN111367462B (zh) * | 2018-12-25 | 2023-04-07 | 兆易创新科技集团股份有限公司 | 一种数据处理方法及装置 |
US11516277B2 (en) | 2019-09-14 | 2022-11-29 | Oracle International Corporation | Script-based techniques for coordinating content selection across devices |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151989A (en) * | 1987-02-13 | 1992-09-29 | International Business Machines Corporation | Directory cache management in a distributed data processing system |
US5542066A (en) * | 1993-12-23 | 1996-07-30 | International Business Machines Corporation | Destaging modified data blocks from cache memory |
US5644751A (en) | 1994-10-03 | 1997-07-01 | International Business Machines Corporation | Distributed file system (DFS) cache management based on file access characteristics |
US5778442A (en) * | 1996-03-25 | 1998-07-07 | Oracle Corporation | Method and apparatus for buffering data in a computer system |
US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
US6941308B1 (en) * | 2001-10-05 | 2005-09-06 | Emc Corporation | Methods and apparatus for accessing a doubly linked list in a data storage system |
JP4420325B2 (ja) * | 2001-11-01 | 2010-02-24 | ベリサイン・インコーポレイテッド | トランザクションメモリ管理装置 |
JP4244572B2 (ja) * | 2002-07-04 | 2009-03-25 | ソニー株式会社 | キャッシュ装置、およびキャッシュデータ管理方法、並びにコンピュータ・プログラム |
US20050138407A1 (en) * | 2003-12-19 | 2005-06-23 | Nitu Choudhary | Method and apparatus to manage digital rights |
-
2007
- 2007-01-05 US US11/620,126 patent/US8615635B2/en not_active Expired - Fee Related
- 2007-07-05 CN CN2007800491567A patent/CN101617299B/zh not_active Expired - Fee Related
- 2007-07-05 WO PCT/IB2007/052656 patent/WO2008084341A1/en active Application Filing
- 2007-07-05 EP EP07805068A patent/EP2115600A1/en not_active Withdrawn
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779153A (zh) * | 2011-05-13 | 2012-11-14 | 佳能株式会社 | 信息处理设备和信息处理方法 |
CN102779153B (zh) * | 2011-05-13 | 2015-11-25 | 佳能株式会社 | 信息处理设备和信息处理方法 |
CN103425663A (zh) * | 2012-05-16 | 2013-12-04 | 中兴通讯股份有限公司 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
CN103425663B (zh) * | 2012-05-16 | 2017-11-28 | 中兴通讯股份有限公司 | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
CN109101441A (zh) * | 2017-06-21 | 2018-12-28 | 核桃运算股份有限公司 | 资料管理装置、方法及其电脑程式产品 |
CN114489468A (zh) * | 2020-11-12 | 2022-05-13 | 西部数据技术公司 | 数据存储设备的数据库管理架构 |
CN112416946A (zh) * | 2020-12-09 | 2021-02-26 | 深圳市优必选科技股份有限公司 | 播放内容管理方法、装置、设备和介质 |
CN113377636A (zh) * | 2021-06-07 | 2021-09-10 | 上海微盟企业发展有限公司 | 一种页面浏览量计算的方法、系统、设备及可读存储介质 |
CN113377636B (zh) * | 2021-06-07 | 2022-08-26 | 上海微盟企业发展有限公司 | 一种页面浏览量计算的方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101617299B (zh) | 2011-12-21 |
US20080168103A1 (en) | 2008-07-10 |
EP2115600A1 (en) | 2009-11-11 |
WO2008084341A1 (en) | 2008-07-17 |
US8615635B2 (en) | 2013-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101617299B (zh) | 数据库管理方法 | |
US7562202B2 (en) | Systems, methods, computer readable medium and apparatus for memory management using NVRAM | |
US7753281B2 (en) | System and method of updating a first version of a data file in a contactless flash memory device | |
US7246195B2 (en) | Data storage management for flash memory devices | |
US9747298B2 (en) | Inline garbage collection for log-structured file systems | |
CN101189584B (zh) | 内存页面管理 | |
CN108829344A (zh) | 数据存储方法、装置及存储介质 | |
US20110191544A1 (en) | Data Storage and Access | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
US20060200500A1 (en) | Method of efficiently recovering database | |
CN112395322B (zh) | 一种基于分级缓存的列表数据显示方法、装置及终端设备 | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
JP2011191835A (ja) | 計算機システムおよびアプリケーションプログラムの実行方法 | |
CN115964002A (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
CN115827162A (zh) | 一种智能化处理镜像仓库数据方法、装置、介质及设备 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
JP6812826B2 (ja) | 格納方法、格納装置及び格納プログラム | |
US8533398B2 (en) | Combination based LRU caching | |
US20050027933A1 (en) | Methods and systems for managing persistent storage of small data objects | |
CN108121504A (zh) | 数据删除方法及装置 | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN102541743A (zh) | 用于存储管理的方法、设备和系统 | |
CN103489482A (zh) | 信息处理设备、方法和程序 | |
CN118034610B (zh) | 应用于存储器的密钥数据处理方法、存储器、装置及设备 | |
US20220164135A1 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111221 Termination date: 20160705 |