CN104123235A - 访问存储在服务器上高速缓存中的数据记录的设备和方法 - Google Patents

访问存储在服务器上高速缓存中的数据记录的设备和方法 Download PDF

Info

Publication number
CN104123235A
CN104123235A CN201410171220.0A CN201410171220A CN104123235A CN 104123235 A CN104123235 A CN 104123235A CN 201410171220 A CN201410171220 A CN 201410171220A CN 104123235 A CN104123235 A CN 104123235A
Authority
CN
China
Prior art keywords
server
key
client
data recording
metadata
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
Application number
CN201410171220.0A
Other languages
English (en)
Other versions
CN104123235B (zh
Inventor
X.R.格林
T.J.萨洛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zitiao Network Technology Co Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104123235A publication Critical patent/CN104123235A/zh
Application granted granted Critical
Publication of CN104123235B publication Critical patent/CN104123235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

服务器和/或客户端存储元数据哈希映射,所述元数据哈希映射包括与用于存储在服务器上的高速缓存中的数据记录的键相关联的一个或多个条目。每个条目存储对应的数据记录的元数据,其中所述元数据包括服务器侧远程指针以及所述键的版本标识符,所述服务器侧远程指针引用存储在所述高速缓存中的对应的数据记录。使用所提供的键通过以下访问所选择的数据记录:(1)使用所提供的键标识在所述元数据哈希映射中的可能匹配的条目;(2)使用来自可能匹配的条目的服务器侧远程指针来访问存储在高速缓存中的数据记录;以及(3)使用所提供的键和来自可能匹配的条目的版本标识符来确定所访问的数据记录是否匹配于所选择的数据记录。

Description

访问存储在服务器上高速缓存中的数据记录的设备和方法
技术领域
本发明一般而言涉及由计算机进行的数据库管理系统,并且特别地涉及RDMA优化的高性能分布式高速缓存(cache)。
背景技术
当今的消费者要求即时响应的驱动器应用以开发多种缓存方案。小规格的应用可以依赖本地高速缓存和复制(replication)。然而,在各请求之间的服务器相似性(affinity)不能被确保且涉及的数据空间是庞大的情况下,当向外扩展因特网应用和使用云时,不再能够使用本地高速缓存。替代地,系统不得不依赖于必须被远程访问的划分的并分布的高速缓存(例如WebSphere Extreme ScaleTM或Oracle CoherenceTM)。
常规的键-值(key-value)高速缓存架构是使得客户端通过将键作为参数而传递的网络发送对数据的请求到服务器。服务器在其高速缓存中为了所关联的对象-值、例如对于数据对象的句柄(handle)或到数据对象指针而进行键查找(通常基于哈希(hash))。如果找到,则数据对象被串行化并被返回给客户端。在接收到串行化的数据对象时,客户端对其去串行化并将其返回到进行请求的应用。
发明内容
根据本发明的一个或多个实施例,提供了用于访问存储在服务器上的高速缓存中的一个或多个数据记录的方法、设备和制造品。服务器和/或客户端存储元数据哈希映射(map),其包括一个或多个与用于存储在服务器上的高速缓存中的数据记录的键相关联的条目(entry)。每一个条目存储用于对应的数据记录的元数据,其中该元数据包括引用(reference)存储在高速缓存中的对应的数据记录的服务器侧远程指针以及键的版本标识符。通过以下使用所提供的键访问所选择的数据记录:(1)使用所提供的键标识在元数据哈希映射中的可能匹配的条目;(2)使用来自元数据哈希映射中的可能匹配的条目的服务器侧远程指针来访问存储在高速缓存中的一个或多个数据记录;和(3)使用所提供的键和来自元数据哈希映射中的可能匹配的条目的版本标识符来确定所访问的数据记录是否匹配于所选择的数据记录。
附图说明
现在参考附图,附图中相同的参考数字通篇代表相应的部分:
图1是图解可以用于实现本发明的至少一个实施例的要素的示例网络数据处理系统的图。
图2是图解可以用于实现本发明的至少一个实施例的要素的示例数据处理系统的图。
图3是图解可以用于实现本发明的至少一个实施例的要素的示例数据处理系统的图。
图4A是图解根据本发明的至少一个实施例的使用RDMA用于高速缓存的系统环境的示意图。
图4B是图解根据本发明的至少一个实施例的与RDMA操作一起使用的元数据哈希映射的示意图。
图4C是图解根据本发明的至少一个实施例的服务器在某个指定的时间将来自元数据哈希映射的条目传输到一个或多个客户端的示意图。
图5是图解根据本发明的至少一个实施例的使用RDMA优化的高速缓存来访问存储在服务器上的高速缓存中的数据记录的一般步骤或功能的流程图。
具体实施方式
在以下描述中,参考附图,该附图形成本说明书的一部分并且在附图中通过图解示出其中可以实施本发明的一个或多个具体实施例。应该理解,可以利用其它实施例,并且可以不脱离本发明的范围而进行结构的和功能的改变。
概述
在以上“背景技术”中描述的流程需要至少四次通过TCP/IP堆栈,例如,客户端到网络接口控制器(NIC)、NIC到服务器、服务器到NIC和NIC到客户端。此外,数据对象需要两次经历(去)串行化操作,并且数据对象在其流经众多的I/O堆栈层时被多次复制。因此,远程访问可能比本地访问慢了多达三个数量级(即数百微妙vs.纳秒)。这或者完全阻止了向外扩展应用,或者使得应用过分地慢。
在此描述的本发明的实施例包括重新架构的、分布式键-值对高速缓存,其被适当地配置用于RDMA(Remote Direct Memory Access远程直接存储器访问)通信,避免上面描述的TCP/IP协议堆栈问题,并降低数据传输的操作系统涉及。这得到通过网络的极其快的、基于键的高速缓存查找。
代替为客户端提供到存储在服务器上的高速缓存的远程获得/放置接口(get/put interface),服务器提供了客户端可访问的元数据哈希映射,其包括由高速缓存条目的键配对到包括它们的远程RDMA指针和键的版本标识符的元数据而组成的键-值对。元数据哈希映射允许客户端使用键来查找高速缓存条目的元数据,然后在单侧RDMA操作中使用远程RDMA指针并进行与键的版本标识符的比较来访问在服务器上的高速缓存条目。
单侧RDMA操作不涉及服务器侧的软件,因为这些操作由RDMA NIC进行,其中NIC进行直接到或来自于服务器的存储器的DMA操作,这导致甚至在重负载以下的非常低的服务器CPU利用率。具体地,可以使用单侧RDMA操作来实现读取、更新和删除操作,而创建操作需要一些服务器侧的软件涉及,因为创建操作引入了新键。
因此,本发明可以用于诸如零售、旅行、银行业务、信息服务等的与上下文高度相关的和个人化的应用的更快的页面呈现。本发明的实施例还可以用于诸如零售、移动、信用卡等的“大数据”应用的更快的实时分析中。另外,本发明的实施例可以用于诸如高速数据捕捉、实时(on-the-fly)的数据丰富等的任何以因特网规模通信速率的数据处理。
因此,本发明的实施例所展示的优点是实际的并且自然几乎是颠覆性的。RDMA优化的高速缓存通过增加总处理能力并加速依赖于对分布式数据的访问的等待时间至关重要的消费者情景而“超越(leapfrog)”了现有技术的性能。
本申请与以上标识的交叉引用的申请提供了另外的改进:
1.消除了保留键的客户端侧复制本的必要性。
2.消除了广播者将服务器侧修改多播(multicast)到客户端的必要性。
3.引入了对键的版本控制(versioning)。
在此实施例中,服务器在大的预分配的并固定的(pinned)/登记的存储器页中存储所有高速缓存条目。对于每个被添加到高速缓存的条目,创建包含关于条目在高速缓存中的位置的信息以及对于条目的键的版本的元数据。该元数据可以用于经由RDMA网络适配器从服务器的外部访问高速缓存条目。
服务器在通过RDMA已知的存储而分配的存储器区域中连续地存储条目的键和数据值。键也包括唯一的版本标识符,其等同于在它的元数据中存储的标识符。服务器存储到高速缓存条目的句柄或指针以及在元数据哈希映射中的通过条目的键而散列的(hashed)键的版本标识符。
元数据哈希映射被存储在服务器上,而客户端可以仅存储来自该元数据哈希映射的条目的子集。通过使用实质上减少冲突(collision)并因此避免在客户端存储器中存储键的高级散列技术,元数据哈希映射被保持为相对小,对于甚至具有几十千兆字节(GB)大小的大的高速缓存具有几十兆字节(MB)的大小。
在启动时,客户端以空的元数据哈希映射开始,该空的元数据哈希映射充当本地元数据高速缓存。因此,客户端对于高速缓存丢失(miss)、高速缓存命中和陈旧元数据不同地做出反应。客户端使用它的元数据哈希映射来本地查找远程高速缓存条目的句柄并使用它来通过RDMA直接对条目进行CRUD(创建、读取、更新、删除)操作。
硬件和软件环境
如本领域技术人员将认识到的,本发明的方面可以体现为系统、方法或计算机程序产品。因而,本发明的方面可以采取完全硬件实施例、完全软件实施例(包括固件,常驻软件,微代码等)或组合了软件和硬件方面的实施例的形式,其所有通常可以在此称为“电路”“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个具有在其上包括的计算机可读程序代码的计算机可读介质的计算机程序产品的形式。
可以利用一个或多个计算机可读介质的组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电、磁、光、电磁、红外线或半导体系统、设备或装置、或以上的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽的列表)将包括如下:具有一条或多条导线的电连接、便携计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或以上的任意适当的组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储用于由指令执行系统、设备或者装置使用或与该指令执行系统、设备或者装置结合使用的程序的任何切实的介质。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者设备使用或者与其结合使用的程序。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以下参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令通过计算机的处理器或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在能使得计算机、其它可编程数据处理装置或其它设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生出包括实现流程图和/或框图中的方框中规定的功能/动作的指令的制造品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,连续示出的两个方框实际上可以基本并行地执行,或者这些块有时也可以按相反的顺序执行,这依赖于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合可以由执行规定的功能或动作的专用的基于硬件的系统或者由专用硬件与计算机指令的组合来实现。
现在参考图1,给出了其中可以实现本发明的网络数据处理系统100的图形表示。网络数据处理系统100包含网络102,其是用于提供在网络数据处理系统100内连接在一起的各种装置和计算机之间的通信链接的介质。网络102可以包括诸如导线、无线通信链接或光纤电缆等的连接。
在所描述的示例中,服务器104与存储单元106一起连接到网络102。另外,客户端108、110和112连接到网络102。这些客户端108、110和112可以是例如个人计算机或网络计算机。在所描述的示例中,服务器104提供诸如引导文件、操作系统图像和程序的数据到客户端108、110和112。客户端108、110和112是对于服务器104的客户端。网络数据处理系统100可以包括另外的服务器、客户端和其它未示出的装置。在所描述的示例中,网络数据处理系统100是具有代表使用TCP/IP协议套件来彼此通信的网络和网关的世界范围集合的网络102的因特网。
参考图2,依照本发明的实施例描绘了可以实施为服务器、例如图1的服务器104的数据处理系统的框图。数据处理系统200可以是包括多个连接到系统总线206的处理器202和204的对称多处理器(SMP)系统。替代地,可以采用单处理器系统。存储器控制器/高速缓存208也连接到系统总线206,该存储器控制器/高速缓存208提供到本地存储器209的接口。I/O总线桥210连接到系统总线206,并提供到I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可以如所绘而被集成。
连接到I/O总线212的外围组件互连(PCI)总线桥214提供到PCI局部总线216的接口。多个调制解调器可以连接到PCI局部总线216。典型的PCI总线实现将支持四个PCI扩展槽或内插(add-in)连接器。可以通过经内插板连接到PCI局部总线216的调制解调器218和网络适配器220来提供到图1中的网络计算机108、110和112的通信链接。另外的PCI总线桥222和224提供用于另外的PCI局部总线226和228的接口,从这些另外的PCI局部总线可以支持另外的调制解调器和网络适配器。以此方式,数据处理系统200允许到多个网络计算机的连接。存储器映射的图形适配器230和硬盘232也可以如所绘直接或间接地连接到I/O总线212。
本领域技术人员会理解,图2中描述的硬件可以变化。例如,除了或替代所描述的硬件,也可以使用诸如光盘驱动器等的其它外围装置。所描述的示例并不打算暗示对本发明的架构限制。
在图2描述的数据处理系统200可以是例如运行高级交互执行(AIX)操作系统或LINUX操作系统的IBM e-服务器p系列系统,其是位于纽约阿芒克的国际商业机器公司的产品。
服务器104可以提供可以被用户访问以允许对于本发明的实施例的方面的用户交互的合适的网站或其它基于因特网的图形用户界面。在一个实施例中,网景(Netscape)网页服务器、IBM的WebSphere因特网工具套件、用于Linux、Unix和Windows的IBM DB2(也称为“用于LUW的IBM DB2”)平台和Sybase的数据库平台与Sun Solaris操作系统平台结合而使用。另外,诸如JBDC驱动器,IBM连接池化(pooling)和IBM MQ系列连接方法的组件可以用于提供到几个源的数据访问。如在此使用的术语网页并不打算限制可以用于与用户交互的文档或程序的类型。例如,除标准HTML文档以外,典型的网站可以包括多种形式、Java小应用程序、Java脚本、动态服务器页面(ASP)、Java服务器页面(JSP)、公共网关接口脚本(CGI)、可扩展标记语言(XML)、动态HTML,级联样式表(CSS)、帮助程序、插件等。
现在参考图3,描绘了图解其中可以实现本发明的实施例的方面的数据处理系统的框图。数据处理系统300是客户端计算机的示例。数据处理系统300使用外围组件互连(PCI)局部总线架构。尽管所描述的示例使用PCI总线,但是可以使用诸如加速图形端口(AGP)和工业标准架构(ISA)的其它总线架构。处理器302和主存储器304通过PCI桥308连接到PCI局部总线306。PCI桥308也可以包括集成存储器控制器和用于处理器302的高速缓存存储器。到PCI局部总线306的另外的连接可以通过直接组件互连或通过内插板来完成。在所描述的示例中,局域网(LAN)适配器310、小型计算机系统界面(SCSI)主机总线适配器312和扩展总线接口314通过直接组件连接而连接到PCI局部总线306。与此相对,音频适配器316、图形适配器318和音频/视频适配器319通过插入到扩展槽中的内插板而连接到PCI局部总线306。
扩展总线接口314提供用于键盘和鼠标适配器320、调制解调器322和另外的存储器324的连接。SCSI主机总线适配器312提供用于硬盘驱动器326、磁带驱动器328和CD-ROM驱动器330的连接。典型的局部总线实施将支持三个或四个PCI扩展槽或内插连接器。
操作系统运行于处理器302上,并用于协调和提供在图3的数据处理系统300内的各种组件的控制。该操作系统可以是商业上可用的操作系统,比如Windows,其可从微软公司获得。诸如Java的面向对象的编程系统可以与操作系统结合运行并通过从Java程序或者在数据处理系统300上执行的程序对操作系统的调用。“Java”是太阳微系统公司的注册商标。用于操作系统的指令、面向对象的操作系统和程序位于诸如硬盘驱动器326的存储设备中,并可以被加载到主存储器304中用于由处理器302执行。
本领域技术人员会理解,图3中的硬件可以取决于实现而变化。除了或替代图3中所描述的硬件,可以使用其它内部硬件或外围设备、比如闪存ROM(或等效的非易失存储器)或光学驱动器等。同样,本发明的处理可以应用到多处理器数据处理系统。
作为另一示例,数据处理系统300可以是独立的系统,被配置为不依靠某种类型的网络通信接口而可启动,无论数据处理系统300是否包括某种类型的网络通信接口。作为进一步的示例,数据处理系统300可以是个人数字助理(PDA)设备,其被配置有ROM和/或快闪ROM以便提供非易失存储器用于存储操作系统文件和/或用户生成的数据。
图3中所绘的示例和以上描述的示例不打算暗示架构性限制。例如,数据处理系统300可以是笔记本计算机或手持计算机以及PDA。另外,数据处理系统300也可以是信息站(kiosk)或网页装置。另外,本发明可以存在于任意的由计算机系统使用的数据存储介质(即,软盘、致密盘、硬盘、磁带、ROM、RAM等)上。(术语“计算机”、“系统”、“计算机系统”和“数据处理系统”在此可互换使用。)
RDMA优化的高速缓存
图4A是图解使用RDMA用于高速缓存的系统环境的示意图,该系统环境包括通过RDMA NIC404和406连接到客户端402的服务器400,其中RDMA NIC404和406使用标准联网协议而通信。RDMA的核心概念是远程指针408a、408b的使用。服务器400输出服务器侧远程指针408a到客户端402,其查阅(refer to)在存储在服务器400的存储器414中的固定的/登记的页412中的数据记录410。类似地,客户端402可以具有客户端侧远程指针408b,其查阅在存储在客户端402的存储器416中的固定的/登记的页412中的数据记录410,该指针可以输出或可以不输出到服务器400。在这两个实例中,指针408a、408b包括句柄,该句柄包括页412值和记录410的地址值。存储在服务器400的存储器414中的页412中的记录410提供高速缓存,而存储在客户端402的存储器416中的页412中的记录410提供用于由客户端402执行的一个或多个应用的数据(未示出)。单侧的RDMA操作允许客户端402使用服务器侧远程指针408a直接访问(读取和盖写)存储在服务器400的存储器414中的页412中的记录410。
具体地,客户端402的RDMA NIC406远程控制服务器400的RDMANIC404。从客户端402的存储器416取回远程指针408a。RDMA NIC406然后将该远程指针408a传输到服务器400的RDMA NIC404。RDMA NIC404进行DMA(直接存储器访问)操作,将记录410传送到服务器400的存储器414中和从服务器400的存储器414中传送出去,如远程指针408a所指定的。类似地,客户端402的RDMA NIC406进行DMA操作,将记录410传送到客户端402的存储器416中和从客户端402的存储器416中传送出去,这可以指定或否则与远程指针408b相关联。
这些RDMA操作不需要任何软件在服务器400或客户端402中的执行,由此没有CPU涉及并且没有在服务器400或客户端402上的CPU利用。从而,这得到客户端402进入和离开服务器400的存储器414的非常快的、近似线速(wire speed)的远程访问(以及类似地,服务器400进入和离开客户端402的存储器416的远程访问)。例如,由客户端402对存储在服务器400的存储器414中的记录410的读取或盖写可以在单个数位的微秒内发生。
在本发明的一个实施例中,与RDMA操作一起使用元数据哈希映射418,如图4B所示。服务器400创建元数据哈希映射418,其中在元数据哈希映射418中的每个条目或槽与记录410的键420相关联,其中键420被散列以选择哈希映射418中的槽。在元数据哈希映射418中的相关联的条目存储包括用于记录410的元数据的对象-值422,其中该元数据包括用于记录410的服务器侧远程指针408a以及键420的版本标识符422c,该服务器侧远程指针408a包括存储了记录410的页412的地址422a和记录410在页412内的地址422b。该元数据还可以包括数据410的大小(未示出)。
元数据哈希映射418的大小通常仅是为记录410和页412所分配的存储器414的量的一小部分。例如,与为记录410所分配的可以具有几十千兆字节的大小的存储器414中的页412相比较,元数据哈希映射418可以具有几十兆字节的大小。通过使用实质上减少了冲突的高级散列技术,元数据哈希映射418可以被保持为相对小(例如元数据哈希映射418不需要包含所有条目的键420,而仅需要包含具有实际冲突的那些槽的键)。
如图4C所示,服务器400在某个指定的时间将来自元数据哈希映射418的一个或多个条目传输到一个或多个客户端,如箭头(1)所表示的。一般而言,这将在响应于由服务器400在客户端402的指示(direction)下进行的CRUD(创建、读取、更新、删除)操作而更新服务器400上的元数据哈希映射418时发生。
典型地,客户端402将仅在它们的元数据哈希映射418的本地复制本中维持在服务器400的元数据哈希映射418中发现的条目的子集。客户端402可以使用它们的元数据哈希映射418的本地复制本来使用键420本地查找与记录410相关联的元数据,以便对存储在服务器400的存储器414中的记录410进行使用RDMA的CRUD(创建、读取、更新、删除)操作。
最后,服务器400在某个其他指定的时间将来自其元数据哈希映射418的一个或多个条目传输到一个或多个客户端402,如箭头(3)所表示的。例如,这也可以发生在例如由客户端402请求时、在客户端402启动时、在由服务器400请求时、在服务器400启动时、在元数据哈希映射418为了其它原因而改变时或在其它间隔时等等。
CRUD操作
使用本发明的实施例的RDMA优化的高速缓存进行的CRUD操作的细节在以下详细描述。如之前所述,对记录410的读取和盖写很少涉及或不涉及任意软件在服务器400中的执行,由此有很少的或没有CPU涉及以及很少的或没有在服务器400上的CPU利用。另一方面,对记录410的创建或删除可能需要软件在服务器400中的更多的执行。
此外,记录410的创建、删除或更新还可能需要将维持在服务器400上的元数据哈希映射418中条目的复制本传输到客户端402,使得在记录410被创建、删除或更新时客户端402上的元数据哈希映射418的复制本可以被更新。
创建
在创建(或插入)操作中,进行以下步骤:
·客户端402进行RDMA-发送操作并传递来自新记录410的键420、用于键420的哈希码和用于键420的值。
·服务器400在它的存储器414中的页412中分配和登记新记录410。与新记录410相关联的是从客户端402接收的键420和用于键420的值、以及包括新记录410的元数据的对象-值422,其中该元数据包括用于新记录410的服务器侧远程指针408a(即到服务器400的本地指针)以及键420的版本标识符422c,该服务器侧远程指针408a包括存储记录410的页412的地址422a和记录410在页412之内的地址422b。
·服务器400使用键420的哈希码来标识元数据哈希映射418中的槽并将包括新记录410的元数据的对象-值422添加到元数据哈希映射418中的槽,其中该元数据包括新记录410的服务器侧远程指针408a(即到服务器400的本地指针)以及键420的版本标识符422c,该服务器侧远程指针408a包括存储记录410的页412的地址422a和记录410在页面412内的地址422b。如果成功,则服务器400将确认(acknowledgement,ACK)传输到客户端402,其包括对于新记录410的来自元数据哈希映射418的对象-值422。当客户端402接收到ACK时,通过在元数据哈希映射418的槽中添加该对象-值422而更新它的元数据哈希映射418。
·否则,如果未成功,服务器400将非确认(non-acknowledgementNACK)传输到客户端402。当客户端402接收到NACK时,其返回错误指示到一个或多个应用。
创建(或插入)操作的结果包括以下:
·服务器400上的高速缓存包括新记录410。
·服务器400上的元数据哈希映射418被更新为反映服务器400上的高速缓存的当前状态。
·在客户端402上的元数据哈希映射418中的一个或多个条目被更新为反映服务器400上的高速缓存的当前状态。
创建(或插入)操作的等待时间是:
·对于在服务器400上的创建操作通常为10-30μs。
·直至客户端402已经接收到对象-值422的另外的10-15μs。
读取
在读取操作中,进行以下步骤:
·客户端402散列期望的记录410的键420以在它的元数据哈希映射418的复制本中标识存储了包括记录410的元数据的对象-值422的一个或多个条目,其中该元数据包括记录410的服务器侧远程指针408a以及键420的版本标识符422c,该服务器侧远程指针408a包括存储记录410的页412的地址422a和记录410在页412内的地址422b。
·具体地,键420的散列返回来自元数据哈希映射418的一个或多个可能匹配的条目的集合。低冲突散列功能确保了具有超过一个来自元数据哈希映射418的可能匹配的条目的集合是稀少的。
·对于每一个可能匹配的条目,进行以下步骤:
■客户端402在它的存储器416中的页412中分配和登记用于记录410的本地数据结构。(这可以在启动时进行一次,并且对随后的操作再次使用。)与本地数据结构相关联的并引用记录410和页412两者的是客户端侧远程指针408b。
■客户端402使用来自哈希映射418的服务器侧远程指针408a作为源并使用客户端侧远程指针408b作为目标进行在服务器400上的单侧RDMA-读取操作,并且服务器400上的记录410被复制到客户端402上的记录410中。
■客户端402确定从服务器400返回的记录410中的键420是否匹配于期望的记录410的键420。
■如果键420匹配,则客户端402确定从服务器400返回的记录410中的版本标识符422c是否匹配于在客户端402上存储的元数据哈希映射418的对象-值422中发现的版本标识符422c。
■如果版本标识符422c匹配,则键420有效,并且记录410有效。客户端402可以照原样使用在其记录410中的数据或将其复制到别处。
■如果版本标识符422c不匹配,则元数据哈希映射418中的条目是陈旧的,并且该条目被从元数据哈希映射418移除。
■在完成之后,客户端402可以保持或清空任意被分配的存储器。
·如果键420不匹配,或如果键420匹配但是版本标识符422c不匹配,则客户端402发送键420到服务器400并且主动请求取回相关联的数据记录410。作为响应,服务器400可以将确认(ACK)传输到客户端402并返回包括键420的相关联的数据记录410和对象-值422,且客户端402返回数据记录410到一个或多个应用并利用对象-值422更新其元数据哈希映射418。否则,如果不成功,则服务器400将非确认(NACK)传输到客户端402,并且客户端402返回错误指示到一个或多个应用。读取操作的结果包括如下:
·可以用所请求的键420的新的或有效的对象-值422更新在客户端402上的元数据哈希映射418。
·数据记录410或错误指示可以被返回到一个或多个应用。
读取操作的等待时间是:
·当键和版本标识符匹配时,通常是3-10μs;否则,是10-30μs以请求来自服务器400的数据记录410。
更新
在更新操作中,进行以下步骤:
·客户端402散列期望的记录410的键420以在它的元数据哈希映射418的复制本中标识存储了包含用于记录410的元数据的对象-值422的一个或多个条目,其中该元数据包括用于记录410的服务器侧远程指针408a以及键420的版本标识符422c,该服务器侧远程指针408a包括存储了记录410的页412的地址422a和记录410在页412之内的地址422b。
·具体地,键420的散列返回来自元数据哈希映射418的一个或多个可能匹配的条目的集合。低冲突散列功能确保了具有超过一个来自元数据哈希映射418的可能匹配的条目的集合是稀少的。
·对于每一个可能匹配的条目,进行以下步骤:
■客户端402在它的存储器416中的页面412中分配和登记用于记录410的本地数据结构。(这可以在启动时进行一次,并且对随后的操作再次使用。)与本地数据结构相关联的并引用记录410和页412两者的是客户端侧远程指针408b。
■客户端402使用来自哈希映射418的服务器侧远程指针408a作为源并使用客户端侧远程指针408b作为目标进行在服务器400上的单侧RDMA-读取操作,并且服务器400上的记录410被复制到客户端402上的记录410中。
■客户端402确定从服务器400返回的记录410中的键420是否匹配于期望的记录410的键420。
■如果键420匹配,则客户端402确定从服务器400返回的记录410中的版本标识符422c是否匹配于在客户端402上存储的元数据哈希映射418的对象-值422中发现的版本标识符422c。
■如果版本标识符422c匹配,则键420有效,并且记录410有效。客户端402使用客户端侧远程指针408b作为源并使用来自哈希映射418的服务器侧远程指针408a作为目标在服务器400上进行单侧的RDMA-写入操作。
■如果版本标识符422c不匹配,则元数据哈希映射418中的条目是陈旧的,并且该条目被从元数据哈希映射418移除。
■在完成之后,客户端402可以保持或清空任意被分配的存储器。
·如果(a)键420不匹配,或(b)键420匹配但是版本标识符422c不匹配,或(c)键420匹配且版本标识符422c匹配但是之前的数据记录410的大小小于新数据记录410的大小,则客户端402发送该数据记录410到服务器400并且主动请求更新存储在服务器400上的相关联的数据记录410。服务器400产生新的版本标识符并更新数据记录410以及元数据哈希映射418。
·在接收到更新请求之后,服务器400在它的元数据哈希映射418中定位用于由客户端402在消息中传递的键420的槽。
·如果该槽有效,则服务器400在它的存储器414中的页412中分配和登记新记录410。与新记录410相关联的是从客户端402接收的键420和用于键420的值、以及包括新记录410的元数据的对象-值422,其中该元数据包括用于新记录410的服务器侧远程指针408a(即到服务器400的本地指针)以及键420的版本标识符422c,该服务器侧远程指针408a包括存储记录410的页412的地址422a和记录410在页面412内的地址422b。
·一旦新记录410被创建,服务器400用来自新记录410的信息来替换用于键420的元数据哈希映射418中的相关联的槽中的旧记录410,并且通过将其版本标识符设置为无效和返回其存储器区域到分配器的空闲池来移除旧记录410。
·如果成功,则服务器400将确认(ACK)传输到客户端402,并且返回键420和更新的对象-值422,其中客户端402返回成功指示到一个或多个应用,并用被更新的对象-值422来更新其元数据哈希映射418。
·否则,如果不成功,则服务器400将非确认(NACK)传输到客户端402,并且客户端402返回错误指示到一个或多个应用。
更新操作的结果包括如下:
·在客户端402上的记录410被复制到服务器400上的记录410中,由此更新服务器400上的高速缓存。
·可以用所请求的键420的新的或有效的对象-值422来更新服务器400和客户端402两者上的元数据哈希映射418。
更新操作的等待时间是:
·当匹配发生时,通常是2-5μs;否则是10-30μs。
删除
在删除操作中,进行以下步骤:
·客户端402散列键420并进行RDMA-发送操作,将键420和用于键420的哈希码传递到服务器400。
·服务器400使用键420和用于键420的哈希码在它的元数据哈希映射418的复制本中标识存储了对象-值422的条目。
·如果来自服务器400上的元数据哈希映射418的键420匹配于从客户端402接收的键420,则从服务器400上的元数据哈希映射418移除该条目,并从服务器400上的高速缓存移除该数据记录410(即,该版本标识符被设置为无效,并且其存储器被返回到分配器的空闲池)。
·如果成功,服务器400将确认(ACK)传输到客户端402,其包括对象-值422,并且客户端402返回成功指示到一个或多个应用并从其元数据哈希映射418移除该条目。
·否则,如果不成功,则服务器400将非确认(NACK)传输到客户端402,并且客户端402返回错误指示到一个或多个应用。
删除操作的结果包括如下:
·在服务器400上的记录410可以被删除,服务器400上的元数据哈希映射418可以被更新。
·客户端402上的记录410可以被删除,服务器400上的元数据哈希映射418可以被更新。
删除操作的等待时间是:
·通常是10-30μs。
与删除操作有关的其它考虑包括:
·服务器400可以对其删除的记录410进行“垃圾收集”,然后更新哈希映射418来反映服务器400上的高速缓存的当前状态。
·在一个或多个客户端402上的元数据哈希映射418可能包含陈旧的对象-值422。然而,这将不会打破一致性,因为客户端402应该为了正确性而检查对象-值422中的版本标识符422。
元数据哈希映射更新
如上所述,服务器400可以在某个指定的时间将来自其元数据哈希映射418的一个或多个条目传输到一个或多个客户端402,例如当由服务器400在客户端402的指示下进行的CRUD操作导致元数据哈希映射418的一个或多个条目被更新时,并且仅那些被更新的条目被服务器400传输并被客户端402接收。此外,服务器400可以在某个指定的时间将来自其元数据哈希映射418的一个或多个条目传输到一个或多个客户端402,例如当客户端402请求时、在客户端402启动时、当服务器400请求、在服务器400启动时、当元数据哈希映射418为其它原因而改变时、或在其它间隔时等等。另外,对哈希映射418的更新可以大量地发生(例如整个哈希映射418)或递增地发生(例如仅哈希映射418中的改变的条目)或使用其一些组合而发生。
在一个实施例中,当在客户端402的本地元数据哈希映射418中还未发现键420时,客户端402可以以空的元数据哈希映射418开始并且将“缓存丢失”传达(relay)到服务器400,导致包括用于记录410的元数据的对象-值422被服务器400返回到客户端402,其中该元数据包括用于记录410的服务器侧远程指针408a以及键420的版本标识符422c,该服务器侧远程指针408a包括存储了记录410的页412的地址422a和记录410在页面412内的地址422b。此实施例具有以下含义:
·本地元数据哈希映射418的大小可以被调整为期望数量的条目。
·可以在用户机402上实现自动化条目收回(eviction)来释放本地元数据哈希映射418中的条目,尽管诸如活动时间(TTL)、最近最少使用(LRU)、最不常用(LFU)的所使用的策略是依赖于应用的并且可以从本发明的一个实施例到另一个实施例变化。
在其它实施例中,可以在将元数据哈希映射418中的条目从服务器400传输到客户端402以及随后从客户端402更新服务器400上的元数据哈希映射418时使用任意数量的不同技术。
逻辑流程
图5是图解根据本发明的一个实施例的用于访问存储在服务器400上的高速缓存中的数据记录410的一般步骤或功能的流程图。
块500表示在服务器400和/或一个或多个客户端402上存储元数据哈希映射418的步骤或功能,其中该元数据哈希映射418包括与用于存储在服务器400上的高速缓存中的数据记录410的键420相关联的一个或多个条目,并且每一个条目存储了包括用于相应的数据记录410的元数据的对象-值422,其中该元数据包括引用相应的数据记录410的服务器侧远程指针408a以及键420的版本标识符422c,该服务器侧远程指针408a包括存储了记录410的页面412的地址422a和记录410在页面412内的地址422b。通常,客户端402上的元数据哈希映射418仅存储在服务器400上的元数据哈希映射418中存储的条目的子集,并且仅当在客户端402的指示下由服务器400进行的创建、读取、更新或删除操作导致元数据哈希映射418的一个或多个条目被更新时,更新在客户端402上的元数据哈希映射418,并且仅那些被更新的条目被服务器400传输并被客户端402接收。
块502表示客户端402或服务器400使用所提供的键420通过以下来访问存储在服务器400上的高速缓存中的所选择的数据记录410的步骤或功能:(1)使用所提供的键420来标识在元数据哈希映射418中的一个或多个可能匹配的条目;(2)使用来自元数据哈希映射418中的可能匹配的条目的服务器侧远程指针408a来访问存储在服务器400上的高速缓存中的一个或多个数据记录410;并使用所提供的键420和来自元数据哈希映射418中的可能匹配的条目的版本标识符422c来确定所访问的数据记录410是否匹配于所选择的数据记录410。具体地,可以通过使用服务器侧远程指针来进行在客户端402上的一个或多个RDMA操作以经由RDMA NIC直接访问存储在服务器400上的高速缓存中的数据记录410来访问数据记录410。
块504表示除了在块500中进行的更新之外、将来自元数据哈希映射418的一个或多个条目从服务器400传输到一些或全部的客户端402以便更新元数据哈希映射418的可选步骤或功能(通常由与块500中所述的事件不同的事件而触发)。
结论
这结束对本发明的详细描述。以下描述了用于完成本发明的一些替代实施例。
本领域的技术人员将认识到,可以不脱离本发明的范围而对此配置进行许多修改。具体地,本领域的技术人员将认识到,可以使用以上组件的任意组合或任意数量的不同组件、包括计算机程序、外围设备和其它装置来实现本发明,只要通过其进行类似的功能。
例如,任意类型的计算机、比如主机、小型计算机或个人计算机可以与本发明的实施例一起使用或用于本发明的实施例。另外,不同于高速缓存应用的许多类型的应用可以从本发明获益。具体地,进行远程访问的任意应用可以从本发明获益。
为了例示和描述的目的给出了对本发明的优选实施例的以上描述。不意图穷尽或限制本发明到所公开的精确形式。依照上述教导,许多修改和变化是可能的。意图本发明的范围不被此详细描述所限制,而是由附于此的权利要求限定。

