CN111095225A - 使用rdma读取存储在非易失性高速缓存中的数据的方法 - Google Patents
使用rdma读取存储在非易失性高速缓存中的数据的方法 Download PDFInfo
- Publication number
- CN111095225A CN111095225A CN201880057246.9A CN201880057246A CN111095225A CN 111095225 A CN111095225 A CN 111095225A CN 201880057246 A CN201880057246 A CN 201880057246A CN 111095225 A CN111095225 A CN 111095225A
- Authority
- CN
- China
- Prior art keywords
- cache
- data block
- hash table
- data
- stored
- 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
- 238000000034 method Methods 0.000 title claims description 102
- 230000015654 memory Effects 0.000 claims abstract description 109
- 230000002085 persistent effect Effects 0.000 claims abstract description 47
- 230000006870 function Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 76
- 239000000872 buffer Substances 0.000 description 46
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000026676 system process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect 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
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change 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
- 238000011161 development Methods 0.000 description 1
- 238000013073 enabling process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据块被高速缓存在从非易失性RAM(“NVRAM”)分配的持久性高速缓存(“NV高速缓存”)中。数据块可以由另一个“远程”计算元件使用远程直接存储器访问(“RMDA”)通过网络访问“源”计算元件的NV高速缓存中的适当的位置。为了使远程计算元件访问源计算元件上的NV高速缓存中的数据块,远程计算元件需要数据块在NV高速缓存内的存储器地址。为此,在源计算元件上的RAM中存储并维护散列表。散列表识别NV高速缓存中的数据块,并指定高速缓存数据块在NV高速缓存内的位置。
Description
技术领域
本公开涉及数据库系统。更具体而言,本公开涉及在持久性高速缓存中将数据库数据进行高速缓存。
背景技术
诸如工作站或服务器刀片之类的计算元件可以通过网络从其它“源”计算元件请求数据块。源计算元件可以使用持久性高速缓存(例如,闪存中的高速缓存)来将主要存储在主持久性存储装置(例如,盘存储装置)中的数据块的副本进行高速缓存。
持久性高速缓存通常比主存储装置更快且更小。如果在接收到对数据块的请求时该数据块的副本存储在持久性高速缓存中,那么与从主存储装置返回数据块相比,能够从持久性高速缓存中快得多地返回数据块。
即使请求的数据块的副本存储在更快的持久性高速缓存中,数据块的副本也可能被首先暂存(stage)到易失性随机存取存储器(易失性“RAM”),然后再通过网络将数据块返回给发出请求的计算元件。从易失性RAM中,数据块的副本通过网络被传输到发出请求的计算元件。将数据块从持久性存储装置(例如,持久性高速缓存、主存储装置)写入易失性RAM以暂存数据块以便通过网络传输到请求该数据块的计算元件的操作在本文中被称为读取暂存。
例如,源计算元件可以是使用持久性高速缓存的实现联网的块模式存储设备。在本文中被称为存储设备的存储设备客户端的另一个计算元件经由网络连接到存储设备。为了读取数据块,由存储设备客户端发起数据块读取操作。为了发起数据块读取操作,存储设备客户端将对数据块的请求传输到存储设备。在接收到请求时,持久性高速缓存中不存在数据块的副本。存储设备执行读取暂存,使得数据块可以被传输到存储设备客户端。数据块的副本通过网络从易失性RAM被传输到存储设备客户端。存储设备还将副本添加到持久性高速缓存中,使得可以通过持久性高速缓存中的副本满足对将来接收到的数据块的后续请求。当数据块存储在持久性高速缓存中时,从存储设备客户端接收到对数据块的另一个请求。在将数据块传输到存储设备客户端之前,通过将持久性存储装置中的数据块复制到易失性RAM来执行读取暂存。一旦数据块被暂存在易失性RAM中,该数据块就被传输到存储设备客户端。
作为另一个示例,集群数据库系统可以包括在联网的计算元件上运行的数据库服务器,每个数据库服务器在相应的计算元件上运行。数据库服务器为同一个数据库提供服务,并且每个服务器都使用持久性高速缓存来临时存储数据库中数据块的副本。当另一个数据库服务器可能从数据库服务器请求数据块时,数据块的副本可以存储在数据库服务器的持久性高速缓存中。为了从存储副本的数据库服务器的持久性高速缓存传输数据块,数据库服务器执行到易失性RAM的读取暂存,从而将数据块从持久性高速缓存复制到易失性RAM。然后将数据块的副本从易失性RAM传输到另一个数据库服务器。
包括通过网络从在持久性高速缓存中将数据块进行高速缓存的其它计算元件接收数据块的计算元件的系统的性能取决于通过网络将数据块从持久性高速缓存传输到请求数据块的计算元件的效率和速度。本文中描述了用于通过网络从持久性高速缓存提供数据块的副本的方法。
附图说明
在附图的各图中,以示例而非限制的方式图示了本发明的(一个或多个)示例实施例,并且附图中相同的附图标记指代相似的元件,并且其中:
图1图示了根据本发明的实施例的使用从非易失性存储器分配的高速缓存DBMS。
图2图示了根据本发明的实施例的存储数据的散列表,该数据描述了非易失性存储器中的数据块的高速缓存。
图3图示了根据本发明的实施例的从非易失性存储器分配的高速缓存中的数据块读取操作。
图4图示了根据本发明的实施例的用于镜像的主(primary)存储位置和辅(secondary)存储位置。
图5是可以在其上实现实施例的计算机系统的图。
图6是根据本发明的实施例的可以用于控制计算机系统的操作的软件系统的图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的(一个或多个)示例实施例的透彻理解。但是,将显而易见的是,可以在没有这些具体细节的情况下实践(一个或多个)示例实施例。
总体概述
本文描述了用于通过网络访问在持久性高速缓存中进行高速缓存的数据块的新颖技术。该技术利用了在本文中称为非易失性RAM(“NVRAM”)的持久性字节可寻址存储器的形式。数据块被高速缓存在从NVRAM分配的缓冲池中,从NVRAM分配的缓冲池在本文中被称为NV高速缓存。数据块可以由另一个“远程”计算元件使用远程直接存储器访问(“RDMA”)通过网络在“源”计算元件的NV高速缓存中在适当的位置进行访问。以这种方式传输数据块避免了为了通过网络传输数据块而执行读取暂存所带来的开销。这些技术在本文中被称为NV高速缓存。
在NV高速缓存下,为了使远程计算元件访问源计算元件上的NV高速缓存中的数据块,远程计算元件需要NV高速缓存内的数据块的存储器地址。为此,在源计算元件上的RAM(易失性或非易失性)中存储并维护散列表。散列表识别NV高速缓存中的数据块,并指定高速缓存数据块(cached data block)在NV高速缓存中的位置。
重要的是,散列表是RDMA可访问的,即,散列表位于RAM(易失性或NVRAM)中可由远程计算元件使用RDMA访问的位置。通过散列表的RDMA读取,远程计算元件可以确定数据块在NV高速缓存中的存在和位置。
说明性DBMS
在DBMS的上下文中图示了NV高速缓存。DBMS包括至少一个数据库服务器。数据库服务器托管在至少一个计算元件上,并且可以将数据库数据存储在块模式存储设备中。块模式存储设备可以是经由计算元件的高速总线连接到计算元件的一个或多个硬件处理器(“处理器”)和/或计算元件的存储器的一个或多个盘驱动器和闪存驱动器。块模式存储设备也可以是启用网络的存储设备,该存储设备经由网络连接到计算元件,并且折中其它块模式存储设备(诸如盘驱动器和闪存驱动器)。
更强大的DBMS托管在并行处理器硬件平台上。这样的DBMS在本文中被称为多节点DBMS。多节点DBMS包括在本文中被称为计算节点的多个计算元件。每个计算节点包括一个或多个硬件处理器,每个硬件处理器共享对同一主存储器的访问。
图1是图示多节点DBMS的框图。参考图1,多节点DBMS 100包括数据库服务器实例,每个数据库服务器实例托管在相应的计算节点上,每个数据库服务器实例提供对存储在共享存储装置121上的同一数据库的访问。DBMS 100的数据库服务器实例包括数据库服务器实例103-1和103-2,它们分别托管在计算节点102-1和102-2上。共享存储器121包括存储单元(cell)122-1和122-2。数据库服务器实例103-1和103-2中的每一个通过高速网络101连接到存储单元122-1和122-2中的每一个。
存储单元122-1和122-2中的每一个是包括用于存储DBMS 100的一个或多个数据库的“数据库文件”的持久性存储装置(例如,盘、闪存)的计算元件。存储单元122-1包括持久性存储装置129-1和主存储器124-1,并且存储单元122-2包括持久性存储装置129-2和主存储器124-2。主存储器124-1和主存储器124-2是易失性RAM。持久性存储装置129-1和持久性存储装置129-1可以包括持久性存储设备,诸如盘设备或闪存设备。
在存储单元122-1和122-2中的每一个上运行的一个或多个存储进程(storageprocess)(诸如存储进程125-1a和存储进程125-2a)从数据库服务器实例103-1和103-2中的任何数据库服务器实例接收从持久性存储装置中存储的数据库文件中读取数据块或向其写入数据块的请求。
易失性缓冲池(buffer pool)128-1和易失性缓冲池128-2分别是从主存储器124-1和主存储器124-2分配的缓冲池。易失性缓冲池128-1和易失性缓冲池128-2各自包括缓冲区(buffer),并且每个都用于分别将存储在持久性存储装置129-1和持久性存储装置129-2中的数据块进行临时暂存和/或高速缓存。易失性缓冲池128-1和易失性缓冲池128-2在本文中均可以被称为易失性高速缓存。
存储单元122-1和122-2还分别包括非易失性RAM存储器NV存储器123-1和NV存储器123-2。NV缓冲池127-1和NV缓冲池127-2分别是从NV存储器123-1和NV存储器123-2分配的缓冲池。NV缓冲池127-1和NV缓冲池127-2各自包括分别用于将来自持久性存储装置129-1和130-2的数据块进行临时暂存和/或高速缓存的缓冲区。NV缓冲池127-1和NV缓冲池127-2在本文中均可以被称为NV高速缓存。
一旦数据块被添加到NV高速缓存和/或易失性高速缓存,数据块就可以被高速缓存或以其它方式保留在NV高速缓存或易失性高速缓存中,以满足对数据块的后续读取请求。最终,必须从NV高速缓存和/或易失性高速缓存中移除高速缓存数据块,以便为另一个数据块腾出空间。为了选择和移除用于为其它数据块腾出空间的数据块,可以使用各种高速缓存管理策略和技术,诸如最近最少使用算法。高速缓存管理器(cache manager)125-2b是负责执行NV缓冲池127-1和易失性缓冲池128-1的高速缓存管理的进程,并且高速缓存管理器125-1b是用于执行NV缓冲池127-2和易失性缓冲池128-2的高速缓存管理的进程。
数据库服务器实例
DBMS 100的每个数据库服务器实例包括在托管数据库服务器实例的计算节点上运行的数据库进程。数据库进程可以是但不限于在数据库会话内运行的执行数据库会话内发出的数据库命令的进程,或属于被指派为执行通过数据库会话发出的查询的进程池的查询执行进程。
参考图1,数据库服务器实例103-1和103-2中的每一个包括多个数据库进程和将从共享存储装置121读取的数据块进行高速缓存的数据库缓冲区。数据库服务器实例103-1和103-2分别托管在计算节点102-1和102-2上。数据库服务器实例103-1包括在计算节点102-1上运行的DB进程105-1a和105-1b以及从主存储器104-1分配的数据库缓冲池108-1。数据库服务器实例103-2包括在计算节点102-2上运行的数据库进程105-2a和105-2b以及从主存储器104-2分配的数据库缓冲池108-2。
RDMA
网络101是启用RDMA的,从而使运行计算节点102-1或计算节点102-2的进程能够使用RDMA从NV存储器123-1、NV存储器123-2、主存储器124-1和主存储器124-2读取和向其写入。在RDMA中,数据的直接传送通过每个计算元件上的RDMA机制进行。根据实施例,RDMA机制包括在每个计算元件上具有RDMA能力(RNIC)的网络接口硬件控制器。在“发起”计算元件的硬件处理器(例如,通用CPU)上运行的进程可以向发起计算元件上的“本地”RNIC发出RDMA读取请求,以读取存储在“远程”计算元件的“远程”RAM中的“远程”存储器地址处的数据并将数据写入发起计算元件上的“本地”RAM内的“本地”存储器地址。响应于接收到RDMA读取请求,本地RNIC和远程RNIC将数据从远程RAM传送到本地RAM。远程RNIC读取远程存储器地址处的数据、通过启用RDMA的网络将数据传输到本地RNIC,该本地RNIC再将数据在本地存储器地址处写入本地RAM。不属于本地RNIC和远程RNIC的一部分的硬件处理器(例如,通用CPU)不参与从远程RAM读取数据、通过启用RDMA的网络传输数据以及将数据写入本地RAM。
一旦数据的传送完成,本地RNIC就发出信号通知数据的传送已完成。然后,发起请求的进程或另一个进程可以在本地存储器地址访问传送的数据。
存储服务
为了发起对启用块的存储设备中的数据块的数据块读取操作,在数据库服务器实例中运行的数据库进程需要确定数据块在存储设备的持久性存储装置内的原始(home)存储位置(“原始位置”),诸如闪存内的块地址或特定盘上的盘偏移量(offset)。为了做出该确定,DBMS在数据字典内维护映射数据,该数据字典指定哪些数据库文件保持哪些数据库表的数据块,并使用将数据库文件和数据库文件内的偏移量映射到持久性存储装置中的原始位置的存储服务。术语“原始位置”是指数据块在持久性存储装置中的存储位置,而不是指NV高速缓存或用于将来自持久性存储装置的数据块进行临时高速缓存的缓冲池内的存储位置或地址。DBMS 100的每个数据库服务器实例可以将映射数据的副本存储在易失性RAM内以用于快速访问。
例如,数据块存储在存储单元中的盘上。为了确定数据块的原始位置,数据库进程使用存储服务来确定与数据块的数据库文件偏移量对应的原始位置。原始位置可以是特定闪存设备内特定盘或块地址上的偏移量。
根据实施例,DBMS 100的每个计算节点托管存储服务。参考图1,计算节点102-1托管存储服务112-1。存储服务112-2包括一个或多个存储进程和存储层106-1。存储层包括软件和相关联的存储元数据,存储元数据描述如何在各种存储设备(诸如盘和闪存)上存储数据库文件。存储层软件由存储进程和/或数据库进程执行。存储进程监视和管理DBMS 100内数据库文件的存储。类似地,计算节点102-2托管存储服务112-2,该存储服务112-2包括一个或多个存储进程和存储层106-2。
存储服务112-1的重要功能是提供数据库文件与其中到存储设备中原始位置的偏移量之间的映射。为了确定与数据库文件内的偏移量对应的原始位置,数据库进程调用存储层106-1的函数,从而传入数据库文件的标识和偏移量;该函数返回原始位置,该原始位置可以标识特定盘和偏移量或闪存地址和块地址。
NV散列表
如前所述,在NV高速缓存下,为了使用RDMA访问远程计算节点上NV高速缓存中的数据块,使用RDMA从存储在远程计算节点的NV高速缓存中的散列表中获得数据块的存储器地址。这样的散列表在本文中被称为NV散列表。NV散列表的实施例在图1中绘出,并且在图2中更详细地绘出。
参考图1,存储单元122-1将NV散列表129-1存储在NV存储器123-1中,并且存储单元122-2将NV散列表129-2存储在NV存储器123-2中。NV散列表129-1识别存储在NV缓冲池127-1中的高速缓存数据块,并指定NV缓冲池127-1中的每个高速缓存数据块在NV缓冲池127-1内的存储位置(“高速缓存位置”)。NV散列表129-2识别存储在NV缓冲池127-2中的高速缓存数据块,并指定NV缓冲池127-2中的每个高速缓存数据块在NV缓冲池127-2内的高速缓存位置。高速缓存位置可以是NV缓冲池127-1或NV缓冲池127-2内的缓冲区的存储器地址,或者是从NV缓冲池127-1或NV缓冲池127-2的基本存储器地址的偏移量。数据结构的基本存储器地址是存储数据结构的存储器区域的开始处的存储器地址。
图2示出了根据本发明的实施例的NV散列表的结构。参考NV散列表129-1描述该结构。
参考图2,NV散列表129-1包括散列表桶(bucket)202-1、202-2、202-3至202-N。根据实施例,每个散列表桶包括在NV存储器123-1(的存储器地址空间内)连续存储的元素的阵列。例如,散列表桶202-1包括元素204-1、204-2、204-3至204-N。每个元素与高速缓存在NV缓冲池127-1中的高速缓存数据块对应,并且至少包括以下属性:
原始位置:指定对应的高速缓存数据块的原始位置。
高速缓存位置:NV缓冲池127-1中的高速缓存数据块的存储位置。
有效标志:指示元素中的信息有效还是无效的标志。当有效时,该信息是准确的并且在被称为有效期(expiration period)的一段时间内可以信赖。如将更详细解释的,在从NV缓冲池127-1中移除高速缓存数据块之前,针对该数据块的对应元素中的有效标志被设置为指示该元素无效。
为了使计算节点102-1或计算节点102-2上的进程能够使用RDMA来访问NV散列表,该进程需要关于散列表的信息,诸如散列表的存储位置。这样的信息被存储在分别存储在计算节点102-1或计算节点102-2上的散列表配置109-1和散列表配置109-2中。散列表配置109-1和散列表配置109-2中的每一个均包含关于NV散列表129-1和NV散列表129-2的信息。在散列表配置109-1和散列表配置109-2中包含的信息中有NV散列表129-1和NV散列表129-2的基本存储器地址。散列表配置109-1和散列表配置109-2中可能包含的其它信息包括散列表桶的存储器尺寸。
例如作为DBMS 100的启动操作或将数据库服务器实例作为实例添加到DBMS 100的节点加入(join)操作的一部分,可以生成散列表配置109-1和散列表配置109-2并将其传播到DBMS 100的计算节点。
远程高速缓存读取操作
图3是描绘根据本发明的实施例的针对远程NV高速缓存读取操作执行的操作的流程图。根据至少一个实施例,为了对NV高速缓存中的数据块执行成功的读取操作,必须在NV散列表中找到针对数据块的元素,并且必须在有效期内完成对NV高速缓存中的数据块的RDMA读取。
使用计算节点102-1上的DB进程105-1a和NV散列表129-1来图示远程NV高速缓存读取操作。DB进程105-1a正在发起读取操作以读取数据块。使用存储服务,DB进程105-1a已经确定数据块的原始位置。
在已经确定原始位置之后,DB进程105-1a为NV散列表129-1内的数据块确定散列表桶。通过将针对NV散列表129-1的散列函数应用于原始位置来确定散列表桶。通过应用散列函数,DB进程105-1确定散列表桶202-1将包含针对数据块的元素(如果存在的话)。
参考图3,在310处,DB进程105-1a发起对散列表桶的RDMA读取。在实施例中,RDMA读取是针对整个散列表桶。发起RDMA读取需要NV散列表129-1的基本存储器地址和目标存储器地址,向该目标存储器地址将散列表桶写入本地存储器。DB进程105-1通过访问散列表配置109-1来确定NV散列表129-1的基本存储器地址。给定NV散列表129-1的散列表基本地址和散列表桶尺寸,DB进程105-1a确定散列表桶的基本存储器地址。
在315处,DB进程105-1a接收到散列表桶已经被写入到目标存储器地址的通知。
在320处,DB进程105-1a确定散列表桶202-1中是否存在针对数据块的有效元素。DB进程105-1a读取散列表桶202-1中的一个或多个元素,以确定元素中的原始位置是否与数据块的原始位置匹配,以及该元素中的有效标志是否指定该元素有效。
如果未找到具有匹配的原始位置的有效元素,则在370处,NV高速缓存读取操作终止。DB进程105-1a可以通过将请求发送到存储进程125-1a来请求数据块。存储进程125-1a可以返回所请求的数据块,这可能需要在通过网络101将数据块传输到计算节点102-1之前在存储单元122-1上读取暂存数据块。
如果在散列表桶中已经找到数据块的匹配的有效元素,则在325处,DB进程105-1a发起对在匹配元素上指定的高速缓存位置处的数据块的RDMA读取。
在330处,DB进程105-1a接收数据块已经被写入到目标地址的通知。
在执行NV高速缓存读取操作的同时,在350处,DB进程105-1a确定有效期是否已经到期。如果否,则NV高速缓存读取操作将中止。否则,NV高速缓存读取操作将继续。确定和可能的随后终止可以在NV高速缓存读取操作的各个阶段进行并多次进行。例如,在315处,当接收到散列表桶已经被写入的通知时,DB进程105-1a判定NV高速缓存读取操作是否尚未在有效期内完成,如果否,则终止NV高速缓存读取操作。然后在325处,当已经接收到数据库已经被写入的通知时,DB进程105-1a判定NV高速缓存读取操作是否已经在有效期内完成,如果否,则终止NV高速缓存读取操作。
如前所述,在步骤310中,在RDMA读取中读取整个散列桶。单个RDMA读取具有一定的等待时间,该等待时间在给定可以用于存储散列桶的存储器尺寸的范围内不会改变。因此,减少获得整个散列桶所需的RDMA读取次数是有利的。至少由于这个原因,为了在RDMA读取中读取散列桶,将散列桶连续地存储在NV RAM内(的地址空间内)。因此,将散列桶连续地存储为元素阵列使得能够在RDMA读取中读取整个散列桶。另一方面,例如,如果散列桶作为元素的链接列表不连续地存储在存储器中,那么可能需要单独的多个RDMA读取请求来读取散列桶的整体或甚至一部分。
从NV高速缓存中移除数据块
图4是描绘从NV高速缓存中移除数据块并用替换数据块来替换该数据块所执行的操作的流程图。使用NV散列表129-1和高速缓存管理器125-1b图示了数据块移除。高速缓存管理器125-1b在将数据块识别为要移除以被替换数据块替换的“受害者”之后,执行数据块移除作为高速缓存管理操作的一部分。
参考图4,在410处,高速缓存管理器125-1b找到与要从NV散列表129-1中移除的数据块对应的元素。高速缓存管理器125-1b通过确定针对NV散列表129-1内的数据块的散列表桶来开始该操作。散列表桶是通过将针对NV散列表129-1的散列函数应用于数据块的原始位置来确定的。通过应用散列函数,高速缓存管理器125-1b确定将在散列表桶202-1中找到针对数据块的元素。高速缓存管理器125-1b读取散列表桶202-1中的元素,直到找到具有匹配的原始位置的对应元素为止。
在415处,高速缓存管理器125-1b设置针对数据块的元素中的有效标志。
在420处,高速缓存管理器125-1b等待至少与有效期一样长的时间段。先前已经读取有效标志并且依赖于有效标志的有效性的任何进程将在高速缓存管理器125-1b已等待有效期的时间前停止依赖于有效标志的有效性。
在425处,高速缓存管理器125-1b从NV缓冲池127-1中移除数据块,从而在元素中指定的高速缓存位置处用替换数据块来覆写(overwrite)该数据块。
在430处,高速缓存管理器125-1b更新散列表191-1以反映将替换数据块添加到NV缓冲池127-1。这种更新包括将针对NV散列表129-1的散列函数应用于替换数据块的原始位置,以确定与该数据块对应的散列表桶。在散列表桶中找到用于替换数据块的可用元素,该可用元素是具有指示无效性的有效标志的元素或者是未用于任何数据块的元素。用替换数据块的原始位置和替换数据块在NV缓冲池127-1中的高速缓存位置来更新可用元素,该元素的有效标志被设置为有效。
已经使用了DBMS的使用RDMA从NV高速缓存中检索数据块的计算元件或计算节点图示了本发明的实施例。但是,本发明不限于此。本发明的实施例可以在由启用RDMA的网络互连的并且将数据块高速缓存在可经由网络访问的NV高速缓存中的任何计算元件或计算节点的集合上实现。
存储器概述
因为本发明的实施例涉及非易失性RAM的新颖使用,因此对存储器的描述是相关且有用的。如本文所使用的,“非易失性”是指在没有任何形式的电力(包括外部或备用电池)的情况下保留数据的存储器的特性。非易失性存储器的示例包括e-prom存储器、闪存和盘存储器。非易失性存储器不包括在没有其它外部电源的情况下通过备用电池为其供电的易失性存储器。例如,耦合到具有嵌入式备用电池的板上的易失性存储器不是非易失性存储器,因为在没有电池供电的情况下,易失性存储器不会保留数据。
字节可寻址存储器与块可寻址存储器是有区别的。字节为八位,并且是可以被寻址、可以从存储器中检索或可以被写入字节可寻址存储器中的最小数据量。因此,为了操纵字节中的位,必须将包含该位的字节提取到执行引用该字节(或包含该字节的字(word))的机器指令的处理器的寄存器,并根据该机器指令或另一条机器指令对其进行操纵。
作为对照,块可寻址存储器的单元的最小尺寸是数据块。数据块包括多个字节和多个字,并且无法完全存储在处理器的寄存器内。对于块可寻址存储器,数据块是可以被寻址、可以从存储器中检索或可以被写入存储器的最小数据量。块可寻址存储器的示例包括闪存和盘存储器。为了操纵块中的位或字节,包含那些位的块通过引用发到基于块的接口的块的指令被加载到字节可寻址的存储器中。
RAM与只读存储器(ROM)的区别在于RAM中的数据可以被覆写。如本文所使用的,覆写数据是指用新数据替换数据而无需首先擦除存储器中的数据。因此,如本文所使用,RAM是指可以被覆写的字节可寻址存储器。
DBMS概述
DBMS管理一个或多个数据库。DBMS可以包括在本文中被称为数据库服务器实例的一个或多个数据库服务器。数据库包括存储在持久性存储器机制上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录内的数据被组织到一个或多个字段中。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可以使用其它术语。
用户通过向数据库服务器提交使数据库服务器实例对存储在数据库中的数据执行操作以及其它类型的操作的命令来与DBMS的数据库服务器实例进行交互。数据库命令可以采用符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(SQL)。SQL有许多不同的版本,一些版本是标准版本,一些是专有版本,并且具有各种扩展。数据定义语言命令被发到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂数据类型。DDL命令用于为特定的硬件环境配置数据库服务器,以配置数据库服务器的计算机资源使用,以及数据库服务器的其它操作方面。
服务器(诸如数据库服务器)是软件和计算资源(诸如存储器、节点以及节点上的用于在处理器上执行集成软件组件的进程)的分配的组合、专用于代表一个或多个客户端执行特定功能的计算资源和软件的组合。
可以分配来自多节点数据库系统中多个节点的资源,以运行特定的数据库服务器的软件。软件和节点中的资源的分配的每种组合都是被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库服务器实例,其中一些或全部在单独的计算机元件上运行。
包括数据库服务器的数据库进程在数据库服务器的控制下运行(即可以由数据库服务器创建或终止),并执行各种数据库服务器功能。这样的进程在本文中被称为数据库进程。数据库处理器包括侦听器、垃圾回收器、日志编写器、用于执行数据库客户端发出的数据库命令的数据库会话的进程(包括在共享会话内执行的进程)以及恢复进程。
数据库进程可以包括状态对象,这些状态对象指示进程的状态信息,并允许DBMS管理和跟踪进程。典型的数据库线程也可以包括状态对象。状态对象是对DBMS可见的资源,并向DBMS指示进程的状态。例如,状态对象可以指示进程是空闲、不可用或者失败。因此,DBMS可以使用状态对象来确定数据库系统中正在运行多少个进程、哪些进程可用,并且清除失败的进程。
在实施例中,DBMS包括资源管理器,该资源管理器处理用于数据库系统的数据库进程。资源管理器可以是后台守护进程(daemon)、数据库组件、软件模块或其某种组合。资源管理器可以监视(一个或多个)数据库实例,并跨数据库进程来跟踪处理器和I/O资源。在实施例中,资源管理器是进程调度器,该进程调度器中断、取消调度、调度或以其它方式控制何时可以运行数据库进程。
在实施例中,由资源管理器使用状态对象来跟踪数据库进程的当前状态。如本文所使用的,状态可以包括关于数据库进程、数据库会话的登录凭证、当前数据库事务以及由进程或线程保持的资源的信息。状态对象的示例包括进程、会话和调用状态对象。进程状态对象保持进程的信息、属性(诸如死亡进程、系统进程、致命系统进程、清除进程、共享服务器等)以及其它进程结构(诸如进程中断队列)。
数据库数据块
DBMS使用数据块来存储一个或多行数据库行或行的部分,包括行的一列或多列。当从持久性存储装置中读取行时,包含该行的数据块被复制到数据库服务器的RAM和/或主存储器中的数据库数据块缓冲区中。用于存储数据库数据的数据块在本文中可以被称为数据库块。数据库块通常包含多行,并且数据库块元数据描述数据库块的内容。元数据包括控制和格式化信息,诸如表示行或其它数据结构的字节序列的偏移量以及影响行的事务列表。
数据库块被称为是原子的,至少部分地是因为数据库块是数据库服务器可以从持久性存储设备请求的数据库数据的最小单位。例如,当数据库服务器查找存储在数据块中的行时,该数据块只能通过读取整个数据块来从持久性存储设备中读取该行。
硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行该技术,或者可以包括数字电子设备(诸如被持久地编程为执行该技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行该技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程相结合,以实现该技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑以实现该技术的任何其它设备。
例如,图5是图示可以在其上实现本发明实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。
计算机系统500还包括耦合到总线502用于存储将由处理器504执行的信息和指令的主存储器506,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器506还可以用于存储在执行由处理器504执行的指令期间的临时变量或其它中间信息。当存储在处理器504可访问的非瞬态存储介质中时,这些指令使计算机系统500成为被定制以执行指令中指定的操作的专用机器。
计算机系统500还包括耦合到总线502用于存储用于处理器504的静态信息和指令的只读存储器(ROM)508或其它静态存储设备。提供存储设备510(诸如磁盘、光盘或固态驱动器)并耦合到总线502,用于存储信息和指令。
计算机系统500可以经由总线502耦合到显示器512(诸如阴极射线管(CRT)),用于向计算机用户显示信息。包括字母数字键和其它键的输入设备514耦合到总线502,用于将信息和命令选择传送到处理器504。另一种类型的用户输入设备是光标控件516(诸如鼠标、轨迹球或光标方向键),用于将方向信息和命令选择传送到处理器504并用于控制显示器512上的光标移动。这种输入设备通常在两个轴上具有两个自由度(第一轴(例如x)和第二轴(例如y)),这允许设备指定平面中的位置。
计算机系统500可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统相结合,使计算机系统500成为或将计算机系统500编程为专用机器)来实现本文所述的技术。根据一个实施例,响应于处理器504执行包含在主存储器506中的一个或多个指令的一个或多个序列,计算机系统500执行本文的技术。这些指令可以从另一个存储介质(诸如存储设备510)读入到主存储器506中。包含在主存储器506中的指令序列的执行使得处理器504执行本文所述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合。
如本文使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线502的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些波。
各种形式的介质可以参与将一个或多个指令的一个或多个序列携带到处理器504以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统500本地的调制解调器可以在电话线上接收数据并使用红外发射器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收的指令可以可选地在由处理器504执行之前或之后存储在存储设备510上。
计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是集成服务数字网(ISDN)卡、线缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口518可以是局域网(LAN)卡,以提供与兼容LAN的数据通信连接。还可以实现无线链路。在任何此类实现中,通信接口518都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以提供通过本地网络522到主计算机524或到由互联网服务提供商(ISP)526操作的数据装备的连接。ISP 526进而通过全球分组数据通信网络(现在通常称为“互联网”528)提供数据通信服务。本地网络522和互联网528两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及网络链路520上和通过通信接口518的信号(该信号将数字数据携带到计算机系统500并且从计算机系统500携带数字数据)是传输介质的示例形式。
计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518来发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、ISP526、本地网络522和通信接口518发送对应用程序的请求代码。
接收到的代码可以在被接收时由处理器504执行,和/或存储在存储设备510或其它非易失性存储装置中以供稍后执行。
在前述说明书中,已经参考许多具体细节描述了本发明的实施例,这些具体细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本申请产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。
软件概述
图6是可以用于控制计算机系统500的操作的基本软件系统600的框图。软件系统600及其组件,包括它们的连接、关系和功能,仅仅是示例性的,并且不意味着限制(一个或多个)示例实施例的实现。适于实现(一个或多个)示例实施例的其它软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。
提供软件系统600用于指导计算机系统500的操作。可以存储在系统存储器(RAM)506和固定存储装置(例如,硬盘或闪存)510上的软件系统600包括内核或操作系统(OS)610。
OS 610管理计算机操作的低级别方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。被表示为602A、602B、602C...602N的一个或多个应用程序可以被“加载”(例如,从固定存储装置510传送到存储器506中)以供系统600执行。意图在计算机系统500上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令集,例如,用于从互联网位置(例如,Web服务器、app商店或其它在线服务)进行下载和安装。
软件系统600包括图形用户接口(GUI)615,用于以图形(例如,“点击”或“触摸手势”)方式接收用户命令和数据。进而,这些输入可以由系统600根据来自操作系统610和/或(一个或多个)应用602的指令来操作。GUI 615还用于显示来自OS 610和(一个或多个)应用602的操作结果,用户可以供应附加的输入或终止会话(例如,注销)。
OS 610可以直接在计算机系统500的裸硬件620(例如,(一个或多个)处理器504)上执行。可替代地,管理程序或虚拟机监视器(VMM)630可以插入在裸硬件620和OS 610之间。在这个配置中,VMM 630充当计算机系统500的裸硬件620与OS 610之间的软件“缓冲垫(cushion)”或虚拟化层。
VMM 630实例化并运行一个或多个虚拟机实例(“客户机(guest machine)”)。每个客户机包括“客户”操作系统(诸如OS 610),以及被设计为在客户操作系统上执行的一个或多个应用(诸如(一个或多个)应用602)。VMM 630向客户操作系统呈现虚拟操作平台并管理客户操作系统的执行。
在一些实例中,VMM 630可以允许客户操作系统如同其直接在计算机系统500的裸硬件620上运行一样运行。在这些实例中,被配置为直接在裸硬件620上执行的客户操作系统的相同版本也可以在VMM 630上执行而无需修改或重新配置。换句话说,VMM 630可以在一些实例中向客户操作系统提供完全硬件和CPU虚拟化。
在其它实例中,客户操作系统可以被专门设计或配置为在VMM 630上执行以提高效率。在这些实例中,客户操作系统“意识到”它在虚拟机监视器上执行。换句话说,VMM 630可以在一些实例中向客户操作系统提供半虚拟化。
计算机系统进程包括硬件处理器时间的分配,以及存储器的分配(物理和/或虚拟)、用于存储由硬件处理器执行的指令的存储器的分配,用于存储由硬件处理器执行指令所生成的数据、和/或用于当计算机系统进程未运行时存储在硬件处理器时间的分配之间的硬件处理器状态(例如,寄存器的内容)。计算机系统进程在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。
云计算
本文一般地使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源的共享池(诸如计算机网络、服务器、软件应用和服务),并且允许以最少的管理工作或服务提供商交互来快速供给和释放资源。
云计算环境(有时称为云环境或云)可以以各种不同方式实现,以最好地适应不同要求。例如,在公共云环境中,底层计算基础设施由组织拥有,该组织使其云服务可供其它组织或公众使用。相反,私有云环境一般旨在供单个组织使用或在单个组织内使用。社区云旨在由社区内的若干组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。
一般而言,云计算模型使得先前可能由组织自己的信息技术部门提供的那些职责中的一些能够代替地作为云环境内的服务层来递送,以供消费者(根据云的公共/私有性质,在组织内部或外部)使用。取决于特定实施方案,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以有所不同,但常见示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供商管理或控制底层云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS供应者所支持的软件编程语言和开发工具,以开发、部署和以其它方式控制它们自己的应用,同时PaaS提供商管理或控制云环境的其它方面(即,运行时执行环境下的一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或提供进程、存储装置、网络和其它基础计算资源,同时IaaS提供商管理或控制底层物理云基础设施(即,操作系统层下面的一切)。数据库即服务(DBaaS),其中消费者使用在云基础设施上运行的数据库服务器或数据库管理系统,同时DbaaS提供商管理或控制底层云基础设施、应用和服务器(包括一个或多个数据库服务器)。
扩展和替代
虽然在前述说明书中描述的一些图包括具有按顺序示出的步骤的流程图,但是这些步骤可以以任何顺序执行,并且不限于那些流程图中示出的顺序。此外,一些步骤可以是可选的、可以被执行多次、和/或可以由不同的组件来执行。在各种实施例中,本文描述的流程图的所有步骤、操作和功能旨在指示使用专用计算机或通用计算机中的编程执行的操作。换句话说,本公开中的每个流程图结合本文的相关文本是用于对计算机进行编程以执行所描述的功能的算法的全部或部分的指南、规划或规范。已知与本公开相关联的领域的技术水平很高,因此,本公开中的流程图和相关文本已被准备为在本领域技术人员在他们关于程序、算法及其实现进行交流时通常所期望的充分和详细水平上传达信息。
在前述说明书中,已经参考许多具体细节描述了本发明的(一个或多个)示例实施例。但是,具体细节可能根据手头特定实现的要求而因实施方案而不同。因此,(一个或多个)示例实施例应被认为是说明性的而不是限制性的意义。
Claims (10)
1.一种方法,包括:
第一计算节点使用远程存储器数据访问(RDMA)从存储在第二计算节点的随机存取存储器(RAM)中的散列表中读取第一散列表桶;
其中,所述散列表包括多个散列表桶,所述多个散列表桶中的每个散列表桶包括相应的多个元素,每个元素对应于在从所述第二计算节点的NVRAM分配的非易失性高速缓存(NV高速缓存)中高速缓存的数据块;
确定所述第一散列表桶中的第一元素对应于存储在所述NV高速缓存内的高速缓存位置处的第一数据块;以及
所述第一计算节点使用RDMA从所述NV高速缓存中的所述高速缓存位置读取所述第一数据块的至少一部分。
2.如权利要求1所述的方法,还包括:
确定所述第一元素包括指示所述第一元素有效的标志;以及
其中,所述第一计算节点使用RDMA读取所述第一数据块的至少一部分是响应于确定所述第一元素包括指示所述第一元素有效的标志而执行的。
3.如权利要求2所述的方法,还包括:
当所述第一计算节点使用RDMA读取所述第一数据块的至少一部分时,确定有效期已经到期;
响应于确定所述有效期已经到期,停止读取所述第一数据块。
4.如权利要求3所述的方法,还包括:
所述第二计算节点选择所述NV高速缓存内的所述第一数据块以进行替换;
所述第二计算节点设置所述第一元素中的标志以指定所述第一元素无效;以及
所述第二计算节点在替换所述NV高速缓存中的所述第一数据块之前至少等待所述有效期。
5.如权利要求1所述的方法,其中确定所述第一散列表桶中的第一元素对应于存储在所述NV高速缓存内的高速缓存位置处的第一数据块包括确定所述第一数据块的原始位置与作为所述第一元素的属性存储的原始位置匹配。
6.如权利要求1所述的方法,其中对于所述多个散列表桶中的每个散列表桶,所述相应的多个元素中的每个元素作为阵列元素存储在阵列中,所述阵列存储在所述NVRAM的连续区域中。
7.如权利要求6所述的方法,其中,所述第一计算节点使用RDMA从存储在NVRAM中的散列表中读取第一散列表桶包括使用RDMA来整体读取所述阵列并将所述阵列整体存储在所述第一计算节点的随机存取存储器(RAM)中的目标地址处。
8.如权利要求7所述的方法,还包括:所述第一计算节点读取存储在所述计算节点的所述RAM中的所述阵列的每个元素,以确定作为所述每个元素的属性存储的原始位置是否与所述第一数据块的原始位置匹配。
9.如权利要求8所述的方法,其中,所述第一数据块的所述原始位置是所述数据块在所述第二计算节点的持久性存储装置中的存储位置,所述NV高速缓存用于将存储在所述持久性存储装置中的数据块进行高速缓存。
10.如权利要求1所述的方法,其中:
第一数据块存储在所述第二计算节点的持久性存储装置中的原始位置处,所述持久性存储装置不包括所述NVRAM;
其中,所述方法还包括应用散列函数以将所述第一散列表桶识别为与所述第一数据块对应;以及
其中,使用RDMA从存储在第二计算节点的NVRAM中的散列表中读取第一散列表桶包括所述第一节点发起RDMA读取请求,以在所述存储器地址处读取所述NVRAM。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/720,972 | 2017-09-29 | ||
US15/720,972 US10956335B2 (en) | 2017-09-29 | 2017-09-29 | Non-volatile cache access using RDMA |
PCT/US2018/053487 WO2019067937A1 (en) | 2017-09-29 | 2018-09-28 | METHOD FOR READING STORED DATA IN NON-VOLATILE CACHE MEMORY USING AN RDMA |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111095225A true CN111095225A (zh) | 2020-05-01 |
CN111095225B CN111095225B (zh) | 2024-06-11 |
Family
ID=
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297234A (zh) * | 2020-09-30 | 2021-08-24 | 阿里云计算有限公司 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
US11847063B2 (en) | 2022-01-11 | 2023-12-19 | International Business Machines Corporation | Reinforcing high availability of distributed relational databases |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143364A1 (en) * | 2012-11-21 | 2014-05-22 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
CN104123235A (zh) * | 2013-04-26 | 2014-10-29 | 国际商业机器公司 | 访问存储在服务器上高速缓存中的数据记录的设备和方法 |
US20160103767A1 (en) * | 2014-10-09 | 2016-04-14 | Netapp, Inc. | Methods and systems for dynamic hashing in caching sub-systems |
CN105612490A (zh) * | 2013-10-02 | 2016-05-25 | 网络装置公司 | 用于分布式存储架构的盘区散列技术 |
US20160328301A1 (en) * | 2012-12-19 | 2016-11-10 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143364A1 (en) * | 2012-11-21 | 2014-05-22 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
US20160328301A1 (en) * | 2012-12-19 | 2016-11-10 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
CN104123235A (zh) * | 2013-04-26 | 2014-10-29 | 国际商业机器公司 | 访问存储在服务器上高速缓存中的数据记录的设备和方法 |
CN105612490A (zh) * | 2013-10-02 | 2016-05-25 | 网络装置公司 | 用于分布式存储架构的盘区散列技术 |
US20160103767A1 (en) * | 2014-10-09 | 2016-04-14 | Netapp, Inc. | Methods and systems for dynamic hashing in caching sub-systems |
Non-Patent Citations (1)
Title |
---|
张建宇;韦韬;邹维;: "一种基于自适应缓存机制的报文分类算法", 计算机研究与发展, no. 02 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297234A (zh) * | 2020-09-30 | 2021-08-24 | 阿里云计算有限公司 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
CN113297234B (zh) * | 2020-09-30 | 2023-03-14 | 阿里云计算有限公司 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
US11847063B2 (en) | 2022-01-11 | 2023-12-19 | International Business Machines Corporation | Reinforcing high availability of distributed relational databases |
Also Published As
Publication number | Publication date |
---|---|
WO2019067937A1 (en) | 2019-04-04 |
EP3688598B1 (en) | 2022-08-31 |
CA3070006C (en) | 2023-11-21 |
EP3688598A1 (en) | 2020-08-05 |
US20190102309A1 (en) | 2019-04-04 |
CA3070006A1 (en) | 2019-04-04 |
US10956335B2 (en) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732836B2 (en) | Remote one-sided persistent writes | |
CA3070006C (en) | Method for reading data stored in a non-volatile cache using rdma | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
US10915408B2 (en) | Snapshot for grouping and elastic replication of virtual machines | |
US11307935B2 (en) | Management of volume snapshots in a data storage system | |
US10678614B2 (en) | Messages with delayed delivery in an in-database sharded queue | |
US20210141917A1 (en) | Low latency access to physical storage locations by implementing multiple levels of metadata | |
US8868487B2 (en) | Event processing in a flash memory-based object store | |
CN112534419A (zh) | 到备用数据库的自动查询卸载 | |
US11922537B2 (en) | Resiliency schemes for distributed storage systems | |
US11188516B2 (en) | Providing consistent database recovery after database failure for distributed databases with non-durable storage leveraging background synchronization point | |
US10698637B2 (en) | Stale block resynchronization in NVM based systems | |
US11775527B2 (en) | Storing derived summaries on persistent memory of a storage device | |
EP4031986B1 (en) | Rdma-enabled key-value store | |
CN111095225B (zh) | 使用rdma读取非易失性高速缓存中存储的数据的方法 | |
US20240119006A1 (en) | Dual personality memory for autonomous multi-tenant cloud environment |
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 |