CN111033481B - 非易失性存储器上的直接映射的缓冲区高速缓存 - Google Patents
非易失性存储器上的直接映射的缓冲区高速缓存 Download PDFInfo
- Publication number
- CN111033481B CN111033481B CN201880053507.XA CN201880053507A CN111033481B CN 111033481 B CN111033481 B CN 111033481B CN 201880053507 A CN201880053507 A CN 201880053507A CN 111033481 B CN111033481 B CN 111033481B
- Authority
- CN
- China
- Prior art keywords
- data
- access
- dram
- nvram
- data blocks
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 claims abstract description 227
- 230000008569 process Effects 0.000 claims abstract description 187
- 230000002085 persistent effect Effects 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 21
- 230000008859 change Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002688 persistence Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/463—File
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/465—Structured object, e.g. database record
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于在非易失性存储器中为持久文件系统实现缓冲区高速缓存的技术。数据集在计算设备的非易失性随机存取存储器(NVRAM)中的一个或多个盘区中维护。在计算设备的动态随机存取存储器(DRAM)中分配至少一个缓冲区首部。响应于在计算设备上执行的第一处理的访问所述一个或多个盘区中的第一盘区中的一个或多个第一数据块的读取请求,第一处理被授予对NVRAM中的第一盘区的直接读取访问。对NVRAM中的第一盘区的引用存储在第一缓冲区首部中。第一缓冲区首部与第一处理相关联。第一处理使用第一缓冲区首部直接访问NVRAM中的所述一个或多个第一数据块。
Description
技术领域
本文描述的实施例一般而言涉及计算机系统,并且更具体而言,涉及用于为非易失性存储器中的持久文件系统实现缓冲区高速缓存的技术。
背景技术
数据库系统通常存储在持久盘介质上。盘I/O等待时间往往是盘上数据库系统的性能瓶颈。因此,盘上数据库系统往往被设计为最小化I/O等待时间的影响。此类数据库系统没有解决当整个数据库适合非易失性存储器时如何利用非易失性存储器的问题。
数据库可以完全在诸如动态随机存取存储器(DRAM)之类的易失性存储器中实现。但是,因为易失性存储器不是持久的,所以不能保证数据的持久性。因此,此类数据库系统不合于独立于持久存储来运行数据库。
字节可寻址的非易失性存储器,诸如非易失性随机存取存储器(NVRAM)。NVRAM是随机存取存储器,其即使关闭电源也保留存储的信息。这类新型非易失性存储器的等待时间预计会比DRAM慢一些,但在DRAM的相同数量级内。
在基于盘的存储系统上,缓冲区高速缓存通常被用于盘缓冲。在盘缓冲中,存储在DRAM中的缓冲区高速缓存被用于调解数据传送。访问DRAM中的缓冲区高速缓存比从盘读取更快。通常,当发出I/O请求时,操作系统在缓冲区高速缓存中搜索所请求的数据。如果数据在缓冲区高速缓存中,那么无需访问盘即可满足I/O请求。如果数据不在缓冲区高速缓存中,那么将数据逐块地从盘复制到缓冲区高速缓存。然后,对缓冲区缓存中的数据而不是对盘上的数据执行I/O操作。通常,最初对缓冲区高速缓存中的数据块的副本执行写入操作。当对缓冲区高速缓存中的数据块成功执行写入操作后,将经修改的数据块复制到盘上,从而完成写入操作。
由于DRAM和NVRAM的行为存在根本差异,因此将数据库的至少一部分存储在DRAM中的数据库系统(“启用DRAM的数据库系统”)无法直接用于在NVRAM中存储相同的数据。例如,因为启用DRAM的数据库系统不能依赖易失性存储器来用于持久化,所以这些数据库系统在持久存储中维护数据库的副本或可用于构造数据库的持久副本的数据。如果启用DRAM的数据库系统中的处理对存储在DRAM中的数据库进行了改变,那么如果在改变完成之前该处理崩溃,那么易失性存储器将处于不可预测的状态。但是,由于持久存储了数据,因此启用DRAM的数据库系统可以从这种崩溃中恢复,而不会影响数据库的原子性、一致性、隔离性和持久性(ACID)特性。
如果启用DRAM的数据库系统中的DRAM和永久性存储装置被直接替换为NVRAM,那么这种情况将造成故障。更具体而言,如果数据库完全存储在NVRAM中,那么当直接对数据库进行操作的处理在对数据库的改变完成之前崩溃时,数据库将处于不可预测的状态。
本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有指示,否则不应当仅由于本节中所述的任何方法包括在本节中就将其假设为现有技术。
附图说明
在附图中:
图1是描绘可以被用于实现一个或多个实施例的示例系统体系架构的框图;
图2是描绘可以被用于实现一个或多个实施例的示例数据库系统体系架构的框图;
图3是描绘可以被用于实现一个或多个实施例的示例分布式系统体系架构的框图;
图4是描绘根据一个或多个实施例的用于管理对存储在NVRAM中的持久数据的访问的处理的流程图;
图5是描绘根据一个或多个实施例的用于提供对存储在NVRAM中的持久数据的直接读取访问的处理的流程图;
图6是描绘根据一个或多个实施例的用于提供对存储在NVRAM中的持久数据的DRAM副本访问的处理的流程图;
图7图示了可以在其上实现一个或多个实施例的计算机系统;
图8是图示了可以被用于控制计算系统的操作的示例软件系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对实施例的透彻理解。但是,显而易见的是,可以在没有这些具体细节的情况下实践这些实施例。在其它实例中,以框图形式示出了众所周知的结构和设备,以避免不必要地模糊实施例。
总体概述
本文描述了用于在非易失性存储器中实现持久文件系统的技术。存储在DRAM中的缓冲区首部(header)被用于对持久存储在NVRAM中的数据实现访问控制。缓冲区首部存储引用一个或多个盘区(extent)和/或数据块的映射。当缓冲区首部与处理关联时,将授予该处理对被引用的数据的访问。
直接映射引用NVRAM中的盘区和/或数据块。当缓冲区首部存储包括对NVRAM中的盘区的引用的直接映射时,与缓冲区首部相关联的处理可以访问NVRAM中的被引用的盘区。
DRAM副本映射引用DRAM中盘区和/或数据块的副本。当缓冲区首部存储包括对来自DRAM中的盘区的数据的副本的引用的DRAM副本映射时,与缓冲区首部相关联的处理可以访问存储在DRAM中的盘区的副本。在一些实施例中,盘区被复制到DRAM中的数据缓冲区,并且DRAM副本映射包括对数据缓冲区的引用。
本文描述的技术可以被用于实现持久存储在NVRAM中的文件系统和/或包括持久存储在NVRAM中的数据库的数据库系统。整个数据库和与数据库相关的其它持久数据可以存储在NVRAM中。此外,本文描述的技术可以在分布式系统中使用,诸如以实现分布式文件系统和/或分布式数据库系统。
在数据库系统中,这些技术充分利用数据库机制来支持数据库的ACID特性,同时利用非易失性存储器来避免I/O并最小化DRAM中数据的重复。当数据库处理直接从NVRAM中的一个或多个数据块读取数据时,数据库系统避免了与I/O操作相关联的开销。
文件系统
本文描述的技术可以被用于在非易失性存储器中实现文件系统。图1是描绘可以被用于实现一个或多个实施例的示例系统体系架构的框图。计算机系统100实现被配置为存储并提供对文件系统106中的一个或多个文件的访问的文件系统。例如,在计算机系统100中实现的文件系统可以向在计算机系统100上执行的处理108提供对文件系统106中的文件的访问。
如本文所使用的,术语“文件系统”是指用于在数据文件中存储和检索数据的软件部件和/或硬件部件的组合。例如,该术语可以指所存储的数据的层次结构、存储数据的硬件、被用于执行该方案的软件应用、软件和/或硬件的体系架构,及其任意组合。在一些实施例中,文件系统包括构成用于计算机系统(诸如计算机系统100)的操作系统的一部分的软件。
计算机系统100包括DRAM 102和NVRAM 104。计算机系统100将一个或多个文件持久地存储在NVRAM 104中的文件系统106中。NVRAM 104包括多个盘区。每个文件都存储在NVRAM 104中的一个或多个盘区中。如本文所使用的,术语DRAM是指任何形式的易失性随机存取存储器,而术语NVRAM是指任何形式的非易失性随机存取存储器。
如本文所使用的,术语“盘区”是指NVRAM中的连续数据块的集合。在一些实施例中,盘区中的数据块在逻辑上是连续的(即,占据地址空间内的连续地址),但是诸如由于RAID条带化、文件系统实施方式或其它因素而可以在盘上物理地散布。可以设置计算机系统100,使得每个盘区可以包括相同数量的数据块或变化数量的数据块。文件可以存储在零个盘区、一个盘区或多个盘区中。文件可以存储在多个不连续的盘区中。
在一些实施例中,计算机系统100提供对文件系统106中的文件的直接访问和DRAM副本访问。如本文所使用的,术语“直接访问”是指对NVRAM 104中的数据块的访问。如本文所使用的,术语“DRAM副本访问”是指访问存储在DRAM 102中的NVRAM 104中的数据块的副本。因此,取决于所授予的访问类型(例如,读取、写入或其它许可),被授予直接访问的处理可以直接在NVRAM上执行该类型的访问,而被授予DRAM副本访问的处理则不能。下文将更详细地描述直接访问和DRAM副本访问。
缓冲区高速缓存
在传统的基于盘的数据库系统中,缓冲区高速缓存被用于保持从盘上的数据文件读取的数据块或其部分。代替实现包括存储在盘上的数据的文件系统106,计算机系统100实现包括存储在NVRAM 104中的数据的文件系统106。
计算机系统100实现缓冲区高速缓存110,其促进对存储在NVRAM 104中的数据的I/O操作。缓冲区高速缓存110包括缓冲区首部112和数据缓冲区114。缓冲区首部112被用于存储提供对NVRAM 104中的一个或多个盘区和/或数据块或其在DRAM 102中的一个或多个副本的访问的映射。在一些实施例中,当生成NVRAM 104中一个或多个盘区和/或数据块的DRAM副本时,该DRAM副本存储在数据缓冲区114中。
在计算机系统100的DRAM 102中分配缓冲区首部。计算机系统100通过将元数据存储在缓冲区首部中并将缓冲区首部与处理相关联来授予该处理对文件系统106的访问。例如,缓冲区首部H1与处理P1相关联,并且缓冲区首部H2与处理P2相关联,从而授予对文件系统106的指定部分的访问。在一些实施例中,缓冲区首部112在DRAM 102中被预先分配,并且通过将现有的未使用的缓冲区首部与授予访问的处理相关联来授予访问。
在一些实施例中,计算机系统100通过将映射存储在缓冲区首部中来授予对文件系统106的访问。当处理被授予直接访问NVRAM 104中的盘区时,到NVRAM 104中的盘区的映射被存储在与该处理相关联的缓冲区首部中。当处理被授予对盘区的DRAM副本访问时,到DRAM 102中该盘区的副本的DRAM副本映射被存储在与该处理相关联的缓冲区首部中。在下文中将更详细地描述直接映射和DRAM副本映射。
直接访问和直接映射
如本文所使用的,术语“直接访问”是指对存储对应数据的NVRAM 104中的盘区中的一个或多个数据块的访问(例如,读取、写入或其它类型的访问)。可以向在DRAM 102中执行的一个或多个处理108授予对NVRAM 104中的一个或多个盘区、NVRAM中的一个或多个数据块或其一部分的直接访问。
可以由计算机系统100的操作系统、在计算机系统100上执行的文件系统应用、在计算机系统100上执行的其它软件、与这种软件交互的计算机系统100的一个或多个硬件部件和/或其任意组合来管理对存储在NVRAM 104中的文件系统106的访问(包括直接访问)。当计算机系统100授予对文件系统106的直接访问时,授予直接访问的机制可以在软件和/或硬件中实现,其可以包括在计算机系统100中操作的操作系统、文件系统、其它软件和/或硬件。
为了授予特定处理对存储在NVRAM 104中的文件系统106中的数据的直接访问,计算机系统100将直接映射150存储在缓冲区高速缓存110的特定缓冲区首部中,并且该特定缓冲区首部与特定处理相关联。直接映射150包括对要访问的NVRAM 104的部分(诸如一个或多个盘区、一个或多个数据块或其一部分)的引用。例如,直接映射150可以是指向永久存储器(例如,NVRAM 104)中的指针。直接映射150可以是对盘区内的特定块的引用。例如,直接映射150可以包括对具有偏移量的盘区的引用。在一些实施例中,直接映射150包括NVRAM104中的存储器地址和/或附加信息,诸如认证信息、许可、其它安全信息、盘区内的偏移量、长度或可用于在计算机系统100的NVRAM 104中定位数据的任何其它信息。
DRAM副本访问和DRAM副本映射
如本文所使用的,术语“DRAM副本访问”是指对NVRAM 104中的盘区中的一个或多个数据块的副本的访问(例如,读取、写入或其它类型的访问),其中该副本被存储在DRAM102中。因此,虽然对应的数据被持久地存储在NVRAM 104中,但是该处理未被授予对NVRAM 104本身的访问。NVRAM 104中的一个或多个盘区、NVRAM中的一个或多个数据块或其一部分的DRAM副本访问可以被授予在DRAM 102中执行的一个或多个处理108。
DRAM副本访问可以由计算机系统100的操作系统、在计算机系统100上执行的文件系统应用或在计算机系统100上执行的其它软件来管理。当计算机系统100授予对文件系统106的DRAM副本访问时,授予直接访问的机制可以在软件和/或硬件中实现,其可以包括在计算机系统100上操作的操作系统、文件系统、其它软件和/或硬件。
为了授予对存储在NVRAM 104中的文件系统106中的数据的处理DRAM副本访问,计算机系统100将DRAM副本映射152存储在缓冲区高速缓存110的特定缓冲区首部中,并且该缓冲区首部与授予DRAM副本访问的处理相关联。DRAM副本映射152包括对存储要访问的数据的副本的DRAM 102的一部分的引用。例如,DRAM副本映射152可以是指向易失性存储器(例如,DRAM 102)中的指针。在一些实施例中,DRAM副本映射152可以包括DRAM 102中的存储器地址和/或附加信息,诸如认证信息、许可、其它安全信息、存储器偏移量、长度或可用于在计算机系统100的DRAM 102内定位数据的任何其它信息。
在一些实施例中,对应数据的DRAM副本可以在缓冲区高速缓存110中维护。例如,一个或多个数据缓冲区114可以被用于存储对应数据的DRAM副本。虽然在一些实施例中对应数据的DRAM副本被描述为盘区的副本,但是其它数据单位可以存储在一个或多个数据缓冲区114中,诸如盘区的一部分、一个或多个数据块、其一部分,或整个盘区以外的另一个数据单位。在一些实施例中,DRAM 102中的缓冲区高速缓存110的数据缓冲区114包括基于NVRAM 104中的盘区的尺寸来确定尺寸的预分配的数据缓冲区114的池。
许可
在一些实施例中,计算机系统100可以通过授予许可来控制访问。如本文所使用的,术语“许可”是指使得被授予人能够以特定方式访问特定资源的授权。许可可以包括访问的类型,诸如打开、读取、写入、删除、修改、执行或特殊许可(包括定制的许可)。计算机系统100还可以控制访问的类型,诸如直接访问和DRAM复制。如本文所使用的,术语“读取”是指不能修改对应数据的访问、许可和/或操作。如本文所使用的,术语“写入”是指可以修改对应数据的访问、许可和/或操作。
在一些实施例中,计算机系统100选择性地授予对存储在NVRAM 104中的数据的直接读取访问,以及对DRAM 102中的NVRAM 104中存储的数据的副本的DRAM副本写入访问。例如,当一个或多个处理请求对存储在NVRAM 104中的数据的读取访问时,计算机系统100可以对这些处理中的一个或多个授予直接读取访问,从而允许这些处理从NVRAM 104中的(一个或多个)盘区直接读取数据。当一个或多个处理请求对存储在NVRAM 104中的数据的写入访问时,计算机系统100可以对这些处理中的一个或多个授予DRAM副本写入访问,从而允许这些处理访问和修改DRAM 102中所请求数据的DRAM副本。在下文中将更详细地描述直接读取访问和DRAM副本写入访问。
在一些实施例中,计算机系统100使用本文描述的直接映射和DRAM副本映射机制来实现其它许可和/或附加许可来控制访问。计算机系统100还可以检测除了直接读取访问和DRAM副本写入访问之外的许可是适当的情况。此类情况的示例将在下文中更详细地描述。
直接读取访问
提供对存储在NVRAM 104中的文件系统106中的数据的直接访问实施方式的示例。响应于来自处理P1的访问盘区E1的一个或多个块的请求,计算机系统100用直接映射150填充缓冲区首部H1。直接映射150包括对对应数据的引用,诸如对盘区E1、对NVRAM 104中的对应存储器地址和/或对识别NVRAM 104中的对应数据的其它元数据的引用。然后,计算机系统100将缓冲区首部H1与处理P1相关联。一旦处理P1与缓冲区首部H1相关联,处理P1就可以使用存储在缓冲区首部H1中的直接映射150直接访问存储在NVRAM 104中的盘区E1的一个或多个块中的数据。
DRAM副本写入访问
提供了用于对存储在NVRAM中的文件系统106的数据进行DRAM副本访问的示例。缓冲区首部H2包括可用于访问盘区E4的一个或多个数据块的DRAM副本的DRAM副本映射152。盘区E4的DRAM副本COPY(E4)存储在缓冲区高速缓存110中的数据缓冲区114中。响应于来自处理P2的访问盘区E4d的一个或多个块的请求,计算机系统100确定副本COPY(E4)是否已经在缓冲区高速缓存110的数据缓冲区114中维护。如果在缓冲区高速缓存110中没有维护盘区E4的副本,那么计算机系统100用盘区E4的副本填充数据缓冲区114。然后,计算机系统100用DRAM副本映射152填充缓冲区首部H2。DRAM副本映射152包括对对应数据的副本的引用,诸如对包含COPY(E4)的数据缓冲区114的引用。然后,计算机系统100将缓冲区首部H2与处理P2相关联。一旦处理P2与缓冲区首部H2相关联,处理P2就可以使用存储在缓冲区首部H1中的DRAM副本映射152来访问存储在DRAM 102中的数据缓冲区114中的盘区E4的副本COPY(E4)。
使用标准I/O过程将改变后的数据(诸如数据块和/或盘区)写回到NVRAM 104。在一些实施例中,计算机系统100的I/O层执行从数据缓冲区114到NVRAM 104的写入。I/O层可以被配置为避免破裂的块、撕裂的块和/或其它错误。
引用计数
在一些实施例中,计算机系统100为当前被授予直接访问的一个或多个盘区和/或数据块维护引用计数。可以在DRAM 102中(诸如在缓冲区高速缓存110中)维护引用计数。虽然给定的示例涉及为盘区维护的引用计数,但是可以为存储在NVRAM中的不同数据单位维护引用计数。
对于特定盘区,引用计数指示对NVRAM中当前处于活动状态的盘区的引用的数量。即,针对特定盘区的引用计数在缓冲区首部112中指示到该盘区的直接映射的数量。计算机系统100递增针对特定盘区的引用计数。在一些实施例中,引用计数由被授予直接访问的处理来递增和递减。例如,响应于被授予对盘区E1中的数据的直接访问,处理P1可以递增对缓冲区高速缓存110中的盘区E1的引用计数。当处理P1完成对数据的访问后,该处理递减针对盘区E1的引用计数。
引用计数清除
如果处理在获得对NVRAM 104中的盘区的直接访问之后但在释放访问并递减针对该盘区的引用计数之前崩溃,那么可以配置另一个处理来代表死去的处理递减引用计数。在一些实施例中,引用计数由被配置为在第一处理崩溃之后执行其它清除功能的第二处理递减。例如,当处理经由特定的缓冲区首部获得对盘区的直接访问时,该处理可以将其正在使用特定的缓冲区首部的指示存储在DRAM 102的共享存储器区域中。如果该处理崩溃,那么清理处理检查DRAM 102中的共享存储器区域,以确定崩溃的处理是否具有对任何盘区的直接访问,并递减DRAM 102中的对应引用计数。
引用计数可用于防止并发问题。在实施例中,虽然已经授予一些处理对NVRAM块的直接读取访问,但是没有其它处理可以将DRAM副本数据块缓冲区写入同一NVRAM块。这是因为否则被授予直接读取访问的处理会读取损坏的数据。在一个实施例中,数据库可以延迟发布这种写入,直到用于NVRAM块的引用计数变为零为止。
数据库实施方式
本文描述的技术可以被用于为完全存储在非易失性存储器中的数据库实现数据库系统。图2是描绘可以被用于实现一个或多个实施例的示例数据库系统体系架构的框图。数据库系统200是包括DRAM 202和NVRAM 206的计算机系统。数据库系统200在NVRAM 206中存储一个或多个数据库。数据库包括数据库数据和元数据,该元数据定义数据库的数据库对象,诸如关系表、表列、视图和触发器。在一些实施例中,数据库被存储在NVRAM 206中,作为在NVRAM 206中的盘区上的一个或多个数据文件208。每个数据文件208可以存储在零个、一个或多个盘区上,盘区可以是连续的,也可以不是连续的。
一般而言,服务器(诸如数据库服务器)是集成软件部件和计算资源(诸如计算机上的存储器和用于执行集成软件部件的处理)的分配的组合。软件和计算资源的组合专用于向服务器的客户端提供特定类型的功能。
数据库服务器204在数据库系统200上运行。数据库服务器204包括执行数据库操作的一个或多个处理,诸如P1和P2。处理P1和P2由数据库系统200和DRAM 202执行。数据库服务器204管理数据库的客户端访问,包括存储在数据文件208中的数据。例如,客户端应用可以通过向数据库服务器204提交数据库命令来与数据库服务器204进行交互,该命令使数据库服务器204对存储在数据库中的数据执行数据库操作,该数据库被持久地存储在NVRAM中的数据文件208中。
数据库访问控制
数据库系统200控制对NVRAM 206中的数据文件208的访问。访问控制可以由数据库服务器204、数据库系统200的操作系统、在数据库系统200上执行的另一个文件系统应用、在数据库系统200上执行的其它软件或其任意组合来执行。在一些实施例中,数据库系统200可以通过授予许可(诸如打开、读取、写入、删除、修改、执行、特殊许可和/或定制许可)来控制访问。数据库系统200还可以控制访问的类型,诸如直接访问和DRAM副本访问。
为了授予处理对存储在NVRAM 206中的数据文件208的直接访问,数据库系统200将直接映射250存储在缓冲区高速缓存210中缓冲区首部212的特定缓冲区首部中,并且该特定缓冲区首部与被授予直接访问的处理相关联。直接映射250包括对要访问的NVRAM 206的部分(诸如一个或多个盘区、一个或多个数据块或其一部分)的引用。例如,缓冲区首部DH1包括与数据库服务器处理DP1相关联的直接映射250。响应于来自数据库服务器处理DP1的访问盘区DE1的一个或多个块的请求,数据库系统200用直接映射250填充缓冲区首部DH1。直接映射250包括对对应数据的引用,诸如对盘区DE1、NVRAM 206中的对应存储器地址和/或识别NVRAM 206中的对应数据的其它元数据的引用。然后,数据库系统200将缓冲区首部DH1与处理DP1相关联。一旦处理DP1与缓冲区首部DH1相关联,处理DP1就可以使用直接映射250直接访问存储在NVRAM 206中的盘区DE1的一个或多个块中的数据。
为了授予处理对存储在NVRAM 206中的数据文件208中数据的DRAM副本访问,数据库系统200将DRAM副本映射252存储在缓冲区高速缓存210的特定缓冲区首部中,并且该特定缓冲区首部与授予DRAM副本访问的处理相关联。DRAM副本映射252包括对存储要访问的数据的副本的DRAM 202的一部分的引用。在一些实施例中,对应数据的DRAM副本在缓冲区高速缓存210中(诸如在一个或多个数据缓冲区214中)维护。例如,缓冲区首部DH2包括与数据库服务器处理DP2相关联的DRAM副本映射252。响应于来自数据库服务器处理DP2的访问盘区DE4的一个或多个块的请求,数据库系统200确定盘区DE4的一个或多个块的副本COPY(DE4)是否已经在缓冲区高速缓存210中维护。如果没有副本在缓冲区高速缓存210中被维护,那么数据库系统200用盘区DE4的至少一个或多个块的副本填充数据缓冲区214。然后,数据库系统200用DRAM副本映射252填充缓冲区首部DH2。DRAM副本映射252包括对对应数据的副本(例如,包含COPY(DE4)的数据缓冲区214)的引用。然后,数据库系统200将缓冲区首部DH2与数据库服务器处理DP2相关联。一旦数据库服务器处理DP2与缓冲区首部DH2相关联,数据库服务器处理DP2就可以使用DRAM副本映射252访问存储在DRAM 202中的盘区DE4的一个或多个块的副本COPY(E4)。
在一些实施例中,数据库系统200选择性地授予对存储在NVRAM 206中的数据文件208的直接读取访问,以及对存储在NVRAM 206中的数据的在DRAM 202中的副本的DRAM副本写入访问。当一个或多个数据库服务器处理请求对数据文件208的读取访问时,数据库系统200可以对这些处理中的一个或多个授予直接读取访问,从而允许处理从NVRAM 206中的(一个或多个)盘区直接读取。当一个或多个数据库服务器处理请求对存储在NVRAM 206中的数据文件208进行写入访问时,数据库系统200可以对这些处理中的一个或多个授予DRAM副本写入访问,从而允许这些处理访问和修改DRAM 202中所请求的数据的副本。
在一些实施例中,数据库系统200使用本文描述的直接映射机制和DRAM副本映射机制来实现其它许可和/或附加许可来控制访问。数据库系统200还可以检测除了直接读取访问和DRAM副本写入访问之外的许可是适当的情况。
数据库更改记录
在一些实施例中,数据库系统200将改变记录持久地存储在NVRAM 206中,诸如存储在改变日志220中。改变记录可以被用于撤消对数据库所做的改变。例如,如果需要撤消对数据库的改变,诸如在未提交事务时,那么可以处理一个或多个改变记录以确定撤消在改变记录中所描述的改变的必要步骤。同样,改变记录可以被用于重建对数据库所做的改变。例如,如果需要恢复数据文件,那么可以加载该数据文件的备份,并且可以处理一个或多个改变记录以重做自备份以来对数据库所做的改变。改变记录存储在NVRAM 206中,以确保它们对数据库服务器204的可用性,因为数据库服务器204使用改变记录来确保数据库中的ACID特性。
当对数据库进行改变时,将生成改变记录并将其永久存储在NVRAM 206中的改变日志220中。例如,当数据库服务器204的处理对数据库进行改变时,改变记录被存储在改变日志220中。改变记录可以指定被修改的数据库的一个或多个数据块以及描述对数据块所做的改变的相应改变向量。在一些实施例中,一旦对DRAM副本进行了改变,就生成改变记录,无论被改变的数据是否已复制到NVRAM 206。改变记录可以包括逻辑时间戳。如本文所使用的,术语“逻辑时间戳”包括可用于唯一地识别任何两个逻辑时间戳之间的次序的任何数据。逻辑时间戳可以基于实际时间、次序或可以用于指示次序的任何其它数据。
在一些实施例中,数据库服务器204使用改变日志220来构造一个或多个数据块的“一致读取”副本。数据块的一致读取副本反映了该数据块在特定点处(例如在特定逻辑时间戳记处)的状态。例如,当使用特定时间戳对查询做出响应时,常常使用该特定时间戳处的数据块的一致读取副本。在这些情况下,数据块被复制到DRAM 202中,诸如被复制到数据缓冲区214中。然后从改变日志220中读取改变记录并将其应用于数据缓冲区214中的数据块的DRAM副本。
分布式卷实施方式
本文描述的技术可以被用于实现分布式文件系统和/或存储在多个计算设备的非易失性存储器中的数据的分布式卷。图3是描绘可以被用于实现一个或多个实施例的示例分布式系统体系架构的框图。分布式系统300是包括多个节点302-304的多个计算设备的集群。虽然示出了两个节点,但是本文描述的技术是可缩放的,以在分布式系统300中包括任何数量的节点302-304。
分布式系统300的每个节点302-304是计算系统,其包括其自己的资源,包括DRAM306-308和NVRAM330-332。存储数据的分布式卷的分布式文件系统350跨多个节点302-304的NVRAM 330-332存储。每个节点302-304在其相应的NVRAM 330-332中将分布式文件系统350的数据的分布式卷的一部分存储为数据集334-336。
分布式文件系统350的访问可以由节点302-304中的一个或多个的一个或多个操作系统、在节点302-304中的一个或多个上执行的一个或多个文件系统应用、在节点302-304中的一个或多个上执行的其它软件、与这种软件交互的节点302-304中的一个或多个的一个或多个硬件部件和/或其任意组合来管理。当分布式系统300授予对存储在分布式文件系统350中的数据的访问(诸如直接访问和/或DRAM副本访问)时,授予直接访问的机制可以在软件和/或硬件中实现,其可以包括在节点302-304中的一个或多个上操作的操作系统、文件系统、其它软件和/或硬件。
对于每个节点302-304,访问控制可以由节点302-304的操作系统、在节点302-304上执行的另一个文件系统应用、在节点302-304上执行的其它软件或其任意组合来执行。在一些实施例中,访问控制由在节点302-304上执行的分布式卷管理器310-312执行。在一些实施例中,节点302-304存储用于本地处理的访问控制数据,包括对本地数据的访问和远程访问。
本地和远程访问控制
分布式系统300可以基于所请求的访问的类型并且基于发出请求的处理是否正在请求访问存储在相同节点302-304的NVRAM 330-332或另一个节点302-304的NVRAM 330-332中的数据来选择性地向处理授予许可(诸如直接访问和DRAM副本访问)。如本文所使用的,术语“远程”是指除当前节点(诸如发出请求的处理在其上运行的当前节点)以外的节点,和/或这种节点的资源。如本文所使用的,术语“本地”是指当前节点(诸如发出请求的处理在其上运行的节点)的资源和/或该节点的资源。
在一些实施例中,分布式系统300被配置为将直接读取访问授予请求对分布式文件系统350中的数据进行读取访问的处理,该数据存储在发出请求的处理本地的一个或多个盘区中。例如,处理A.P1被授予对存储在盘区A.E1中的数据的直接读取访问。在这种情况下,所请求的数据在数据集334中,该数据集在处理A.P1本地。即,处理A.P1在节点A302上执行,并且存储所请求的数据的盘区A.E1是节点A302的NVRAM 330中的盘区,该节点A302是与处理A.P1执行的相同节点。节点A302通过将缓冲区首部A.H1与处理A.P1相关联并将直接映射360存储在缓冲区首部A.H1中来授予处理A.P1直接读取访问。直接映射360包括对NVRAM330中盘区A.E1的引用。处理A.P1通过使用存储在与其相关联的缓冲区首部A.H1中的直接映射360来直接访问节点A 302的NVRAM 330中的盘区A.E1。
在一些实施例中,分布式系统300被配置为向请求对分布式文件系统350中的数据进行写入访问的处理授予DRAM副本写入访问,该数据存储在发出请求的处理本地的一个或多个盘区中。例如,处理A.P2被授予对存储在盘区A.E4中的数据的DRAM副本写入访问。在这种情况下,相对于处理A.P2,所请求的数据在本地数据集334中。但是,即使盘区A.E4对处理A.P2而言是本地的,因为所请求的访问是写入访问,所以也向处理A.P2授予DRAM副本访问。节点A 302通过将缓冲区首部A.H2与处理A.P2相关联并且将DRAM副本映射362存储在缓冲区首部A.H2中来向处理A.P2授予DRAM副本写入访问。DRAM副本映射362包括对存储在本地DRAM 306中的存储盘区A.E4的COPY(A.E4)的数据缓冲区326的引用。处理A.P2通过使用存储在与处理A.P2相关联的缓冲区首部A.H2中的DRAM副本映射362来访问节点A 302的DRAM306中盘区A.E4的DRAM副本。
在一些实施例中,分布式系统300被配置为向请求访问分布式文件系统350中存储在远离发出请求的处理的一个或多个盘区中的数据的处理授予DRAM副本写入访问和DRAM副本读取访问。例如,当在节点N304上执行的处理N.P1请求访问存储在节点A的NVRAM 330中的远程盘区A.E4中的数据时,分布式系统300通过将缓冲区首部N.H1与处理N.P1相关联并且将DRAM副本映射364存储在缓冲区首部N.H1中来向处理N.P1授予DRAM副本访问。DRAM副本映射364包括对本地DRAM 308中的数据缓冲区328的引用,该数据缓冲区328将盘区A.E5的COPY(A.E5)存储在DRAM 306中。副本COPY(A.E5)可以通过与节点A 302通信来生成。处理N.P1通过使用存储在与处理N.P1相关联的缓冲区首部N.H1中的DRAM副本映射364来访问节点N302的DRAM 308中的DRAM副本COPY(A.E5)。
在一些实施例中,分布式卷管理器310-312可以向处理授予对远离该处理的节点中的NVRAM盘区的远程直接读取访问,诸如经由远程直接存储器访问(RDMA)。RDMA允许对远程存储器的直接访问,而无需涉及或者本地节点或者远程节点的操作系统。
分布式系统300的任何部件都可以确定由特定处理请求的数据相对于该处理在其上执行的节点是本地的还是远程的。例如,当在特定节点上执行的处理请求特定数据时,可以通过分布式系统的一个或多个部件(诸如分布式卷管理器310-312、特定节点的另一个部件、另一个节点的另一个部件、特定处理、另一个处理,或分布式系统300的任何其它部件)来确定所请求的数据是本地的还是远程的(即,位于特定节点的本地盘区中或另一个远程节点的远程盘区中)。
分布式卷重新平衡
在一些实施例中,分布式卷管理器310-312为分布式文件系统350执行负载重新平衡功能。如本文所使用的,术语“负载平衡”是指在分布式系统的节点之间分布和/或重新分布数据。
分布式卷管理器310-312可以被配置为通过将存储在一个或多个盘区中的数据从一个节点的NVRAM移动到另一个节点的NVRAM的一个或多个盘区来执行重新平衡。可以在以下情况下执行重新平衡:当在分布式系统300中添加一个或多个节点或从分布式系统300中移除一个或多个节点时、当一个或多个节点发生故障时、或者为了重新分布访问特定节点上的特定数据的工作负载、或者在分布式文件系统重新平衡数据是适当的其它情况下。
在一些实施例中,仅当当前没有处理具有直接访问盘区的许可时才移动盘区。例如,当分布式卷管理器310-312确定应当将存储在本地节点的特定盘区内的数据移动到远程节点时,分布式卷管理器310-312检查是否没有本地处理仍然具有直接访问本地节点处的盘区的许可。在一些实施例中,分布式卷管理器310-312一直等到在本地节点处为盘区维护的引用计数递减到零为止,从而指示不再有更多本地处理将潜在地访问该本地节点处的盘区。
在一些实施例中,当确定应当将存储在特定盘区中的数据移动到远程节点时,分布式系统300防止针对该特定盘区授予附加的直接访问许可。代替地,即使请求的许可是从本地处理对特定盘区的读取访问,也必须经由其它I/O技术执行访问,诸如经由DRAM副本访问。这防止了针对特定节点的引用计数的进一步递增。
分布式数据库实施方式
本文描述的技术可以被用于为完全存储在多个计算设备的非易失性存储器中的数据库实现分布式数据库系统。例如,分布式系统300可以是分布式数据库系统,并且分布式系统300的节点302-304可以是数据库节点302-304。在一个实施例中,分布式系统300的节点302-304是数据库实例,诸如Oracle的共享盘真实应用集群(RAC)实例。
分布式系统300的分布式文件系统350可以被用于实现共享存储以模拟共享盘数据库系统。例如,分布式卷管理器310-312可以通过转发数据库块访问请求和/或通过允许经由RDMA的直接远程块访问来模拟共享存储。分布式卷管理器310-312还可以在节点之间重新平衡数据文件,并且可以为分布式数据库系统实现数据文件镜像。镜像可以被用于增加在本地NVRAM中本地存储特定数据集的节点的数量,从而可以增加对特定数据集的直接访问的可用性。
分布式数据库系统的数据文件跨节点302-304的NVRAM 330-332存储。在一些实施例中,可以授予在特定节点上执行的数据库处理直接从特定节点的NVRAM读取的直接读取访问。还可以授予该数据库处理在特定节点处访问存储在特定节点的NVRAM中的数据的DRAM副本的DRAM副本写入访问。还可以授予该数据库处理在特定节点处访问存储在不同节点的NVRAM中的数据的DRAM副本的DRAM副本写入访问和/或DRAM副本读取访问。
在一些实施例中,数据库的改变日志文件跨分布式系统300的节点302-304的NVRAM 330-332存储。改变日志文件可以在一个或多个数据库节点之间共享。可替代地和/或附加地,数据库节点可以维护与本地改变对应的一个或多个专用改变日志文件。
示例处理
图4是描绘根据一个或多个实施例的用于管理对存储在NVRAM中的持久数据的访问的处理的流程图。处理400可以由一个或多个计算设备和/或其处理执行。例如,处理400的一个或多个方框可以由计算机系统700执行。在一些实施例中,处理400的一个或多个方框由诸如计算机系统100之类的计算机系统、诸如数据库系统200之类的数据库系统和/或诸如分布式系统300之类的分布式系统来执行。
在方框402处,数据集被维护在一个或多个计算机系统的NVRAM中。数据集持久地存储在NVRAM中。
在方框404处,在DRAM中分配一个或多个缓冲区首部。在一些实施例中,缓冲区首部的池被预先分配。
在方框406处,从发出请求的处理接收访问一个或多个盘区的访问请求。在一些实施例中,处理400由发出请求的处理在其上执行的计算设备执行。
在判定框408处,确定一个或多个盘区是否是本地的。如果确定一个或多个盘区是本地的,那么处理前进到方框410。如果确定一个或多个盘区不是本地的,那么处理前进到方框414。当在单计算机系统中执行处理时,一个或多个盘区相对于该处理而言始终是本地的。
在判定框410处,确定对本地数据的请求是否是读取请求。如果确定对本地数据的请求是读取请求,那么处理前进到方框412。如果确定对本地数据的请求不是读取请求,那么处理前进到方框414。
在方框412处,向该处理授予将对一个或多个盘区的直接读取访问。例如,一个或多个缓冲区首部可以与该处理相关联,并用对一个或多个盘区的一个或多个引用来填充。
在方框414处,向该处理授予将对一个或多个盘区的DRAM副本访问。例如,一个或多个缓冲区首部可以与该处理相关联,并用对DRAM中的数据缓冲区的一个或多个引用来填充,其中数据缓冲区存储NVRAM中的一个或多个盘区中所存储的数据的DRAM副本。
在方框416处,处理400返回和/或终止。例如,处理可以继续处理另一个访问请求、将控制传递给调用处理、生成任何适当的记录或通知、在方法或函数调用之后返回,或终止。在一些实施例中,当请求对多个盘区进行访问时,针对每个盘区执行该处理。可替代地和/或附加地,处理多个访问请求。
图5是描绘根据一个或多个实施例的用于提供对存储在NVRAM中的持久数据的直接读取访问的处理的流程图。处理500可以由一个或多个计算设备和/或其处理来执行。例如,处理500的一个或多个方框可以由计算机系统700执行。在一些实施例中,处理500的一个或多个方框由诸如计算机系统100之类的计算机系统、诸如数据库系统200之类的数据库系统和/或诸如分布式系统300之类的分布式系统来执行。处理500的一个或多个方框可以由操作系统、数据库服务器、其它文件管理软件和/或卷管理器(包括分布式软件)执行。
在方框502处,系统确定授予处理对盘区的直接读取访问。在方框504处,系统将对盘区的引用存储在缓冲区首部中。在一些实施例中,系统将引用存储在来自不再与任何处理相关联的所分配的缓冲区首部的池中的未使用的缓冲区首部中。
在方框506处,系统将缓冲区首部与处理相关联。现在,处理可以使用该关联来访问缓冲区首部、读取引用并在NVRAM中定位盘区以直接读取NVRAM中的盘区。
在方框508处,系统递增针对该盘区所维持的引用计数。非零引用计数指示一个或多个处理当前具有访问盘区的许可。在一些实施例中,接收访问盘区的许可的每个处理递增针对该盘区的引用计数。
在方框510处,系统在访问终止时递减针对该盘区所维护的引用计数。例如,当处理完成访问盘区时,处理可以递减引用计数。在一些实施例中,当第一处理崩溃或以其它方式失败时,另一个处理递减引用计数。
在方框512处,处理500返回和/或终止。例如,处理可以继续处理另一个访问请求、将控制传递到调用处理、生成任何适当的记录或通知、在方法或函数调用之后返回,或终止。
图6是描绘根据一个或多个实施例的用于提供对存储在NVRAM中的持久数据的DRAM副本访问的处理的流程图。处理600可以由一个或多个计算设备和/或其处理执行。例如,处理600的一个或多个方框可以由计算机系统700执行。在一些实施例中,处理600的一个或多个方框由诸如计算机系统100之类的计算机系统、诸如数据库系统200之类的数据库系统和/或诸如分布式系统300之类的分布式系统来执行。
在方框602处,计算机系统确定应当授予处理对盘区的DRAM副本访问。例如,计算机系统可以响应于来自处理的请求而确定应当授予DRAM副本访问。
在方框604处,计算机系统生成盘区的一个或多个数据块的DRAM副本。例如,计算机系统可以将一个或多个数据块从NVRAM复制到DRAM中的数据缓冲区。当盘区位于远程NVRAM中的远程节点上时,计算机系统从远程节点检索数据块。
在方框606处,计算机系统将对DRAM副本的引用存储在缓冲区首部中。例如,计算机系统可以将对数据缓冲区的引用存储在DRAM中。
在方框608处,计算机系统将缓冲区首部与请求访问的处理相关联。处理可以使用该关联来读取存储在缓冲区首部中的引用,然后使用该引用来访问数据的DRAM副本。
在方框610处,处理600返回和/或终止。例如,处理可以继续处理另一个访问请求、将控制传递给调用处理、生成任何适当的记录或通知、在方法或函数调用之后返回,或终止。
示例数据库系统
由于本文描述的一些实施例是在数据库管理系统(DBMS)的上下文中实现的,因此本文包括对数据库管理系统的描述。DBMS管理数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久存储器机制(诸如硬盘的集合)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中,每个数据容器包含一个或多个记录。每个记录中的数据被组织成一个或多个字段。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象(在本文也被称为对象记录),并且字段被称为属性。其它数据库体系结构可以使用其它术语。
用户通过向数据库服务器提交使得数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器交互。用户可以是在客户端上运行的与数据库服务器交互的一个或多个应用。
数据库命令可以是符合数据库语言的语法的数据库语句的形式。用于表达数据库命令的一种示例语言是结构化查询语言(SQL)。SQL数据定义语言(“DDL”)指令被发布到DBMS以定义数据库结构,诸如表、视图或复杂数据类型。例如,CREATE、ALTER、DROP和RENAME是一些SQL实施方式中发现的DDL指令的常见示例。SQL数据操纵语言(“DML”)指令被发布到DBMS以管理存储在数据库结构中的数据。例如,SELECT、INSERT、UPDATE和DELETE是在一些SQL实施方式中找到的DML指令的常见示例。SQL/XML是在对象关系数据库中操纵XML数据时使用的SQL的常见扩展。
在数据库服务器内执行操作常常使得需要调用多层软件。层是软件模块的集合,其执行在数据库服务器内在某种程度上专用于该软件模块集合的功能。执行操作通常涉及调用多层软件,其中一层调用另一个层,在执行第一调用期间调用另一个层。例如,为了执行SQL语句,将调用SQL层。通常,客户端通过接口(诸如到SQL层的SQL接口)访问数据库服务器。SQL层分析并解析并执行语句。在执行语句期间,SQL层调用较低层的模块,以从表中检索特定行并更新表中的特定行。客户端(诸如复制客户端)通常经由对数据库服务器的数据库命令访问数据库,诸如以SQL语句的形式。
虽然上述示例基于Oracle的SQL,但是本文提供的技术不限于Oracle的SQL、任何专有形式的SQL、任何标准化版本或形式的SQL(ANSI标准),或任何特定形式的数据库命令或数据库语言。此外,为了简化本文包含的解释,数据库命令或其它形式的计算机指令可以被描述为执行动作,诸如创建表、修改数据和设置会话参数。但是,应当理解的是,数据库命令本身不执行任何操作,而是DBMS在执行数据库命令时执行对应的操作。通常,数据库命令通过与数据库的同步连接来执行。
示例实施方式系统
根据一些实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它存储装置或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以合并定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图7是描绘可以在其上实现实施例的计算机系统700的框图。计算机系统700包括总线702或用于传递信息的其它通信机制,以及与总线702耦合以处理信息的硬件处理器704。硬件处理器704可以是例如通用微处理器。
计算机系统700还包括耦合到总线702用于存储信息和要由处理器704执行的指令的主存储器706,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器706也可以用于存储在执行由处理器704执行的指令期间的临时变量或其它中间信息。当存储在处理器704可访问的非瞬态存储介质中时,这些指令使计算机系统700变成为执行指令中所规定的操作而定制的专用机器。
计算机系统700还包括只读存储器(ROM)708或者耦合到总线702的其它静态存储设备,用于为处理器704存储静态信息和指令。提供了存储设备710(诸如磁盘、光盘或固态驱动器)并且将其耦合到总线702,用于存储信息和指令。
计算机系统700可以经总线702耦合到诸如阴极射线管(CRT)的显示器712,以用于向计算机用户显示信息。包括字母数字和其它键的输入设备714耦合到总线702,用于向处理器704传送信息和命令选择。另一种类型的用户输入设备是诸如鼠标、轨迹球或者游标方向键的游标控制716,用于向处理器704传送方向信息和命令选择并且用于控制显示器712上的游标运动。这种输入设备通常具有在两个轴即第一个轴(例如,x)和第二个轴(例如,y)中的两个自由度,以允许设备在平面内指定位置。
计算机系统700可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合使计算机系统700成为或者把计算机系统700编程为专用机器。根据一些实施例,本文的技术由计算机系统700响应于处理器704执行包含在主存储器706中的一条或多条指令的一个或多个序列而执行。这些指令可以从诸如存储设备710的另一个存储介质读到主存储器706中。包含在主存储器706中的指令序列的执行使处理器704执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
如本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。如本文所使用的,“非易失性”是指在没有任何形式的电功率(包括外部或备用电池)的情况下保留数据的存储器的特点。非易失性存储器的示例包括例如e-prom存储器、闪存、光盘、磁盘或固态驱动器,诸如存储设备710。非易失性存储器不包括在没有其它外部电源的情况下由备用电池为其保留电源的易失性存储器。例如,具有嵌入式备用电池的耦合到板上的易失性存储器不是非易失性存储器,因为如果没有电池提供的功率,那么易失性存储器将不会保留数据。
存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线702的配线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器704以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统700本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以把数据放在总线702上。总线702把数据携带到主存储器706,处理器704从该主存储器706检索并执行指令。由主存储器706接收的指令可以可选地在被处理器704执行之前或之后存储在存储设备710上。
计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供耦合到网络链路720的双向数据通信,其中网络链路720连接到本地网络722。例如,通信接口718可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口718可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以被实现。在任何此类实施方式中,通信接口718都发送和接收携带表示各种类型信息的数字信号流的电信号、电磁信号或光信号。
网络链路720通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路720可以通过本地网络722提供到主计算机724或者到由互联网服务提供商(ISP)726操作的数据设备的连接。ISP 726又通过现在通常称为“互联网”728的全局分组数据通信网络提供数据通信服务。本地网络722和互联网728都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路720上并通过通信接口718的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统700或者携带来自计算机系统700的数字数据。
计算机系统700可以通过(一个或多个)网络、网络链路720和通信接口718发送消息和接收数据,包括程序代码。在互联网示例中,服务器730可以通过互联网728、ISP 726、本地网络722和通信接口718发送对应于程序的所请求代码。
接收到的代码可以在其被接收到时由处理器704执行,和/或存储在存储设备710或其它非易失性存储装置中,用于以后执行。
软件概述
图8是可以被用于控制图7的计算机系统700的操作的基本软件系统800的框图。软件系统800及其部件(包括它们的连接、关系和功能)仅意在是示例性的,而不意在限制(一个或多个)示例实施例的实施方式。适于实现(一个或多个)示例实施例的其它软件系统可以具有不同的部件,包括具有不同的连接、关系和功能的部件。
提供软件系统800是为了指导计算机系统700的操作。可以存储在系统存储器(RAM)706中和固定存储装置(例如,硬盘或闪存)710上的软件系统800包括内核或操作系统(OS)810。
OS810管理计算机操作的低级方面,包括管理处理的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为802A、802B、802C…802N的一个或多个应用可以被“加载”(例如,从固定存储装置710传送到存储器706中),以由系统800执行。打算在计算机系统700上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令的集合,例如用于从互联网位置(例如,web服务器、应用商店或其它在线服务)进行下载和安装。
软件系统800包括图形用户界面(GUI)815,用于以图形(例如,“指向和点击”或“触摸手势”)方式来接收用户命令和数据。这些输入进而可以由系统800根据来自操作系统810和/或(一个或多个)应用802的指令来起作用。GUI815还用于显示来自OS810和(一个或多个)应用802的操作的结果,由此用户可以供给附加输入或终止会话(例如,注销)。
OS810可以直接在计算机系统700的裸硬件820(例如,(一个或多个)处理器704)上执行。可替代地,可以在裸硬件820和OS810之间插入管理程序或虚拟机监视器(VMM)830。在这种配置中,VMM830充当OS810与计算机系统700的裸硬件820之间的软件“缓冲”或虚拟化层。
VMM830实例化并运行一个或多个虚拟机实例(“访客机器”)。每个访客机器包括被设计为在访客操作系统上执行的“访客”操作系统(诸如OS810),和一个或多个应用(诸如(一个或多个)应用802)。VMM830向访客操作系统呈现虚拟操作系统平台并管理访客操作系统的执行。
在一些情况下,VMM830可以允许访客操作系统像直接在计算机系统700的裸硬件820上运行一样来运行。在这些情况下,被配置为直接在裸硬件820上执行的访客操作系统的相同版本也可以在VMM830上执行而无需修改或重新配置。换句话说,在一些情况下,VMM830可以向访客操作系统提供完整的硬件和CPU虚拟化。
在其它情况下,为了提高效率,可以将访客操作系统专门设计或配置为在VMM830上执行。在这些情况下,访客操作系统“知道”它在虚拟机监视器上执行。换句话说,在一些情况下,VMM830可以向客户操作系统提供半虚拟化。
计算机系统处理包括硬件处理器时间的分配和存储器(物理和/或虚拟)的分配,存储器的分配用于存储由硬件处理器执行的指令、用于存储由执行指令的硬件处理器生成的数据和/或用于在计算机系统处理不运行时在硬件处理器时间的分配之间存储硬件处理器状态(例如,寄存器的内容)。计算机系统处理在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。
多个线程可以在处理中运行。每个线程还包括硬件处理时间的分配,但共享对分配给该处理的存储器的访问。当线程不运行时,存储器被用于存储分配之间的处理器的内容。术语“线程”也可以被用于指不运行的多个线程中的计算机系统处理。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实施方式到另一种实施方式不同。因此,说明书和附图被认为是说明性的而不是限制性的。本发明的范围的唯一且排他指示,以及申请人所预期的作为本发明的范围的内容,是从本申请产生的权利要求集合的书面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。
Claims (13)
1.一种用于访问维持在非易失性RAM中的数据块的方法,包括:
在计算设备的非易失性随机存取存储器NVRAM中的一个或多个盘区中维护数据块的集合;
在所述计算设备的动态随机存取存储器DRAM中分配多个数据缓冲区;
在所述计算设备的所述DRAM中分配多个缓冲区首部;
在所述多个缓冲区首部的缓冲区首部的第一子集的每一个中存储到所述数据块的集合的一个或多个数据块的相应DRAM副本的映射;
在所述多个缓冲区首部的缓冲区首部的第二子集的每一个中存储到在所述NVRAM中的所述数据块的集合的相应一个或多个数据块的映射;
确定针对所述一个或多个盘区中的第一盘区中的一个或多个第一数据块的访问请求是否是读取请求,所述访问请求由在所述计算设备上执行的第一处理做出;以及
如果所述访问请求是读取请求,至少通过以下操作授予所述第一处理对NVRAM中的一个或多个第一数据块的直接读取访问:
在所述多个缓冲区首部的第一缓冲区首部中存储到所述NVRAM中的第一盘区的一个或多个第一数据块的特定映射,以及
将所述第一缓冲区首部与所述第一处理相关联,以及
所述第一处理使用所述第一缓冲区首部直接访问所述NVRAM中的所述一个或多个第一数据块;并且
如果所述访问请求不是读取请求,则至少通过以下来授予所述第一处理写入访问:
在所述多个数据缓冲区的第一数据缓冲区中生成所述一个或多个第一数据块的第一DRAM副本,
在所述第一缓冲区首部中存储到所述一个或多个第一数据块的第一DRAM副本的映射,
将所述第一缓冲区首部与所述第一处理相关联,以及
所述第一处理使用所述第一缓冲区首部来访问所述第一数据缓冲区中的所述一个或多个第一数据块。
2.如权利要求1所述的方法,其中数据块的集合与在所述计算设备的NVRAM中实现的持久文件存储系统中的文件对应。
3.如权利要求1所述的方法,还包括:
响应于在所述计算设备上执行的第二处理的访问所述一个或多个盘区中的第二个盘区中的一个或多个第二数据块的写入请求,至少通过以下操作授予第二处理写入访问:
在所述DRAM中生成所述一个或多个第二数据块的DRAM副本,
在所述多个缓冲区首部的第二缓冲区首部中存储到所述一个或多个第二数据块的DRAM副本的映射,
将所述第二缓冲区首部与所述第二处理相关联,以及
所述第二处理使用所述第二缓冲区首部访问所述DRAM中的所述一个或多个第二数据块。
4.如权利要求3所述的方法,其中所述数据块的集合与永久存储在所述NVRAM中的数据库对应,其中所述第一处理和所述第二处理是数据库服务器处理,所述方法还包括:
由所述第二处理通过修改所述一个或多个第二数据块的DRAM副本来执行数据库事务的一个或多个更新操作;以及
在所述数据库事务完成之后,提交所述数据库事务。
5.如权利要求1所述的方法,还包括响应于授予所述第一处理对所述一个或多个第一数据块的直接读取访问而递增针对所述一个或多个第一数据块的第一引用计数,所述第一引用计数指示对所述一个或多个第一数据块具有直接读取访问的处理的数量。
6.如权利要求5所述的方法,还包括通过以下操作来修改所述数据块的集合中的特定数据块:
检查针对特定数据块的引用计数,所述引用计数指示对所述特定数据块具有直接读取访问的处理的数量;以及
仅在确定针对所述特定数据块的引用计数为零之后才更新所述NVRAM中的所述特定数据块。
7.如权利要求1所述的方法,还包括响应于在远程计算设备上执行的第三处理的访问属于所述计算设备的NVRAM中的所述一个或多个盘区中的第三盘区的一个或多个第三数据块的读取请求而至少通过以下操作向所述第三处理授予对所述一个或多个第三数据块的读取访问:
向所述远程计算设备传输所述一个或多个第三数据块;
由所述远程计算设备在所述远程计算设备的DRAM中生成所述一个或多个第三数据块的DRAM副本;
在所述远程计算设备处的DRAM中的多个缓冲区首部的特定缓冲区首部中,存储对所述远程计算设备处的所述一个或多个第三数据块的DRAM副本的映射;以及
将所述特定缓冲区首部与所述第三处理相关联。
8.如权利要求1所述的方法,其中所述数据块的集合与在包括所述计算设备的分布式计算系统的多个计算设备的NVRAM中实现的分布式文件系统中的文件对应。
9.如权利要求8所述的方法,还包括在所述多个计算设备上执行分布式数据库系统,其中所述文件是数据库系统文件。
10.如权利要求8所述的方法,还包括在所述分布式文件系统中重新分发至少一个数据块,其中重新分发包括:
选择所述一个或多个盘区中的特定盘区,以从所述计算设备的NVRAM移动到所述分布式计算系统的不同计算设备的NVRAM;
检查针对特定盘区的一个或多个数据块的一个或多个引用计数,所述一个或多个引用计数指示对所述特定盘区的一个或多个数据块具有直接读取访问的处理的数量;以及
仅在确定所述一个或多个引用计数为零之后才将所述特定盘区移动到所述不同计算设备的NVRAM。
11.一个或者多个非瞬态存储介质,所述非瞬态存储介质存储有指令,所述指令在被一个或多个计算设备执行时,使得如权利要求1-10中任一项所述的方法被执行。
12.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个非瞬态存储介质,所述非瞬态存储介质存储有指令,所述指令在被一个或多个计算设备执行时,使得如权利要求1-10中任一项所述的方法被执行。
13.一种包括用于执行如权利要求1-10中任一项所述的方法的装置的设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/693,273 | 2017-08-31 | ||
US15/693,273 US10719446B2 (en) | 2017-08-31 | 2017-08-31 | Directly mapped buffer cache on non-volatile memory |
PCT/US2018/048939 WO2019046632A1 (en) | 2017-08-31 | 2018-08-30 | BUFFER MEMORY DIRECTLY MAPPED ON NON-VOLATILE MEMORY |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111033481A CN111033481A (zh) | 2020-04-17 |
CN111033481B true CN111033481B (zh) | 2023-10-27 |
Family
ID=63684483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880053507.XA Active CN111033481B (zh) | 2017-08-31 | 2018-08-30 | 非易失性存储器上的直接映射的缓冲区高速缓存 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10719446B2 (zh) |
EP (1) | EP3676724B1 (zh) |
KR (1) | KR20200045488A (zh) |
CN (1) | CN111033481B (zh) |
CA (1) | CA3068875C (zh) |
MX (1) | MX2020002334A (zh) |
WO (1) | WO2019046632A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100132B2 (en) * | 2018-10-11 | 2021-08-24 | International Business Machines Corporation | Intelligent space release in asynchronous mirror journal volumes |
US11204714B2 (en) * | 2018-10-23 | 2021-12-21 | Microsoft Technology Licensing, Llc | Hybrid use of non-volatile memory as storage device and cache |
US11030109B2 (en) * | 2019-06-06 | 2021-06-08 | Samsung Electronics Co., Ltd. | Mechanisms for a contention free lookup in a cache with concurrent insertions and deletions |
US11144505B2 (en) * | 2019-06-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Data operations using a cache table in a file system |
CN110457261B (zh) * | 2019-08-06 | 2023-11-10 | 深圳市腾讯计算机系统有限公司 | 数据访问方法、装置及服务器 |
US11016849B2 (en) | 2019-09-04 | 2021-05-25 | Red Hat, Inc. | Kernel software raid support for direct-access file systems |
EP4135113A1 (en) | 2020-04-14 | 2023-02-15 | LG Energy Solution, Ltd. | Separator for electrochemical device and method for manufacturing same |
US11537479B2 (en) | 2020-04-29 | 2022-12-27 | Memverge, Inc. | Memory image capture |
US11314643B2 (en) * | 2020-07-21 | 2022-04-26 | Micron Technology, Inc. | Enhanced duplicate write data tracking for cache memory |
CN113204573B (zh) * | 2021-05-21 | 2023-07-07 | 珠海金山数字网络科技有限公司 | 一种数据读写访问系统及方法 |
US11947568B1 (en) | 2021-09-30 | 2024-04-02 | Amazon Technologies, Inc. | Working set ratio estimations of data items in a sliding time window for dynamically allocating computing resources for the data items |
US20240045613A1 (en) * | 2022-08-03 | 2024-02-08 | Oracle International Corporation | Increasing oltp throughput by improving the performance of logging using persistent memory storage |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282920A (zh) * | 1999-06-18 | 2001-02-07 | 凤凰技术有限公司 | 安全使用基本输入输出系统服务的系统和方法 |
US7647443B1 (en) * | 2007-04-13 | 2010-01-12 | American Megatrends, Inc. | Implementing I/O locks in storage systems with reduced memory and performance costs |
CN101784996A (zh) * | 2007-06-29 | 2010-07-21 | 赛帕顿有限公司 | 仿效存储系统 |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
JP2012155430A (ja) * | 2011-01-25 | 2012-08-16 | Sony Corp | メモリシステムおよびその動作方法 |
CN103959247A (zh) * | 2011-10-03 | 2014-07-30 | 思科技术公司 | 虚拟化计算机程序中的安全 |
CN104050056A (zh) * | 2013-03-15 | 2014-09-17 | 希捷科技有限公司 | 多存储介质设备的文件系统备份 |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105378673A (zh) * | 2013-01-04 | 2016-03-02 | 微软技术许可有限责任公司 | 零复制高速缓存 |
CN105408880A (zh) * | 2013-07-31 | 2016-03-16 | 甲骨文国际公司 | 对共享存储装置的持久存储器的直接访问 |
CN105917318A (zh) * | 2012-07-24 | 2016-08-31 | 英特尔公司 | 用于实现基于ssd的i/o高速缓存的系统和方法 |
CN107533442A (zh) * | 2015-04-29 | 2018-01-02 | 高通股份有限公司 | 用于对异构系统存储器中的存储器功率消耗进行优化的系统和方法 |
Family Cites Families (307)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4425615A (en) | 1980-11-14 | 1984-01-10 | Sperry Corporation | Hierarchical memory system having cache/disk subsystem with command queues for plural disks |
US4881166A (en) | 1987-07-24 | 1989-11-14 | Amoco Corporation | Method for consistent multidatabase transaction processing |
EP0389151A3 (en) | 1989-03-22 | 1992-06-03 | International Business Machines Corporation | System and method for partitioned cache memory management |
US5095421A (en) | 1989-08-17 | 1992-03-10 | International Business Machines Corporation | Transaction processing facility within an operating system environment |
US5388196A (en) | 1990-09-07 | 1995-02-07 | Xerox Corporation | Hierarchical shared books with database |
JP3516344B2 (ja) | 1990-10-22 | 2004-04-05 | 株式会社日立製作所 | 分散処理システムの多重データ処理方法 |
US5263156A (en) | 1990-12-20 | 1993-11-16 | Bell Communications Research, Inc. | Parallel, distributed optimistic concurrency control certification using hardware filtering |
US5287496A (en) | 1991-02-25 | 1994-02-15 | International Business Machines Corporation | Dynamic, finite versioning for concurrent transaction and query processing |
JPH04328657A (ja) | 1991-04-30 | 1992-11-17 | Toshiba Corp | キャッシュメモリ |
US5369757A (en) | 1991-06-18 | 1994-11-29 | Digital Equipment Corporation | Recovery logging in the presence of snapshot files by ordering of buffer pool flushing |
US5333316A (en) | 1991-08-16 | 1994-07-26 | International Business Machines Corporation | Locking and row by row modification of a database stored in a single master table and multiple virtual tables of a plurality of concurrent users |
EP0541281B1 (en) | 1991-11-04 | 1998-04-29 | Commvault Systems, Inc. | Incremental-computer-file backup using signatures |
US5355477A (en) | 1991-12-23 | 1994-10-11 | International Business Machines Corporation | Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning |
WO1993018461A1 (en) | 1992-03-09 | 1993-09-16 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
US5423037A (en) | 1992-03-17 | 1995-06-06 | Teleserve Transaction Technology As | Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes |
US5555404A (en) | 1992-03-17 | 1996-09-10 | Telenor As | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas |
US5241675A (en) | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5454102A (en) | 1993-01-19 | 1995-09-26 | Canon Information Systems, Inc. | Method and apparatus for transferring structured data using a self-generating node network |
US5332265A (en) | 1993-01-22 | 1994-07-26 | Minnesota Mining And Manufacturing Company | Advertising assembly |
US5553279A (en) | 1993-10-08 | 1996-09-03 | International Business Machines Corporation | Lossless distribution of time series data in a relational data base network |
US5613113A (en) | 1993-10-08 | 1997-03-18 | International Business Machines Corporation | Consistent recreation of events from activity logs |
US5642503A (en) | 1993-12-15 | 1997-06-24 | Microsoft Corporation | Method and computer system for implementing concurrent accesses of a database record by multiple users |
US5581753A (en) | 1994-09-28 | 1996-12-03 | Xerox Corporation | Method for providing session consistency guarantees |
US5574906A (en) | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
US5566315A (en) | 1994-12-30 | 1996-10-15 | Storage Technology Corporation | Process of predicting and controlling the use of cache memory in a computer system |
WO1997004389A1 (en) | 1995-07-20 | 1997-02-06 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5774643A (en) | 1995-10-13 | 1998-06-30 | Digital Equipment Corporation | Enhanced raid write hole protection and recovery |
US5870758A (en) | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6182247B1 (en) | 1996-10-28 | 2001-01-30 | Altera Corporation | Embedded logic analyzer for a programmable logic device |
US5806076A (en) | 1996-10-29 | 1998-09-08 | Oracle Corporation | Tracking dependencies between transactions in a database |
US5987506A (en) | 1996-11-22 | 1999-11-16 | Mangosoft Corporation | Remote access and geographically distributed computers in a globally addressable storage environment |
US5870761A (en) | 1996-12-19 | 1999-02-09 | Oracle Corporation | Parallel queue propagation |
US5943689A (en) | 1997-03-31 | 1999-08-24 | Emc Corporation | On-demand initialization of memory locations as they are requested command |
US5956731A (en) | 1997-04-23 | 1999-09-21 | Oracle Corporation | Sharing snapshots for consistent reads |
US6243838B1 (en) * | 1997-05-13 | 2001-06-05 | Micron Electronics, Inc. | Method for automatically reporting a system failure in a server |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US5951695A (en) | 1997-07-25 | 1999-09-14 | Hewlett-Packard Company | Fast database failover |
US5953719A (en) | 1997-09-15 | 1999-09-14 | International Business Machines Corporation | Heterogeneous database system with dynamic commit procedure control |
US6014669A (en) | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
US5924096A (en) | 1997-10-15 | 1999-07-13 | Novell, Inc. | Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand |
US7328350B2 (en) | 2001-03-29 | 2008-02-05 | Arcot Systems, Inc. | Method and apparatus for secure cryptographic key generation, certification and use |
US6192377B1 (en) | 1998-05-13 | 2001-02-20 | Oracle Corporation | Method and apparatus for determing whether a transaction can use a version of a data item |
US7756986B2 (en) | 1998-06-30 | 2010-07-13 | Emc Corporation | Method and apparatus for providing data management for a storage system coupled to a network |
US6427187B2 (en) | 1998-07-31 | 2002-07-30 | Cache Flow, Inc. | Multiple cache communication |
US6353835B1 (en) | 1998-08-03 | 2002-03-05 | Lucent Technologies Inc. | Technique for effectively maintaining materialized views in a data warehouse |
US6393485B1 (en) | 1998-10-27 | 2002-05-21 | International Business Machines Corporation | Method and apparatus for managing clustered computer systems |
US6370622B1 (en) | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6516327B1 (en) | 1998-12-24 | 2003-02-04 | International Business Machines Corporation | System and method for synchronizing data in multiple databases |
US6457105B1 (en) | 1999-01-15 | 2002-09-24 | Hewlett-Packard Company | System and method for managing data in an asynchronous I/O cache memory |
US6122630A (en) | 1999-06-08 | 2000-09-19 | Iti, Inc. | Bidirectional database replication scheme for controlling ping-ponging |
US6839751B1 (en) | 1999-06-30 | 2005-01-04 | Hi/Fn, Inc. | Re-using information from data transactions for maintaining statistics in network monitoring |
US6401104B1 (en) | 1999-07-03 | 2002-06-04 | Starfish Software, Inc. | System and methods for synchronizing datasets using cooperation among multiple synchronization engines |
WO2001016756A1 (fr) | 1999-08-31 | 2001-03-08 | Fujitsu Limited | Systeme de fichier et procede d'acces a un fichier |
US7024656B1 (en) | 1999-11-29 | 2006-04-04 | Oracle International Corporation | Persistent agents |
US6728823B1 (en) | 2000-02-18 | 2004-04-27 | Hewlett-Packard Development Company, L.P. | Cache connection with bypassing feature |
US7062483B2 (en) | 2000-05-18 | 2006-06-13 | Endeca Technologies, Inc. | Hierarchical data-driven search and navigation system and method for information retrieval |
US20020038384A1 (en) | 2000-06-16 | 2002-03-28 | Khan Umair A. | System, method and computer program product for transcoding tabular content for display on thin client devices by way of content addressing |
US7069324B1 (en) | 2000-06-30 | 2006-06-27 | Cisco Technology, Inc. | Methods and apparatus slow-starting a web cache system |
US20020194483A1 (en) * | 2001-02-25 | 2002-12-19 | Storymail, Inc. | System and method for authorization of access to a resource |
US6526483B1 (en) | 2000-09-20 | 2003-02-25 | Broadcom Corporation | Page open hint in transactions |
US6745297B2 (en) | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US6611898B1 (en) | 2000-12-22 | 2003-08-26 | Convergys Customer Management Group, Inc. | Object-oriented cache management system and method |
US6691139B2 (en) | 2001-01-31 | 2004-02-10 | Hewlett-Packard Development Co., Ltd. | Recreation of archives at a disaster recovery site |
US20020165724A1 (en) | 2001-02-07 | 2002-11-07 | Blankesteijn Bartus C. | Method and system for propagating data changes through data objects |
US7548898B1 (en) | 2001-02-28 | 2009-06-16 | Teradata Us, Inc. | Parallel migration of data between systems |
US7177866B2 (en) | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US7464113B1 (en) | 2001-05-10 | 2008-12-09 | Oracle International Corporations | Disaster recovery with bounded data loss |
US6574717B1 (en) | 2001-05-31 | 2003-06-03 | Oracle Corporation | Techniques for time-based retention of a reusable resource |
US6920533B2 (en) | 2001-06-27 | 2005-07-19 | Intel Corporation | System boot time reduction method |
US7031994B2 (en) | 2001-08-13 | 2006-04-18 | Sun Microsystems, Inc. | Matrix transposition in a computer system |
US6799188B2 (en) | 2001-08-31 | 2004-09-28 | Borland Software Corporation | Transaction processing system providing improved methodology for two-phase commit decision |
US7290017B1 (en) | 2001-09-20 | 2007-10-30 | Emc Corporation | System and method for management of data replication |
US6886077B2 (en) | 2001-12-21 | 2005-04-26 | International Business Machines Corporation | Context-sensitive caching |
US6993631B2 (en) | 2002-05-15 | 2006-01-31 | Broadcom Corporation | L2 cache maintaining local ownership of remote coherency blocks |
US7222136B1 (en) | 2002-05-23 | 2007-05-22 | Oracle International Corporation | Communicating data dictionary information of database objects through a redo stream |
US7415723B2 (en) | 2002-06-11 | 2008-08-19 | Pandya Ashish A | Distributed network security system and a hardware processor therefor |
US6946715B2 (en) | 2003-02-19 | 2005-09-20 | Micron Technology, Inc. | CMOS image sensor and method of fabrication |
US7210006B2 (en) | 2002-06-28 | 2007-04-24 | Sun Microsystems, Inc. | Computer system supporting read-to-write-back transactions for I/O devices |
US7076508B2 (en) | 2002-08-12 | 2006-07-11 | International Business Machines Corporation | Method, system, and program for merging log entries from multiple recovery log files |
US7461147B1 (en) | 2002-08-26 | 2008-12-02 | Netapp. Inc. | Node selection within a network based on policy |
US7051161B2 (en) | 2002-09-17 | 2006-05-23 | Nokia Corporation | Memory admission control based on object size or request frequency |
US7337214B2 (en) | 2002-09-26 | 2008-02-26 | Yhc Corporation | Caching, clustering and aggregating server |
US6922754B2 (en) | 2002-12-09 | 2005-07-26 | Infabric Technologies, Inc. | Data-aware data flow manager |
JP4158534B2 (ja) | 2003-01-21 | 2008-10-01 | 修平 西山 | 分散型データベースシステム |
US6965979B2 (en) | 2003-01-29 | 2005-11-15 | Pillar Data Systems, Inc. | Methods and systems of host caching |
JP4579501B2 (ja) | 2003-03-27 | 2010-11-10 | 富士通株式会社 | アプリケーションサーバおよびアプリケーションプログラム |
US20040199552A1 (en) | 2003-04-01 | 2004-10-07 | Microsoft Corporation | Transactionally consistent change tracking for databases |
US7330999B2 (en) | 2003-04-23 | 2008-02-12 | Dot Hill Systems Corporation | Network storage appliance with integrated redundant servers and storage controllers |
US7330862B1 (en) | 2003-04-25 | 2008-02-12 | Network Appliance, Inc. | Zero copy write datapath |
US7610348B2 (en) | 2003-05-07 | 2009-10-27 | International Business Machines | Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed |
US7287034B2 (en) | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US7370082B2 (en) | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US20040230753A1 (en) | 2003-05-16 | 2004-11-18 | International Business Machines Corporation | Methods and apparatus for providing service differentiation in a shared storage environment |
US7159076B2 (en) | 2003-06-24 | 2007-01-02 | Research In Motion Limited | Cache operation with non-cache memory |
US7243088B2 (en) | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
JP2007508623A (ja) | 2003-10-08 | 2007-04-05 | ユニシス コーポレーション | 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ |
US7769802B2 (en) | 2003-12-04 | 2010-08-03 | Microsoft Corporation | Systems and methods that employ correlated synchronous-on-asynchronous processing |
US7441006B2 (en) | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
US7693339B2 (en) | 2003-12-17 | 2010-04-06 | Andreas Wittenstein | Method and apparatus for faster-than-real-time lossless compression and decompression of images |
GB2409301B (en) | 2003-12-18 | 2006-12-06 | Advanced Risc Mach Ltd | Error correction within a cache memory |
US7421562B2 (en) | 2004-03-01 | 2008-09-02 | Sybase, Inc. | Database system providing methodology for extended memory support |
US20050198062A1 (en) | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
US7966293B1 (en) | 2004-03-09 | 2011-06-21 | Netapp, Inc. | System and method for indexing a backup using persistent consistency point images |
US7660945B1 (en) | 2004-03-09 | 2010-02-09 | Seagate Technology, Llc | Methods and structure for limiting storage device write caching |
US7165144B2 (en) | 2004-03-19 | 2007-01-16 | Intel Corporation | Managing input/output (I/O) requests in a cache memory system |
GB0414291D0 (en) | 2004-06-25 | 2004-07-28 | Ibm | Methods, apparatus and computer programs for data replication |
US7596571B2 (en) | 2004-06-30 | 2009-09-29 | Technorati, Inc. | Ecosystem method of aggregation and search and related techniques |
US20060010130A1 (en) | 2004-07-09 | 2006-01-12 | Avraham Leff | Method and apparatus for synchronizing client transactions executed by an autonomous client |
US7395258B2 (en) | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
JP2006092124A (ja) | 2004-09-22 | 2006-04-06 | Fujitsu Ltd | 記憶装置、記憶制御方法および記憶制御プログラム |
US8359429B1 (en) | 2004-11-08 | 2013-01-22 | Symantec Operating Corporation | System and method for distributing volume status information in a storage system |
US7822715B2 (en) | 2004-11-16 | 2010-10-26 | Petruzzo Stephen E | Data mirroring method |
US7734582B2 (en) | 2004-11-16 | 2010-06-08 | International Business Machines Corporation | Apparatus, system, and method for cache synchronization |
EP1684194A1 (en) | 2005-01-25 | 2006-07-26 | Sap Ag | A central lock service for database applications |
US7580406B2 (en) | 2004-12-31 | 2009-08-25 | Intel Corporation | Remote direct memory access segment generation by a network controller |
KR100759427B1 (ko) | 2005-03-17 | 2007-09-20 | 삼성전자주식회사 | 전력 소모가 적은 하드디스크 드라이버 및 이를 구비한 정보처리 시스템, 그리고 그들의 데이터 입출력 방법 |
US7546431B2 (en) | 2005-03-21 | 2009-06-09 | Emc Corporation | Distributed open writable snapshot copy facility using file migration policies |
US8126870B2 (en) | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US7636814B1 (en) | 2005-04-28 | 2009-12-22 | Symantec Operating Corporation | System and method for asynchronous reads of old data blocks updated through a write-back cache |
US7383392B2 (en) | 2005-05-31 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Performing read-ahead operation for a direct input/output request |
JP2007007881A (ja) | 2005-06-28 | 2007-01-18 | Komori Corp | 印刷機のインキ装置 |
US7496589B1 (en) | 2005-07-09 | 2009-02-24 | Google Inc. | Highly compressed randomly accessed storage of large tables with arbitrary columns |
JP4414381B2 (ja) | 2005-08-03 | 2010-02-10 | 富士通株式会社 | ファイル管理プログラム、ファイル管理装置、ファイル管理方法 |
US20070067575A1 (en) | 2005-09-20 | 2007-03-22 | Morris John M | Method of managing cache memory based on data temperature |
US20070078914A1 (en) | 2005-09-30 | 2007-04-05 | International Business Machines Corporation | Method, apparatus and program storage device for providing a centralized policy based preallocation in a distributed file system |
US8688800B2 (en) | 2005-10-05 | 2014-04-01 | Hewlett-Packard Development Company, L.P. | Remote configuration of persistent memory system ATT tables |
US7984180B2 (en) | 2005-10-20 | 2011-07-19 | Solarflare Communications, Inc. | Hashing algorithm for network receive filtering |
US7558290B1 (en) | 2005-12-16 | 2009-07-07 | Narus, Inc. | Method and apparatus of data compression for computer networks |
DE112005003736T5 (de) * | 2005-12-29 | 2008-11-13 | Intel Corporation, Santa Clara | Virtueller Übersetzungspuffer |
US8117153B2 (en) | 2006-03-28 | 2012-02-14 | Oracle America, Inc. | Systems and methods for a distributed cache |
US8266472B2 (en) | 2006-05-03 | 2012-09-11 | Cisco Technology, Inc. | Method and system to provide high availability of shared data |
US7506119B2 (en) | 2006-05-04 | 2009-03-17 | International Business Machines Corporation | Complier assisted victim cache bypassing |
US8909871B2 (en) | 2006-08-03 | 2014-12-09 | International Business Machines Corporation | Data processing system and method for reducing cache pollution by write stream memory access patterns |
US9195695B2 (en) | 2006-09-15 | 2015-11-24 | Ibm International Group B.V. | Technique for compressing columns of data |
US7627612B2 (en) | 2006-09-28 | 2009-12-01 | Emc Israel Development Center, Ltd. | Methods and apparatus for optimal journaling for continuous data replication |
US8683139B2 (en) | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US7693886B1 (en) | 2006-12-15 | 2010-04-06 | Netapp, Inc. | Delta query technique |
US7716517B2 (en) | 2006-12-21 | 2010-05-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Distributed platform management for high availability systems |
US20080209009A1 (en) | 2007-01-18 | 2008-08-28 | Niraj Katwala | Methods and systems for synchronizing cached search results |
US8706687B2 (en) | 2007-01-24 | 2014-04-22 | Hewlett-Packard Development Company, L.P. | Log driven storage controller with network persistent memory |
US20080201234A1 (en) | 2007-02-16 | 2008-08-21 | Microsoft Corporation | Live entities internet store service |
US20080222111A1 (en) | 2007-03-07 | 2008-09-11 | Oracle International Corporation | Database system with dynamic database caching |
US8397038B2 (en) | 2007-03-22 | 2013-03-12 | Vmware, Inc. | Initializing file data blocks |
US7836262B2 (en) | 2007-06-05 | 2010-11-16 | Apple Inc. | Converting victim writeback to a fill |
US9146922B2 (en) | 2007-07-26 | 2015-09-29 | Oracle International Corporation | Mobile multimedia proxy database |
US7774568B2 (en) | 2007-08-13 | 2010-08-10 | Novell, Inc. | Clustered snapshots in networks |
US8295306B2 (en) | 2007-08-28 | 2012-10-23 | Cisco Technologies, Inc. | Layer-4 transparent secure transport protocol for end-to-end application protection |
US7885953B2 (en) | 2007-10-03 | 2011-02-08 | International Business Machines Corporation | Off-loading star join operations to a storage server |
US20090287737A1 (en) | 2007-10-31 | 2009-11-19 | Wayne Hammerly | Architecture for enabling rapid database and application development |
US7570451B2 (en) | 2007-12-12 | 2009-08-04 | Seagate Technology Llc | Servo architecture for high areal density data storage |
US7890504B2 (en) | 2007-12-19 | 2011-02-15 | Netapp, Inc. | Using the LUN type for storage allocation |
US8037110B2 (en) | 2007-12-27 | 2011-10-11 | Microsoft Corporation | Business data access client for online/offline client use |
US7930497B2 (en) | 2008-01-10 | 2011-04-19 | International Business Machines Corporation | Using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship |
US20090193189A1 (en) | 2008-01-30 | 2009-07-30 | Formation, Inc. | Block-based Storage System Having Recovery Memory to Prevent Loss of Data from Volatile Write Cache |
US8401994B2 (en) | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
US8306951B2 (en) | 2009-09-18 | 2012-11-06 | Oracle International Corporation | Automated integrated high availability of the in-memory database cache and the backend enterprise database |
US8839192B2 (en) | 2008-03-12 | 2014-09-16 | International Business Machines Corporation | System and method for presentation of cross organizational applications |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
JP4973560B2 (ja) | 2008-03-26 | 2012-07-11 | 富士通株式会社 | サーバおよび接続先サーバ切替制御方法 |
US7827187B2 (en) | 2008-04-04 | 2010-11-02 | International Business Machines Corporation | Frequency partitioning: entropy compression with fixed size fields |
US7836119B2 (en) | 2008-04-30 | 2010-11-16 | International Business Machines Corporation | Distributed execution model for cross-organizational declarative web applications |
US8775718B2 (en) | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US7962458B2 (en) | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US8301593B2 (en) | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US20100017556A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporationm U.S.A. | Non-volatile memory storage system with two-stage controller architecture |
US7991775B2 (en) | 2008-08-08 | 2011-08-02 | Oracle International Corporation | Global checkpoint SCN |
US8099440B2 (en) | 2008-08-15 | 2012-01-17 | International Business Machines Corporation | Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering |
US7930361B2 (en) * | 2008-09-15 | 2011-04-19 | Dell Products L.P. | System and method for management of remotely shared data |
US9256542B1 (en) | 2008-09-17 | 2016-02-09 | Pmc-Sierra Us, Inc. | Adaptive intelligent storage controller and associated methods |
US10430338B2 (en) | 2008-09-19 | 2019-10-01 | Oracle International Corporation | Selectively reading data from cache and primary storage based on whether cache is overloaded |
US8145806B2 (en) | 2008-09-19 | 2012-03-27 | Oracle International Corporation | Storage-side storage request management |
US8868831B2 (en) | 2009-09-14 | 2014-10-21 | Oracle International Corporation | Caching data between a database server and a storage system |
AU2010276462B1 (en) | 2010-12-27 | 2012-01-12 | Limelight Networks, Inc. | Partial object caching |
US8244984B1 (en) | 2008-12-08 | 2012-08-14 | Nvidia Corporation | System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy |
US8204859B2 (en) | 2008-12-10 | 2012-06-19 | Commvault Systems, Inc. | Systems and methods for managing replicated database data |
US7912051B1 (en) | 2008-12-19 | 2011-03-22 | Emc Corporation | Techniques for port virtualization |
US9282277B2 (en) | 2008-12-19 | 2016-03-08 | Seagate Technology Llc | Storage device and controller to selectively activate a storage media |
JP5221332B2 (ja) | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
US8762642B2 (en) | 2009-01-30 | 2014-06-24 | Twinstrata Inc | System and method for secure and reliable multi-cloud data replication |
US20100205367A1 (en) | 2009-02-09 | 2010-08-12 | Ehrlich Richard M | Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands |
US8145838B1 (en) | 2009-03-10 | 2012-03-27 | Netapp, Inc. | Processing and distributing write logs of nodes of a cluster storage system |
US8103822B2 (en) | 2009-04-26 | 2012-01-24 | Sandisk Il Ltd. | Method and apparatus for implementing a caching policy for non-volatile memory |
US8515965B2 (en) | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US8583692B2 (en) | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US20100306234A1 (en) | 2009-05-28 | 2010-12-02 | Microsoft Corporation | Cache synchronization |
CN102460564B (zh) | 2009-06-30 | 2015-02-11 | 诺基亚公司 | 用于提供移动设备互操作性的方法及装置 |
US8448016B2 (en) | 2009-07-31 | 2013-05-21 | Cleversafe, Inc. | Computing core application access utilizing dispersed storage |
GB2472620B (en) | 2009-08-12 | 2016-05-18 | Cloudtran Inc | Distributed transaction processing |
US8966033B2 (en) | 2009-08-17 | 2015-02-24 | At&T Intellectual Property I, L.P. | Integrated proximity routing for content distribution |
US8296517B2 (en) | 2009-08-19 | 2012-10-23 | Oracle International Corporation | Database operation-aware striping technique |
US9542408B2 (en) * | 2010-08-27 | 2017-01-10 | Pneuron Corp. | Method and process for enabling distributing cache data sources for query processing and distributed disk caching of large data and analysis requests |
US9003159B2 (en) | 2009-10-05 | 2015-04-07 | Marvell World Trade Ltd. | Data caching in non-volatile memory |
US8538930B2 (en) | 2009-10-09 | 2013-09-17 | International Business Machines Corporation | Method and system for database recovery |
US8204892B2 (en) | 2009-10-26 | 2012-06-19 | Oracle International Corporation | Performance boost for sort operations |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8560598B2 (en) | 2009-12-22 | 2013-10-15 | At&T Intellectual Property I, L.P. | Integrated adaptive anycast for content distribution |
US8566297B1 (en) | 2010-01-14 | 2013-10-22 | Symantec Corporation | Method to spoof data formats from image backups |
US8756377B2 (en) | 2010-02-02 | 2014-06-17 | Arm Limited | Area and power efficient data coherency maintenance |
US20110191522A1 (en) | 2010-02-02 | 2011-08-04 | Condict Michael N | Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory |
US9582431B2 (en) * | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US8504766B2 (en) | 2010-04-15 | 2013-08-06 | Netapp, Inc. | Methods and apparatus for cut-through cache management for a mirrored virtual volume of a virtualized storage system |
US8898324B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
CN102959874A (zh) | 2010-07-12 | 2013-03-06 | 松下电器产业株式会社 | 解交错装置及解交错方法和数据传输系统及数据传输方法 |
US20120014595A1 (en) | 2010-07-16 | 2012-01-19 | Frederiksen Jeffrey E | Color Space Conversion for Efficient Filtering |
US8838919B2 (en) | 2010-08-30 | 2014-09-16 | Oracle International Corporation | Controlling data lag in a replicated computer system |
US8537919B2 (en) | 2010-09-10 | 2013-09-17 | Trellis Phase Communications, Lp | Encoding and decoding using constrained interleaving |
US8327080B1 (en) | 2010-09-28 | 2012-12-04 | Emc Corporation | Write-back cache protection |
US9263102B2 (en) | 2010-09-28 | 2016-02-16 | SanDisk Technologies, Inc. | Apparatus, system, and method for data transformations within a data storage device |
US20120158650A1 (en) | 2010-12-16 | 2012-06-21 | Sybase, Inc. | Distributed data cache database architecture |
US9658960B2 (en) | 2010-12-22 | 2017-05-23 | Advanced Micro Devices, Inc. | Subcache affinity |
US8627136B2 (en) | 2010-12-27 | 2014-01-07 | Netapp Inc. | Non-disruptive failover of RDMA connection |
US8397025B2 (en) | 2010-12-30 | 2013-03-12 | Lsi Corporation | Apparatus and method for determining a cache line in an N-way set associative cache using hash functions |
US8676834B2 (en) | 2011-02-16 | 2014-03-18 | International Business Machines Corporation | Set-level comparisons in dynamically formed groups |
US9703706B2 (en) | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
US20120221788A1 (en) | 2011-02-28 | 2012-08-30 | Microsoft Corporation | Multi-dimensional array manipulation |
US8949294B2 (en) | 2011-03-23 | 2015-02-03 | Red Hat, Inc. | Data grid supporting multiple protocols |
US8930647B1 (en) * | 2011-04-06 | 2015-01-06 | P4tents1, LLC | Multiple class memory systems |
US11086850B2 (en) | 2011-04-13 | 2021-08-10 | International Business Machines Corporation | Persisting of a low latency in-memory database |
US20120290786A1 (en) | 2011-05-11 | 2012-11-15 | Mesnier Michael P | Selective caching in a storage system |
WO2012159024A1 (en) | 2011-05-19 | 2012-11-22 | Oracle International Corporation | Techniques for automatic data placement with compression and columnar storage |
US8868492B2 (en) | 2011-06-15 | 2014-10-21 | Oracle International Corporation | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica |
US8812555B2 (en) | 2011-06-18 | 2014-08-19 | Microsoft Corporation | Dynamic lock-free hash tables |
US9331955B2 (en) | 2011-06-29 | 2016-05-03 | Microsoft Technology Licensing, Llc | Transporting operations of arbitrary size over remote direct memory access |
US8805984B2 (en) | 2011-07-14 | 2014-08-12 | Red Hat, Inc. | Multi-operational transactional access of in-memory data grids in a client-server environment |
US8560508B2 (en) | 2011-07-22 | 2013-10-15 | International Business Machines Corporation | Real-time compression of tabular data |
US8924346B2 (en) | 2011-09-09 | 2014-12-30 | Oracle International Corporation | Idempotence for database transactions |
CN102999519B (zh) | 2011-09-15 | 2017-05-17 | 上海盛付通电子商务有限公司 | 一种数据库的读写方法及系统 |
US10592416B2 (en) | 2011-09-30 | 2020-03-17 | Oracle International Corporation | Write-back storage cache based on fast persistent memory |
US8627018B2 (en) | 2011-11-18 | 2014-01-07 | Microsoft Corporation | Automatic optimization for programming of many-core architectures |
US8768927B2 (en) | 2011-12-22 | 2014-07-01 | Sap Ag | Hybrid database table stored as both row and column store |
US8918436B2 (en) | 2011-12-22 | 2014-12-23 | Sap Ag | Hybrid database table stored as both row and column store |
DE112011106078B4 (de) * | 2011-12-29 | 2021-01-28 | Intel Corp. | Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff |
US9467512B2 (en) | 2012-01-17 | 2016-10-11 | Intel Corporation | Techniques for remote client access to a storage medium coupled with a server |
US9519647B2 (en) | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9703500B2 (en) | 2012-04-25 | 2017-07-11 | International Business Machines Corporation | Reducing power consumption by migration of data within a tiered storage system |
US10019371B2 (en) * | 2012-04-27 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Data caching using local and remote memory |
US9133451B2 (en) | 2012-05-25 | 2015-09-15 | Research Foundation Of The City University Of New York | Method for modulating a bacterial invasion switch |
US9063908B2 (en) | 2012-05-31 | 2015-06-23 | Oracle International Corporation | Rapid recovery from loss of storage device cache |
US9792320B2 (en) | 2012-07-06 | 2017-10-17 | Box, Inc. | System and method for performing shard migration to support functions of a cloud-based service |
US8904231B2 (en) | 2012-08-08 | 2014-12-02 | Netapp, Inc. | Synchronous local and cross-site failover in clustered storage systems |
US9164702B1 (en) | 2012-09-07 | 2015-10-20 | Google Inc. | Single-sided distributed cache system |
US8862810B2 (en) | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
US9507825B2 (en) | 2012-09-28 | 2016-11-29 | Oracle International Corporation | Techniques for partition pruning based on aggregated zone map information |
US20140108421A1 (en) | 2012-10-04 | 2014-04-17 | Codefutures Corporation | Partitioning database data in a sharded database |
US9116852B2 (en) | 2012-10-16 | 2015-08-25 | International Business Machines Corporation | Processing a copy command directed to a first storage architecture for data that is stored in a second storage architecture |
US9306947B2 (en) | 2012-11-14 | 2016-04-05 | Click Security, Inc. | Automated security analytics platform with multi-level representation conversion for space efficiency and incremental persistence |
US9378179B2 (en) | 2012-11-21 | 2016-06-28 | International Business Machines Corporation | RDMA-optimized high-performance distributed cache |
US9053036B2 (en) | 2012-11-26 | 2015-06-09 | Avago Technologies General Ip (Singapore) Pte Ltd | System and method for providing a flash memory cache input/output throttling mechanism based upon temperature parameters for promoting improved flash life |
US9348752B1 (en) | 2012-12-19 | 2016-05-24 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
US9792405B2 (en) | 2013-01-17 | 2017-10-17 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
EP2994749A4 (en) | 2013-01-17 | 2017-07-19 | Edico Genome Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
US10148548B1 (en) | 2013-01-29 | 2018-12-04 | Axway, Inc. | System and method for real-time analysis of incoming data |
US10380021B2 (en) | 2013-03-13 | 2019-08-13 | Oracle International Corporation | Rapid recovery from downtime of mirrored storage device |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9778885B2 (en) | 2013-03-15 | 2017-10-03 | Skyera, Llc | Compressor resources for high density storage units |
US10073626B2 (en) * | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9772793B2 (en) | 2013-09-20 | 2017-09-26 | Oracle International Corporation | Data block movement offload to storage systems |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
US9495114B2 (en) | 2013-05-10 | 2016-11-15 | Arista Networks, Inc. | System and method for reading and writing data with a shared memory hash table |
US9767138B2 (en) | 2013-06-12 | 2017-09-19 | Oracle International Corporation | In-database sharded queue for a shared-disk database |
US9792349B2 (en) | 2013-06-12 | 2017-10-17 | Oracle International Corporation | In-database sharded queue |
US9495296B2 (en) | 2013-06-12 | 2016-11-15 | Oracle International Corporation | Handling memory pressure in an in-database sharded queue |
US9619545B2 (en) | 2013-06-28 | 2017-04-11 | Oracle International Corporation | Naïve, client-side sharding with online addition of shards |
US9311110B2 (en) | 2013-07-08 | 2016-04-12 | Intel Corporation | Techniques to initialize from a remotely accessible storage device |
US11132300B2 (en) | 2013-07-11 | 2021-09-28 | Advanced Micro Devices, Inc. | Memory hierarchy using page-based compression |
US9128965B1 (en) | 2013-08-07 | 2015-09-08 | Amazon Technologies, Inc. | Configurable-capacity time-series tables |
US9037753B2 (en) | 2013-08-29 | 2015-05-19 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US9430383B2 (en) | 2013-09-20 | 2016-08-30 | Oracle International Corporation | Fast data initialization |
US9798655B2 (en) | 2013-09-20 | 2017-10-24 | Oracle International Corporation | Managing a cache on storage devices supporting compression |
US9606921B2 (en) | 2013-09-21 | 2017-03-28 | Oracle International Corporation | Granular creation and refresh of columnar data |
US9292564B2 (en) | 2013-09-21 | 2016-03-22 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
US9323799B2 (en) | 2013-09-21 | 2016-04-26 | Oracle International Corporation | Mechanism to run OLTP workload on in-memory database under memory pressure |
US9128972B2 (en) | 2013-09-21 | 2015-09-08 | Oracle International Corporation | Multi-version concurrency control on in-memory snapshot store of oracle in-memory database |
US10311154B2 (en) | 2013-09-21 | 2019-06-04 | Oracle International Corporation | Combined row and columnar storage for in-memory databases for OLTP and analytics workloads |
US9389994B2 (en) | 2013-11-26 | 2016-07-12 | International Business Machines Corporation | Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning |
WO2015094179A1 (en) | 2013-12-17 | 2015-06-25 | Hewlett-Packard Development Company, L.P. | Abstraction layer between a database query engine and a distributed file system |
JP6274857B2 (ja) | 2013-12-26 | 2018-02-07 | キヤノン株式会社 | メモリ制御装置、メモリ制御方法、およびプログラム |
US9613122B2 (en) | 2014-05-02 | 2017-04-04 | Facebook, Inc. | Providing eventual consistency for multi-shard transactions |
US9348857B2 (en) | 2014-05-07 | 2016-05-24 | International Business Machines Corporation | Probabilistically finding the connected components of an undirected graph |
US20160026579A1 (en) | 2014-07-22 | 2016-01-28 | Lsi Corporation | Storage Controller and Method for Managing Metadata Operations in a Cache |
US20160026399A1 (en) * | 2014-07-23 | 2016-01-28 | Lsi Corporation | Block i/o interface for a host bus adapter that utilizes nvdram |
JP6231669B2 (ja) | 2014-09-15 | 2017-11-15 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ書込み要求処理方法及びストレージアレイ |
US10481835B2 (en) | 2014-10-09 | 2019-11-19 | Netapp, Inc. | Methods and systems for dynamic hashing in caching sub-systems |
US9703890B2 (en) | 2014-10-17 | 2017-07-11 | Vmware, Inc. | Method and system that determine whether or not two graph-like representations of two systems describe equivalent systems |
TWI567554B (zh) * | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
US9842033B2 (en) | 2014-11-12 | 2017-12-12 | Netapp, Inc. | Storage cluster failure detection |
US9626119B2 (en) | 2014-11-14 | 2017-04-18 | Intel Corporation | Using counters and a table to protect data in a storage device |
US20160188414A1 (en) | 2014-12-24 | 2016-06-30 | Intel Corporation | Fault tolerant automatic dual in-line memory module refresh |
WO2016122548A1 (en) | 2015-01-29 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Hash index |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US9525737B2 (en) | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US11829349B2 (en) | 2015-05-11 | 2023-11-28 | Oracle International Corporation | Direct-connect functionality in a distributed database grid |
US9965487B2 (en) | 2015-06-18 | 2018-05-08 | International Business Machines Corporation | Conversion of forms of user data segment IDs in a deduplication system |
US10031883B2 (en) | 2015-10-16 | 2018-07-24 | International Business Machines Corporation | Cache management in RDMA distributed key/value stores based on atomic operations |
US10204174B2 (en) | 2015-12-15 | 2019-02-12 | Oracle International Corporation | Efficient method for subgraph pattern matching |
US9836406B2 (en) | 2015-12-22 | 2017-12-05 | Oracle International Corporation | Dynamic victim cache policy |
US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
US10198352B2 (en) | 2016-05-31 | 2019-02-05 | Vmware, Inc. | Efficient pointer swizzling for persistent objects |
US10133667B2 (en) | 2016-09-06 | 2018-11-20 | Orcle International Corporation | Efficient data storage and retrieval using a heterogeneous main memory |
US10423663B2 (en) | 2017-01-18 | 2019-09-24 | Oracle International Corporation | Fast graph query engine optimized for typical real-world graph instances whose small portion of vertices have extremely large degree |
US10346315B2 (en) | 2017-05-26 | 2019-07-09 | Oracle International Corporation | Latchless, non-blocking dynamically resizable segmented hash index |
US10552321B2 (en) * | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
-
2017
- 2017-08-31 US US15/693,273 patent/US10719446B2/en active Active
-
2018
- 2018-08-30 CN CN201880053507.XA patent/CN111033481B/zh active Active
- 2018-08-30 KR KR1020207005611A patent/KR20200045488A/ko not_active Application Discontinuation
- 2018-08-30 WO PCT/US2018/048939 patent/WO2019046632A1/en active Search and Examination
- 2018-08-30 EP EP18778650.4A patent/EP3676724B1/en active Active
- 2018-08-30 MX MX2020002334A patent/MX2020002334A/es unknown
- 2018-08-30 CA CA3068875A patent/CA3068875C/en active Active
-
2020
- 2020-06-22 US US16/907,703 patent/US11256627B2/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282920A (zh) * | 1999-06-18 | 2001-02-07 | 凤凰技术有限公司 | 安全使用基本输入输出系统服务的系统和方法 |
US7647443B1 (en) * | 2007-04-13 | 2010-01-12 | American Megatrends, Inc. | Implementing I/O locks in storage systems with reduced memory and performance costs |
CN101784996A (zh) * | 2007-06-29 | 2010-07-21 | 赛帕顿有限公司 | 仿效存储系统 |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
JP2012155430A (ja) * | 2011-01-25 | 2012-08-16 | Sony Corp | メモリシステムおよびその動作方法 |
CN103959247A (zh) * | 2011-10-03 | 2014-07-30 | 思科技术公司 | 虚拟化计算机程序中的安全 |
CN105917318A (zh) * | 2012-07-24 | 2016-08-31 | 英特尔公司 | 用于实现基于ssd的i/o高速缓存的系统和方法 |
CN105378673A (zh) * | 2013-01-04 | 2016-03-02 | 微软技术许可有限责任公司 | 零复制高速缓存 |
CN104050056A (zh) * | 2013-03-15 | 2014-09-17 | 希捷科技有限公司 | 多存储介质设备的文件系统备份 |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN105408880A (zh) * | 2013-07-31 | 2016-03-16 | 甲骨文国际公司 | 对共享存储装置的持久存储器的直接访问 |
CN107533442A (zh) * | 2015-04-29 | 2018-01-02 | 高通股份有限公司 | 用于对异构系统存储器中的存储器功率消耗进行优化的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190065383A1 (en) | 2019-02-28 |
US10719446B2 (en) | 2020-07-21 |
EP3676724B1 (en) | 2023-05-17 |
EP3676724A1 (en) | 2020-07-08 |
CA3068875A1 (en) | 2019-03-07 |
KR20200045488A (ko) | 2020-05-04 |
MX2020002334A (es) | 2020-07-13 |
WO2019046632A1 (en) | 2019-03-07 |
CN111033481A (zh) | 2020-04-17 |
CA3068875C (en) | 2023-12-19 |
US11256627B2 (en) | 2022-02-22 |
US20200320010A1 (en) | 2020-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111033481B (zh) | 非易失性存储器上的直接映射的缓冲区高速缓存 | |
US10732836B2 (en) | Remote one-sided persistent writes | |
US10642861B2 (en) | Multi-instance redo apply | |
EP3539021B1 (en) | Formation and manipulation of test data in a database system | |
US11175832B2 (en) | Thread groups for pluggable database connection consolidation in NUMA environment | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
CN112534419A (zh) | 到备用数据库的自动查询卸载 | |
US6640280B1 (en) | Obtaining data from a remote storage device using multiple jobs per device on RA | |
US10956335B2 (en) | Non-volatile cache access using RDMA | |
US7577957B1 (en) | Multiple jobs per device that are linked via a device record for servicing by different adapters | |
US20210081372A1 (en) | Persistent memory file store for directly mapped persistent memory database | |
Keeton et al. | The OpenFAM API: a programming model for disaggregated persistent memory | |
Ghandeharizadeh et al. | Design, implementation, and evaluation of write-back policy with cache augmented data stores | |
US10698637B2 (en) | Stale block resynchronization in NVM based systems | |
Trivedi et al. | RStore: A direct-access DRAM-based data store | |
CN109716280B (zh) | 灵活的内存列存储布置 | |
US11803314B2 (en) | Techniques for performing metadata updates | |
US20200356538A1 (en) | Container-based virtualization for testing database system | |
US11983076B2 (en) | Clone-aware backup and restore | |
US20230244652A1 (en) | Transactional query processing in external tables | |
US20240126746A1 (en) | Multi-lob caching and lob writing | |
US20230004448A1 (en) | Balanced winner assignment for deadlock resolution |
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 |