Claims (18)

1.一种用于访问存储在服务器上的高速缓存中的数据记录的设备,包括:
(a)服务器或客户端,存储元数据哈希映射,其中所述元数据哈希映射包括与用于存储在服务器上的高速缓存中的数据记录的键相关联的一个或多个条目,每个条目存储对应的数据记录的元数据,并且所述元数据包括服务器侧远程指针以及所述键的版本标识符,所述服务器侧远程指针引用存储在所述服务器上的高速缓存中的对应的数据记录;以及
(b)所述服务器或客户端使用所提供的键通过以下来访问存储在所述服务器上的高速缓存中的所选择的数据记录:
(1)使用所提供的键标识在所述元数据哈希映射中的一个或多个可能匹配的条目;
(2)使用来自所述元数据哈希映射中的可能匹配的条目的服务器侧远程指针来访问存储在所述服务器上的高速缓存中的一个或多个数据记录;以及
(3)使用所提供的键和来自所述元数据哈希映射中的可能匹配的条目的版本标识符来确定所访问的数据记录是否匹配于所选择的数据记录。
2.根据权利要求1所述的设备,其中在客户端上的所述元数据哈希映射存储在所述服务器上的元数据哈希映射中存储的条目的子集。
3.根据权利要求1所述的设备,其中当由所述服务器在所述客户端的指示下进行的创建、读取、更新或删除操作导致元数据哈希映射被更新时,更新在客户端上的元数据哈希映射。
4.根据权利要求3所述的设备,还包括所述客户端从所述服务器接收对所述元数据哈希映射的更新。
5.根据权利要求1所述的设备,其中所述访问(2)包括使用服务器侧远程指针在所述客户端上进行一个或多个远程直接存储器访问(RDMA)操作,以经由RDMA网络接口控制器直接地访问存储在所述服务器上的高速缓存中的数据记录。
6.根据权利要求5所述的设备,其中进行所述一个或多个RDMA操作还包括所述客户端通过以下进行创建操作:
所述客户端进行到服务器的发送操作,并将键、所述键的哈希码和所述键的值传递到服务器;
所述服务器使用所述键和所述键的值来在所述高速缓存中分配新的数据记录;以及
使用哈希码更新所述服务器上的元数据哈希映射以将用于新数据记录的键、新数据记录的服务器侧远程指针和所述键的版本标识符添加到该元数据哈希映射。
7.根据权利要求5所述的设备,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行读取操作:
客户端使用来自元数据哈希表中的可能匹配的条目的服务器侧远程指针来进行在所述服务器上的单侧RDMA读取操作。
8.根据权利要求5所述的设备,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行更新操作:
客户端使用来自元数据哈希表中的可能匹配的条目的服务器侧远程指针来进行在所述服务器上的单侧RDMA读取操作,
当所访问的数据记录之一匹配于所选择的数据记录时,所述客户端使用所述服务器侧远程指针来进行到服务器的单侧RDMA写入操作并盖写所述所访问的记录之一,以及
当所访问的数据记录不匹配于所选择的数据记录时,所述客户端进行到所述服务器的发送操作并将键、该键的哈希码和该键的值传递到所述服务器用于更新所述服务器上的高速缓存。
9.根据权利要求5所述的设备,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行删除操作:
客户端进行到服务器的发送操作并将键、该键的哈希码和该键的值传递到所述服务器用于删除在所述服务器上的高速缓存中存储的所选择的数据记录。
10.一种用于访问存储在服务器上的高速缓存中的数据记录的方法,包括:
(a)在服务器或客户端上存储元数据哈希映射,其中所述元数据哈希映射包括与用于存储在服务器上的高速缓存中的数据记录的键相关联的一个或多个条目,每个条目存储对应的数据记录的元数据,并且所述元数据包括服务器侧远程指针以及所述键的版本标识符,所述服务器侧远程指针引用存储在所述服务器上的高速缓存中的对应的数据记录;以及
(b)所述服务器或客户端使用所提供的键通过以下访问存储在所述服务器上的高速缓存中的所选择的数据记录:
(1)使用所提供的键标识在所述元数据哈希映射中的一个或多个可能匹配的条目;
(2)使用来自所述元数据哈希映射中的可能匹配的条目的服务器侧远程指针来访问存储在所述服务器上的高速缓存中的一个或多个数据记录;以及
(3)使用所提供的键和来自所述元数据哈希映射中的可能匹配的条目的版本标识符来确定所访问的数据记录是否匹配于所选择的数据记录。
11.根据权利要求10所述的方法,其中在客户端上的所述元数据哈希映射存储在所述服务器上的元数据哈希映射中存储的条目的子集。
12.根据权利要求10所述的方法,其中当由所述服务器在所述客户端的指示下进行的创建、读取、更新或删除操作导致元数据哈希映射被更新时,更新在客户端上的元数据哈希映射。
13.根据权利要求12所述的方法,还包括所述客户端从所述服务器接收对所述元数据哈希映射的更新。
14.根据权利要求10所述的方法,其中所述访问(2)包括使用服务器侧远程指针在所述客户端上进行一个或多个远程直接存储器访问(RDMA)操作,以经由RDMA网络接口控制器直接地访问存储在所述服务器上的高速缓存中的数据记录。
15.根据权利要求14所述的方法,其中进行所述一个或多个RDMA操作还包括所述客户端通过以下进行创建操作:
所述客户端进行到服务器的发送操作,并将键、所述键的哈希码和所述键的值传递到服务器;
所述服务器使用所述键和所述键的值来在所述高速缓存中分配新的数据记录;以及
使用哈希码更新所述服务器上的元数据哈希映射以将用于新数据记录的键、新数据记录的服务器侧远程指针和所述键的版本标识符添加到该元数据哈希映射。
16.根据权利要求14所述的方法,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行读取操作:
客户端使用来自元数据哈希表中的可能匹配的条目的服务器侧远程指针来进行在所述服务器上的单侧RDMA读取操作。
17.根据权利要求14所述的方法,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行更新操作:
客户端使用来自元数据哈希表中的可能匹配的条目的服务器侧远程指针来进行在所述服务器上的单侧RDMA读取操作,
当所访问的数据记录之一匹配于所选择的数据记录时,所述客户端使用所述服务器侧远程指针来进行到服务器的单侧RDMA写入操作并盖写所述所访问的记录之一,以及
当所访问的数据记录不匹配于所选择的数据记录时,所述客户端进行到所述服务器的发送操作并将键、该键的哈希码和该键的值传递到所述服务器用于更新所述服务器上的高速缓存。
18.根据权利要求14所述的方法,其中进行所述一个或多个RDMA操作还包括客户端通过以下进行删除操作:
客户端进行到服务器的发送操作并将键、该键的哈希码和该键的值传递到所述服务器用于删除在所述服务器上的高速缓存中存储的所选择的数据记录。
CN201410171220.0A 2013-04-26 2014-04-25 访问存储在服务器上高速缓存中的数据记录的设备和方法 Active CN104123235B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/872,007 US9569400B2 (en) 2012-11-21 2013-04-26 RDMA-optimized high-performance distributed cache
US13/872,007 2013-04-26

Publications (2)

Publication Number Publication Date
CN104123235A true CN104123235A (zh) 2014-10-29
CN104123235B CN104123235B (zh) 2017-06-23

Family

ID=51768655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410171220.0A Active CN104123235B (zh) 2013-04-26 2014-04-25 访问存储在服务器上高速缓存中的数据记录的设备和方法

Country Status (2)

Country Link
US (2) US9569400B2 (zh)
CN (1) CN104123235B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573035A (zh) * 2015-01-16 2015-04-29 杭州犀照科技有限公司 缓存服务方法及装置、新闻信息获取方法及系统
CN104850509A (zh) * 2015-04-27 2015-08-19 交通银行股份有限公司 一种银行业务数据内存缓存的操作方法及系统
CN104866531A (zh) * 2015-04-27 2015-08-26 交通银行股份有限公司 快速访问银行客户信息数据的方法及系统
CN105893458A (zh) * 2015-02-12 2016-08-24 哈曼国际工业有限公司 媒体内容回放系统和方法
CN108464024A (zh) * 2015-11-02 2018-08-28 瑞典爱立信有限公司 处理设备能力
CN109388764A (zh) * 2018-09-11 2019-02-26 阿里巴巴集团控股有限公司 一种本地缓存的更新方法、装置、设备及系统
CN110362599A (zh) * 2018-04-08 2019-10-22 北京京东尚科信息技术有限公司 数据存储方法、装置、电子设备及计算机可读介质
CN110399313A (zh) * 2018-04-25 2019-11-01 Emc知识产权控股有限公司 用于提高缓存性能的系统和方法
CN110413214A (zh) * 2018-04-28 2019-11-05 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN110431542A (zh) * 2017-05-30 2019-11-08 西部数据技术公司 管理存储网络中的i/o操作
CN111095225A (zh) * 2017-09-29 2020-05-01 甲骨文国际公司 使用rdma读取存储在非易失性高速缓存中的数据的方法
CN111125093A (zh) * 2019-11-19 2020-05-08 贝壳技术有限公司 一种基于哈希存储的数据处理方法及装置
CN111656341A (zh) * 2018-01-30 2020-09-11 易享信息技术有限公司 用于lsm数据结构中有效记录查找的高速缓存
CN113961593A (zh) * 2021-10-14 2022-01-21 上海众言网络科技有限公司 问卷的读写方法、装置及电子设备

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9525734B2 (en) 2013-10-30 2016-12-20 Annapurna Labs Ltd. Hybrid remote direct memory access
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10311023B1 (en) 2015-07-27 2019-06-04 Sas Institute Inc. Distributed data storage grouping
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
WO2017053779A1 (en) * 2015-09-24 2017-03-30 Trustees Of Boston University Data storage and retrieval system using online supervised hashing
US10713210B2 (en) * 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US9836397B2 (en) 2015-11-20 2017-12-05 International Business Machines Corporation Direct memory access of dynamically allocated memory
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
US10425483B2 (en) 2016-05-16 2019-09-24 International Business Machines Corporation Distributed client based cache for keys using demand fault invalidation
US10225344B2 (en) 2016-08-12 2019-03-05 International Business Machines Corporation High-performance key-value store using a coherent attached bus
CN106776783B (zh) * 2016-11-24 2019-10-01 福建亿榕信息技术有限公司 非结构化数据存储管理方法和系统
US10922296B2 (en) 2017-03-01 2021-02-16 Sap Se In-memory row storage durability
CN107479833B (zh) * 2017-08-21 2020-04-17 中国人民解放军国防科技大学 一种面向键值存储的远程非易失内存访问与管理方法
CN107678780B (zh) * 2017-10-26 2020-10-16 深圳乐信软件技术有限公司 一种内存管理方法、装置、存储介质及终端设备
CN111796772B (zh) * 2020-07-07 2024-05-07 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
US11770449B2 (en) * 2020-12-30 2023-09-26 Pensando Systems Inc. Methods and systems for extending RDMA for dynamic/programmable remote operation registration and invocation
US11747998B1 (en) * 2021-02-17 2023-09-05 Omnitier, Inc. Indexing technique for large scale distributed key-value systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020038390A1 (en) * 1997-12-18 2002-03-28 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
CN101147174A (zh) * 2004-10-15 2008-03-19 微软公司 用于管理图像数据的传送和/或存储的系统和方法
US20100082766A1 (en) * 2008-09-29 2010-04-01 Cisco Technology, Inc. Reliable reception of messages written via rdma using hashing
US20120124030A1 (en) * 2010-11-12 2012-05-17 Yahoo! Inc. Methods and Systems For Pathing Analysis
US20120204024A1 (en) * 2009-12-23 2012-08-09 International Business Machines Corporation Deduplication of Encrypted Data

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922757B2 (en) * 2002-02-15 2005-07-26 Exanet Inc. Flexible and adaptive read and write storage system architecture
US7944920B2 (en) 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
US7788711B1 (en) 2003-10-09 2010-08-31 Oracle America, Inc. Method and system for transferring identity assertion information between trusted partner sites in a network using artifacts
WO2005066830A1 (en) 2004-01-08 2005-07-21 Agency For Science, Technology & Research A shared storage network system and a method for operating a shared storage network system
US20060036602A1 (en) * 2004-08-13 2006-02-16 Unangst Marc J Distributed object-based storage system that stores virtualization maps in object attributes
US7886294B2 (en) 2004-12-28 2011-02-08 Sap Ag Virtual machine monitoring
US7552153B2 (en) 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7493449B2 (en) 2004-12-28 2009-02-17 Sap Ag Storage plug-in based on hashmaps
US7941401B2 (en) 2005-05-09 2011-05-10 Gemstone Systems, Inc. Distributed data management system
US8108844B2 (en) 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US7912695B2 (en) 2006-09-12 2011-03-22 Infosys Technologies Ltd. Performance evaluation of J2EE applications
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US7917599B1 (en) 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine
US8576861B2 (en) 2007-05-21 2013-11-05 International Business Machines Corporation Method and apparatus for processing packets
US20090125882A1 (en) 2007-10-08 2009-05-14 Matteo Frigo Method of implementing hyperobjects in a parallel processing software programming environment
US20090144727A1 (en) 2007-12-04 2009-06-04 Bea Systems, Inc. Interpreted multiple product installation
US8904004B2 (en) 2009-04-10 2014-12-02 Open Invention Network, Llc System and method for maintaining mappings between application resources inside and outside isolated environments
US8737407B2 (en) 2009-06-22 2014-05-27 Citrix Systems, Inc. Systems and methods for distributed hash table in multi-core system
US20110055471A1 (en) 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8959525B2 (en) 2009-10-28 2015-02-17 International Business Machines Corporation Systems and methods for affinity driven distributed scheduling of parallel computations
US8806497B2 (en) 2010-03-05 2014-08-12 Microsoft Corporation System and method for altering the work definitions in an iterative parallel opportunistic work stealing scheduler
US8370316B2 (en) * 2010-07-12 2013-02-05 Sap Ag Hash-join in parallel computation environments
US8849825B1 (en) 2010-12-23 2014-09-30 Amazon Technologies, Inc. System and method for clustering distributed hash table entries
WO2012109679A2 (en) 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
US8789026B2 (en) 2011-08-02 2014-07-22 International Business Machines Corporation Technique for compiling and running high-level programs on heterogeneous computers
US8793467B2 (en) 2011-09-30 2014-07-29 Pure Storage, Inc. Variable length encoding in a storage system
US8434080B2 (en) 2011-12-22 2013-04-30 Software Ag Usa, Inc. Distributed cloud application deployment systems and/or associated methods
US8861527B1 (en) 2011-12-30 2014-10-14 Emc Corporation Network-assisted routing for topology-aware overlay networks
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9424038B2 (en) 2012-12-10 2016-08-23 Nvidia Corporation Compiler-controlled region scheduling for SIMD execution of threads
US10268639B2 (en) 2013-03-15 2019-04-23 Inpixon Joining large database tables
US9436614B2 (en) 2013-05-02 2016-09-06 Globalfoundries Inc. Application-directed memory de-duplication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020038390A1 (en) * 1997-12-18 2002-03-28 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
CN101147174A (zh) * 2004-10-15 2008-03-19 微软公司 用于管理图像数据的传送和/或存储的系统和方法
US20100082766A1 (en) * 2008-09-29 2010-04-01 Cisco Technology, Inc. Reliable reception of messages written via rdma using hashing
US20120204024A1 (en) * 2009-12-23 2012-08-09 International Business Machines Corporation Deduplication of Encrypted Data
US20120124030A1 (en) * 2010-11-12 2012-05-17 Yahoo! Inc. Methods and Systems For Pathing Analysis

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573035A (zh) * 2015-01-16 2015-04-29 杭州犀照科技有限公司 缓存服务方法及装置、新闻信息获取方法及系统
CN104573035B (zh) * 2015-01-16 2019-07-23 杭州犀照科技有限公司 新闻信息获取方法及系统
CN105893458A (zh) * 2015-02-12 2016-08-24 哈曼国际工业有限公司 媒体内容回放系统和方法
CN104866531A (zh) * 2015-04-27 2015-08-26 交通银行股份有限公司 快速访问银行客户信息数据的方法及系统
CN104850509A (zh) * 2015-04-27 2015-08-19 交通银行股份有限公司 一种银行业务数据内存缓存的操作方法及系统
CN108464024A (zh) * 2015-11-02 2018-08-28 瑞典爱立信有限公司 处理设备能力
CN108464024B (zh) * 2015-11-02 2021-07-09 瑞典爱立信有限公司 用于处理无线设备能力的网络节点、无线设备、介质及其方法
CN110431542B (zh) * 2017-05-30 2023-06-30 西部数据技术公司 管理存储网络中的i/o操作
CN110431542A (zh) * 2017-05-30 2019-11-08 西部数据技术公司 管理存储网络中的i/o操作
CN111095225B (zh) * 2017-09-29 2024-06-11 甲骨文国际公司 使用rdma读取非易失性高速缓存中存储的数据的方法
CN111095225A (zh) * 2017-09-29 2020-05-01 甲骨文国际公司 使用rdma读取存储在非易失性高速缓存中的数据的方法
CN111656341A (zh) * 2018-01-30 2020-09-11 易享信息技术有限公司 用于lsm数据结构中有效记录查找的高速缓存
CN111656341B (zh) * 2018-01-30 2023-11-28 硕动力公司 用于lsm数据结构中有效记录查找的高速缓存
CN110362599B (zh) * 2018-04-08 2024-10-18 北京京东尚科信息技术有限公司 数据存储方法、装置、电子设备及计算机可读介质
CN110362599A (zh) * 2018-04-08 2019-10-22 北京京东尚科信息技术有限公司 数据存储方法、装置、电子设备及计算机可读介质
CN110399313B (zh) * 2018-04-25 2023-11-03 Emc知识产权控股有限公司 用于提高缓存性能的系统和方法
CN110399313A (zh) * 2018-04-25 2019-11-01 Emc知识产权控股有限公司 用于提高缓存性能的系统和方法
CN110413214A (zh) * 2018-04-28 2019-11-05 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN110413214B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN109388764A (zh) * 2018-09-11 2019-02-26 阿里巴巴集团控股有限公司 一种本地缓存的更新方法、装置、设备及系统
CN111125093B (zh) * 2019-11-19 2023-09-15 贝壳技术有限公司 一种基于哈希存储的数据处理方法及装置
CN111125093A (zh) * 2019-11-19 2020-05-08 贝壳技术有限公司 一种基于哈希存储的数据处理方法及装置
CN113961593A (zh) * 2021-10-14 2022-01-21 上海众言网络科技有限公司 问卷的读写方法、装置及电子设备

Also Published As

Publication number Publication date
US20140325011A1 (en) 2014-10-30
US9569400B2 (en) 2017-02-14
US9575927B2 (en) 2017-02-21
US20140325012A1 (en) 2014-10-30
CN104123235B (zh) 2017-06-23

Similar Documents

Publication Publication Date Title
CN104123235A (zh) 访问存储在服务器上高速缓存中的数据记录的设备和方法
US11593337B2 (en) Data processing method, device, and a storage medium
CN110799960B (zh) 数据库租户迁移的系统和方法
US9742863B2 (en) RDMA-optimized high-performance distributed cache
US9332083B2 (en) High performance, distributed, shared, data grid for distributed Java virtual machine runtime artifacts
CN112740198B (zh) 用于在数据库中提早移除墓碑记录的系统和方法
US9904706B2 (en) Deferring data record changes using query rewriting
CN102831075B (zh) 将预先存在数据导入存储池的方法和系统
US10887392B2 (en) Distributed client based cache for keys using demand fault invalidation
EP3646133B1 (en) Systems and methods of creation and deletion of tenants within a database
US20150193526A1 (en) Schemaless data access management
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
US10146466B1 (en) Merging mapping metadata to promote reference counting efficiency
CN104067241A (zh) 同步本地存储设备和远程存储设备
CN110737397B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN104903871A (zh) 虚拟磁带库系统
EP4102380A1 (en) Database offloading utilizing a locater index
US20150100607A1 (en) Apparatus and method for data management
US10747627B2 (en) Method and technique of achieving extraordinarily high insert throughput
CN105046162A (zh) 在内容可寻址存储系统中维护并使用子对父映射的缓存
US10353920B2 (en) Efficient mirror data re-sync
US20240126750A1 (en) Accelerating query execution by optimizing data transfer between storage nodes and database nodes
US11347406B2 (en) Method, electronic device and computer program product for updating information
CN113760860A (zh) 一种数据读取方法和装置
CN117632946A (zh) 基于动态前缀的层级b+树算法、装置及计算机存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211019

Address after: Grand Cayman Islands

Patentee after: Aviman Co.,Ltd.

Address before: Armank, New York, USA

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230605

Address after: 13D-3-3, Block B, 13th Floor, No.28 Information Road, Haidian District, Beijing

Patentee after: Beijing Pian Ruo Jinghong Technology Co.,Ltd.

Address before: Grand Cayman, Cayman Islands

Patentee before: Aviman Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230821

Address after: 100190 0207, 2 / F, building 4, Zijin Digital Park, Haidian District, Beijing

Patentee after: Beijing zitiao Network Technology Co.,Ltd.

Address before: 13D-3-3, Block B, 13th Floor, No.28 Information Road, Haidian District, Beijing, 100085

Patentee before: Beijing Pian Ruo Jinghong Technology Co.,Ltd.