CN114817232A - 访问数据的方法及装置 - Google Patents
访问数据的方法及装置 Download PDFInfo
- Publication number
- CN114817232A CN114817232A CN202110083500.6A CN202110083500A CN114817232A CN 114817232 A CN114817232 A CN 114817232A CN 202110083500 A CN202110083500 A CN 202110083500A CN 114817232 A CN114817232 A CN 114817232A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- server
- index
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 130
- 230000015654 memory Effects 0.000 claims abstract description 141
- 238000012549 training Methods 0.000 claims description 24
- 230000003068 static effect Effects 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 20
- 238000013519 translation Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000002146 bilateral effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Images
Classifications
-
- 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/21—Design, administration or maintenance of databases
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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
-
- 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/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了访问数据的方法及装置,涉及存储技术领域,可以降低访问时延。该方法可以应用于存储系统中,该存储系统包括客户端和服务端,客户端和服务端支持内存访问协议,该方法包括:客户端向服务端发送第一读请求,服务端接收到第一读请求后,根据第一读请求中的待读取数据的元数据的位置信息,读取该元数据,并且根据该元数据获得待读取数据,将待读取数据发送给客户端。其中,元数据的位置信息用于指示元数据位于服务端中的位置,并且元数据的位置信息是根据待读取数据的关键字与预测信息获得的。
Description
技术领域
本申请涉及存储技术领域,尤其涉及访问数据的方法及装置。
背景技术
随着信息量的日益增多,数据的存储和读取成为了处理信息时常用的技术手段。通常服务端(server)会配置数据库,数据库中的数据是以键值(key-value)的形式存储的。若客户端(client)想要读取服务端的数据,客户端会将要读取的数据的key发送给服务端。服务端会根据接收到的key在数据库中查找。若查找到相同的key,则根据key获取要读取的数据,并将要读取的数据发送给客户端。若未查找到相同的key,则读取失败。然而,数据库通常包括很多的数据,通过上述方式读取数据会花费较长的时间,用户体验差。
发明内容
本申请提供访问数据的方法及装置,可以降低访问时延。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请提供一种访问数据的方法,该方法可以应用于存储系统中。该存储系统包括客户端和服务端,该客户端和该服务端之间可以通过内存访问协议通信。该方法包括:客户端向服务端发送第一读请求,其中,该第一读请求包括待读取数据的元数据的位置信息,该位置信息用于指示该元数据位于该服务端中的位置,并且该元数据的位置信息是根据该待读取数据的关键字与预测信息获得的。服务端接收该第一读请求,根据该位置信息读取该元数据,并且根据该元数据获得该待读取数据,将该待读取数据发送给该客户端。
基于上述第一方面提供的技术方案,客户端可以根据待读取数据的关键字和预测信息预测待读取数据的元数据的位置信息,根据元数据的位置信息读取元数据,根据元数据获得待读取数据。在上述过程中,服务端是根据位置信息直接读取数据的,服务端的处理器可以不参与,因此可以降低访问时延。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。基于上述方法,客户端可以通过多种方式预测待读取数据的元数据的位置信息,提高了客户端预测待读取数据的元数据的位置信息的灵活性和多样性。
一种可能的实现方式,预测信息包括该预测模型,该方法还包括:服务端训练数据以生成该预测模型;服务端将该预测模型发送给该客户端。基于上述方法,在预测信息包括预测模型的情况下,服务端可以通过训练数据的方式得到预测模型,并将预测模型发送给客户端,使得客户端可以根据预测模型预测待读取数据的元数据的位置信息。
一种可能的实现方式,该方法还包括:该服务端配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该元数据位于该第一索引中的位置;根据该位置信息读取该元数据具体包括:该服务端根据位置信息从第一索引中读取该元数据。基于上述方法,客户端可以从第一索引中读取元数据。
一种可能的实现方式,该第一索引是静态的,该第一索引中的关键字不变。基于上述方法,服务端在一段时间内,不会将新增加的key写入第一索引,一方面,服务端不需要频繁的训练数据,生成新的预测模型,减小了服务端的计算开销。另一方面,第一索引也不会分裂,因此客户端在根据预测模型得到一个地址后,不需要通过翻译表将该地址转换为待读取数据在服务端的实际地址,客户端可以不用存储翻译表,节约了客户端的内存开销。
一种可能的实现方式,该方法还包括:该服务端配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。基于上述方法,若服务端需要新增加key,可以将新增加的key写入第二索引,可以使得第一索引保持静态。
一种可能的实现方式,根据该位置信息读取该元数据具体包括:当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的元数据的存储地址,从而读取该元数据。基于上述方法,在第一索引中未获取到待读取数据的情况下,可以在第二索引中读取待读取数据。
一种可能的实现方式,该方法还包括:服务端预测该客户端将要读取的数据;若该将要读取的数据的元数据未包括在该第一索引和该第二索引中,该服务端将该将要读取的数据的元数据写入该第二索引。基于上述方法,服务端可以将预测的客户端将要读取的数据的元数据提前写入第二索引中,当客户端需要读取服务端预测的数据的情况下,服务端可以快速返回该数据,提高了服务端的响应速度。
一种可能的实现方式,服务端把将要读取的数据的元数据写入该第二索引之后,该方法还包括:服务端将该第二索引写入该第一索引,得到第三索引;服务端训练该第三索引以生成新的预测模型;服务端将该新的预测模型发送给该客户端。基于上述方法,服务端可以定期或不定期的重新训练模型,使得客户端根据新的模型预测待读取数据的元数据的位置,可以在减少服务端的计算开销,服务端和客户端的内存开销的基础上,降低访问时延。
一种可能的实现方式,预测信息包括该预测列表,该方法还包括:服务端获取该至少一个首地址以生成该预测列表;服务端将该预测列表发送给该客户端。基于上述方法,在预测信息包括预测列表的情况下,服务端可以获取预测列表,并将预测列表发送给客户端,使得客户端可以根据预测列表预测待读取数据的元数据的位置信息。
一种可能的实现方式,该元数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:该元数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。基于上述方法,客户端可以通过哈希运算以及查表即可的得到元数据的位置信息,十分便捷。
一种可能的实现方式,客户端向该服务端发送第一读请求之前,该方法还包括:客户端根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;客户端向该服务端发送第一读请求具体包括:当确定结果为该待读取数据的关键字保存在该服务端中时,客户端向该服务端发送第一读请求。基于上述方法,客户端可以在确定服务端中保存了待读取数据的关键字之后,向服务端发送第一读请求,可以减小信令开始。
第二方面,本申请提供一种访问数据的装置,该装置包括网卡和内存,该网卡支持内存访问协议;网卡,用于接收第一读请求,该第一读请求包括待读取数据的元数据的位置信息,该位置信息用于指示该元数据位于该内存中的位置,并且该元数据的位置信息是根据该待读取数据的关键字与预测信息获得的;网卡,还用于根据该位置信息读取该元数据,根据该元数据获得该待读取数据,将该待读取数据发送给客户端。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该访问数据的装置中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型,该装置还包括:处理器;处理器,用于训练数据以生成该预测模型;网卡,还用于将该预测模型发送给该客户端。
一种可能的实现方式,处理器,还用于配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该元数据位于该第一索引中的位置;网卡,具体用于根据该位置信息从该第一索引中读取该元数据。
一种可能的实现方式,第一索引是静态的,该第一索引中的关键字不变。
一种可能的实现方式,处理器,还用于配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。
一种可能的实现方式,网卡,具体用于当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的元数据的存储地址,从而读取该元数据。
一种可能的实现方式,处理器,还用于预测该客户端将要读取的数据;处理器,还用于若该将要读取的数据的元数据未包括在该第一索引和该第二索引中,将该将要读取的数据的元数据写入该第二索引。
一种可能的实现方式,处理器,还用于将该第二索引写入该第一索引,得到第三索引;处理器,还用于训练该第三索引以生成新的预测模型;网卡,还用于将该新的预测模型发送给该客户端。
一种可能的实现方式,预测信息包括该预测列表,该装置还包括处理器;处理器,用于获取该至少一个首地址以生成该预测列表;网卡,还用于将该预测列表发送给该客户端。
一种可能的实现方式,元数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:元数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。
第三方面,本申请提供一种访问数据的装置,该装置包括网卡和内存,该网卡支持内存访问协议;网卡,用于向服务端发送第一读请求,该第一读请求包括待读取数据的元数据的位置信息,该位置信息用于指示该元数据位于该服务端中的位置,并且该元数据的位置信息是根据该待读取数据的关键字与预测信息获得的;网卡,还用于接收待读取数据。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型,网卡,还用于接收该预测模型;或者,预测信息包括该预测列表,网卡,还用于接收该预测列表。
一种可能的实现方式,该装置还包括:处理器;处理器,用于根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;网卡,具体用于当确定结果为该待读取数据的关键字保存在该服务端中时,向该服务端发送第一读请求。
第四方面,本申请提供一种计算机可读介质,其上存储有计算机程序或指令,所述计算机程序或指令被执行时使得计算机执行上述第一方面、或第一方面任一种可能的实现方式中所述的方法。
第五方面,本申请提供一种计算机程序产品,其包括计算机程序代码,所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面、或第一方面任一种可能的实现方式中所述的方法。
第六方面,本申请提供一种存储系统,该存储系统包括客户端和服务端,该客户端和该服务端之间通过内存访问协议通信。客户端,用于向该服务端发送第一读请求,该第一读请求包括待读取数据的元数据的位置信息,该位置信息用于指示该元数据位于该服务端中的位置,并且该元数据的位置信息是根据该待读取数据的关键字与预测信息获得的;服务端,用于接收该第一读请求,根据该位置信息读取该元数据,并且根据该元数据获得该待读取数据,将该待读取数据发送给该客户端。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型;服务端,还用于训练数据以生成该预测模型;服务端,还用于将该预测模型发送给该客户端。
一种可能的实现方式,服务端,还用于配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该元数据位于该第一索引中的位置;服务端,具体用于根据该位置信息从该第一索引中读取该元数据。
一种可能的实现方式,第一索引是静态的,该第一索引中的关键字不变。
一种可能的实现方式,服务端,还用于配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。
一种可能的实现方式,服务端,具体用于当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的元数据的存储地址,从而读取该元数据。
一种可能的实现方式,服务端,还用于预测该客户端将要读取的数据;若该将要读取的数据的元数据未包括在该第一索引和该第二索引中,服务端,还用于将该将要读取的数据的元数据写入该第二索引。
一种可能的实现方式,服务端,还用于将该第二索引写入该第一索引,得到第三索引;服务端,还用于训练该第三索引以生成新的预测模型;服务端,还用于将该新的预测模型发送给该客户端。
一种可能的实现方式,预测信息包括该预测列表,服务端,还用于获取该至少一个首地址以生成该预测列表;服务端,还用于将该预测列表发送给该客户端。
一种可能的实现方式,元数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:元数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。
一种可能的实现方式,客户端,还用于根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;客户端,还具体用于当确定结果为该待读取数据的关键字保存在该服务端中时,向该服务端发送第一读请求。
第七方面,本申请提供一种访问数据的方法,该方法应用于存储系统中,该存储系统包括客户端和服务端,该客户端和该服务端之间通过内存访问协议通信。该方法包括:客户端向服务端发送第一读请求,该第一读请求包括待读取数据的位置信息,该位置信息用于指示该待读取数据位于该服务端中的位置,并且该待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的;服务端接收该第一读请求,根据该位置信息获得该待读取数据,将该待读取数据发送给该客户端。
一种可能的实现方式,该预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型,该方法还包括:服务端训练数据以生成该预测模型;服务端将该预测模型发送给该客户端。
一种可能的实现方式,该方法还包括:服务端配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该待读取数据位于该第一索引中的位置;根据该位置信息读取该元数据具体包括:服务端根据该位置信息从该第一索引中读取该待读取数据。
一种可能的实现方式,第一索引是静态的,第一索引中的关键字不变。
一种可能的实现方式,该方法还包括:服务端配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。
一种可能的实现方式,根据该位置信息获得该待读取数据具体包括:当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的存储地址,从而读取该待读取数据。
一种可能的实现方式,该方法还包括:服务端预测该客户端将要读取的数据;若该将要读取的数据未包括在该第一索引和该第二索引中,该服务端将该将要读取的数据写入该第二索引。
一种可能的实现方式,服务端将该将要读取的数据写入该第二索引之后,该方法还包括:服务端将该第二索引写入该第一索引,得到第三索引;服务端训练该第三索引以生成新的预测模型;服务端将该新的预测模型发送给该客户端。
一种可能的实现方式,预测信息包括该预测列表,该方法还包括:服务端获取该至少一个首地址以生成该预测列表;服务端将该预测列表发送给该客户端。
一种可能的实现方式,待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:待读取数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。
一种可能的实现方式,客户端向该服务端发送第一读请求之前,该方法还包括:客户端根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;客户端向服务端发送第一读请求具体包括:当确定结果为该待读取数据的关键字保存在该服务端中时,客户端向该服务端发送第一读请求。
第八方面,本申请提供一种访问数据的装置,该装置包括网卡和内存,该网卡支持内存访问协议;网卡,用于接收第一读请求,该第一读请求包括待读取数据的位置信息,该位置信息用于指示该待读取数据位于该内存中的位置,并且该待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的;网卡,还用于根据该位置信息读取该待读取数据,将该待读取数据发送给客户端。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该访问数据的装置中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型,该装置还包括:处理器;处理器,用于训练数据以生成该预测模型;网卡,还用于将该预测模型发送给该客户端。
一种可能的实现方式,处理器,还用于配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该待读取数据位于该第一索引中的位置;网卡,具体用于根据该位置信息从该第一索引中读取该待读取数据。
一种可能的实现方式,第一索引是静态的,该第一索引中的关键字不变。
一种可能的实现方式,处理器,还用于配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。
一种可能的实现方式,网卡,具体用于当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的存储地址,从而读取该待读取数据。
一种可能的实现方式,处理器,还用于预测该客户端将要读取的数据;处理器,还用于若该将要读取的数据未包括在该第一索引和该第二索引中,将该将要读取的数据写入该第二索引。
一种可能的实现方式,处理器,还用于将该第二索引写入该第一索引,得到第三索引;处理器,还用于训练该第三索引以生成新的预测模型;网卡,还用于将该新的预测模型发送给该客户端。
一种可能的实现方式,预测信息包括该预测列表,该装置还包括处理器;处理器,用于获取该至少一个首地址以生成该预测列表;网卡,还用于将该预测列表发送给该客户端。
一种可能的实现方式,待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:待读取数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。
第九方面,本申请提供一种访问数据的装置,该装置包括网卡和内存,该网卡支持内存访问协议;网卡,用于向服务端发送第一读请求,该第一读请求包括待读取数据的位置信息,该位置信息用于指示该待读取数据位于该服务端中的位置,并且该待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的;网卡,还用于接收待读取数据。
一种可能的实现方式,预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型,网卡,还用于接收该预测模型;或者,预测信息包括该预测列表,网卡,还用于接收该预测列表。
一种可能的实现方式,该装置还包括:处理器;处理器,用于根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;网卡,具体用于当确定结果为该待读取数据的关键字保存在该服务端中时,向该服务端发送第一读请求。
第十方面,本申请提供一种计算机可读介质,其上存储有计算机程序或指令,所述计算机程序或指令被执行时使得计算机执行上述第七方面、或第七方面任一种可能的实现方式中所述的方法。
第十一方面,本申请提供一种计算机程序产品,其包括计算机程序代码,所述计算机程序代码在计算机上运行时,使得计算机执行上述第七方面、或第七方面任一种可能的实现方式中所述的方法。
第十二方面,本申请提供一种存储系统,该存储系统包括客户端和服务端,该客户端和该服务端之间通过内存访问协议通信。客户端,用于向该服务端发送第一读请求,该第一读请求包括待读取数据的位置信息,该位置信息用于指示该待读取数据位于该服务端中的位置,并且该待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的;服务端,用于接收该第一读请求,根据该位置信息获得该待读取数据,将该待读取数据发送给该客户端。
一种可能的实现方式,该预测信息包括预测模型或预测列表,该预测列表包括至少一个首地址,每个首地址是该服务端中一段连续内存的起始地址。
一种可能的实现方式,预测信息包括该预测模型;服务端,还用于训练数据以生成该预测模型;服务端,还用于将该预测模型发送给该客户端。
一种可能的实现方式,服务端,还用于配置第一索引,该第一索引包括多个数据的关键字,该位置信息用于指示该待读取数据位于该第一索引中的位置;服务端,具体用于根据该位置信息从该第一索引中读取该待读取数据。
一种可能的实现方式,第一索引是静态的,该第一索引中的关键字不变。
一种可能的实现方式,服务端,还用于配置第二索引,该第二索引用于记录更新数据的关键字,该更新数据的关键字会定期写入该第一索引。
一种可能的实现方式,服务端,具体用于当该第一索引中未保存有该待读取数据的关键字时,从该第二索引中获得该待读取数据的存储地址,从而读取该待读取数据。
一种可能的实现方式,服务端,还用于预测该客户端将要读取的数据;若该将要读取的数据未包括在该第一索引和该第二索引中,服务端,还用于将该将要读取的数据写入该第二索引。
一种可能的实现方式,服务端,还用于将该第二索引写入该第一索引,得到第三索引;服务端,还用于训练该第三索引以生成新的预测模型;服务端,还用于将该新的预测模型发送给该客户端。
一种可能的实现方式,预测信息包括该预测列表,服务端,还用于获取该至少一个首地址以生成该预测列表;服务端,还用于将该预测列表发送给该客户端。
一种可能的实现方式,待读取数据的位置信息是根据该待读取数据的关键字与预测信息获得的具体包括:待读取数据的位置信息是对该待读取数据的关键字做哈希运算,根据该哈希运算的结果查询该预测列表得到的。
一种可能的实现方式,客户端,还用于根据该待读取数据的关键字确定该待读取数据的关键字是否保存在该服务端中;客户端,还具体用于当确定结果为该待读取数据的关键字保存在该服务端中时,向该服务端发送第一读请求。
附图说明
图1为本申请实施例提供的存储系统架构示意图;
图2为本申请实施例提供的节点的硬件结构示意图;
图3为本申请实施例提供的访问数据的方法的流程示意图一;
图4为本申请实施例提供的第一索引的示意图;
图5为本申请实施例提供的预测模型、第一索引、第二索引的对应关系示意图;
图6为本申请实施例提供的访问数据的方法的流程示意图二;
图7为本申请实施例提供的访问数据的方法的流程示意图三。
具体实施方式
下面结合附图对本申请实施例的实施方式进行详细描述。
本申请实施例提供的方法可用于各种支持内存访问协议的存储系统。下面以图1所示存储系统10为例,对本申请实施例提供的方法进行描述。
如图1所示,为本申请实施例提供的存储系统10的架构示意图。图1中,存储系统10包括客户端101和服务端102,客户端101与服务端102之间通过内存网络协议通信。其中,客户端101是软件模块或者硬件组件,它用于向服务端102发送读/写请求。当客户端101是软件模块时,它是由客户端101所在节点的处理器运行内存中的程序指令来执行的。服务端102可以是一个节点,它用于接收客户端101发送的读/写请求,解析并执行所述读/写请求。当服务端102是一个节点时,它也需要一定的计算资源(处理器资源和内存资源),该计算资源可以运行内存中的程序指令来执行。这里的计算资源可以由服务端102的处理器和/或网卡以及内存来提供。
图1中的客户端101和服务端102可以部署在同一个节点,也可以部署在不同的节点。客户端101和服务端102之间可以采用各种内存访问协议通信,例如,远端直接内存访问(remote direct memory access,RDMA)协议、计算快速链接(compute express link,CXL)协议、开放式相干加速器处理器接口(open coherent accelerator processorinterface,OpenCAPI)协议、Gen-Z(generation Z)、用于加速器的缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。图1中的客户端101和服务端102之间也可以采用未来演进的内存网络协议通信,不予限制。本申请下述实施例是以客户端和服务端之间采用RDMA协议通信为例进行介绍的。客户端和服务端采用其他内存网络协议通信的情况,可以参考本申请下述实施例中对应的描述,不予赘述。本实施例中所称的节点,是指存储阵列或者存储服务器或者通用计算机等任何既具有计算资源也具有存储资源的设备。
图1所示的存储系统10仅用于举例,并非用于限制本申请的技术方案。本领域的技术人员应当明白,在具体实现过程中,存储系统10还可以包括其他节点,同时也可根据具体需要来确定节点的数量,不予限制。
请参考图2,图2为节点20的硬件结构示意图。节点20上部署了客户端101,或者,节点20为服务端102。该节点20包括处理器201和网卡202,用于实现本申请实施例提供的方法。处理器201上配置了内存203。本申请实施例中,内存也可以称为缓存、存储器等。
处理器201可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
网卡202可以支持各种内存访问协议。若节点20上部署了客户端101,网卡202可以用于发送读/写请求。若节点20为服务端102,网卡202可以用于接收读/写请求,解析并执行所述读/写请求。可以理解的,本申请实施例中的网卡也可以替换为芯片,该芯片也支持各种内存访问协议,并且可以执行本申请实施例中网卡执行的动作。
内存203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,但不限于此。内存203可以是独立存在,并与处理器201相耦合。内存203也可以和处理器201集成在一起。本申请实施例提供的内存通常可以具有非易失性。
可以理解的,客户端101可以通过单边RDMA读/写服务端102中的数据,也可以通过双边RDMA读/写服务端102中的数据。下面以服务端102的硬件结构如图2所示为例,分别介绍客户端101通过单边RDMA读内存203中的数据,以及通过双边RDMA读内存203中的数据的具体过程。
对于单边RDMA,客户端101可以直接确定待读取数据的元数据在内存203中的位置,因此在读请求中携带所述元数据数据的位置信息,将所述读请求发送给服务端102。服务端102通过网卡202读取该位置信息对应的元数据,根据该元数据获得待读取数据。上述过程中,处理器201对客户端101的一系列操作不感知。换句话说,处理器201不知道客户端101执行了读操作,因而减少了处理器201参与数据传输过程的消耗,提升了系统处理业务的性能,具有高带宽、低时延及低CPU占用率的特点。
对于双边RDMA,客户端101并不知道所述待读取数据的元数据存储在内存203中的位置,因此只能向服务端102请求读取所述待读取数据,而读请求中并没有携带所述元数据的位置信息。服务端102接收到该读请求后,查询所述元数据的位置信息并返回给客户端101,客户端101会再次向服务端102发起读请求,这次的读请求中包含所述元数据的位置信息。服务端102再根据该元数据的位置信息获取元数据,并进一步获得待读取数据,并将该待读取数据发送给客户端101。在该过程中,需要处理器201参与,也就是说,双边RDMA需要处理器201处理读请求,所以单边RDMA相对于双边RDMA,读取数据的时间更短,对处理器的占用率更低,用户体验更好。因此,单边RDMA的应用越来越广。
可以理解的,内存203中的数据可以通过哈希表(hash table)或索引的形式存储。下面分别对哈希表和索引进行介绍。
1、哈希表
服务端102可以在内存203中的至少一段连续内存上配置哈希表,其中,每段连续内存对应一个哈希表。进一步的,每段连续内存可以被划分为多个内存块,每个内存块中可以存储数据的键值对,即关键字(key)和值(value)。本申请中,value为元数据或者为数据本身。本申请下述实施例是以value为元数据为例进行阐述的,value为数据本身的情况可以参考value为元数据中对应的描述。
其中,每个内存块在该内存块所属的连续内存中的地址不同。示例性的,以一段连续内存的大小为4M,该连续内存按照4kb为单位划分内存块为例,该连续内存包括1024个内存块,也就是说,该连续内存上可以存储1024个数据的键值对。
服务端102在将数据的键值对写入哈希表的过程中,可以对该数据的key进行哈希运算,得到数据的哈希值;对该数据的哈希值做取模运算得到该数据的键值对的存储位置。具体的,服务端102将该数据的哈希值对内存203中哈希表的数量取模,得到第一余数。该第一余数与至少一个哈希表中的第一哈希表对应。服务端102可以确定将该数据的键值对写入到第一哈希表中。
进一步的,该数据的键值对在第一哈希表中的位置可以通过如下方法获得:服务端102将该数据的哈希值对第一哈希表对应的连续内存的大小取模,得到第二余数。该第二余数可以用于确定该数据的键值对在第一哈希表对应的连续内存中的地址。例如,第二余数为要写入键值对的第一内存块在第一哈希表对应的连续内存中的索引,服务端102可以将该键值对写入第一内存块中。
可以理解的,若内存203中的数据通过哈希表的形式存储,客户端101通过单边RDMA读内存203中的数据之前,可以采用与上述服务端102确定数据的键值对在内存203中的位置类似的方法,确定待读取数据的元数据在内存203中的位置。后续,客户端101可以向服务端102发送第一读请求,第一读请求中包括待读取数据的元数据的位置信息,这样网卡202即可根据该位置信息读取元数据,根据元数据获得待读取数据,将待读取数据发送给客户端101。
示例性的,客户端101对待读取数据的key进行哈希运算,根据哈希运算的结果查询预测列表,得到待读取数据的元数据的位置信息。其中,预测列表包括至少一个首地址,每个首地址是内存203中一段连续内存的起始地址。
进一步的,客户端101对待读取数据的key进行哈希运算,得到待读取数据的哈希值;将待读取数据的哈希值对预测列表中连续内存的首地址的数量(连续内存的首地址的数量与内存203中哈希表的数量相同)取模,得到第三余数。第三余数与预测列表指示的至少一段连续内存中的第一内存对应。客户端101将待读取数据的哈希值对第一内存的大小取模,得到第四余数。第四余数可以用于确定待读取数据的元数据在第一内存中的地址。例如,第四余数为用于存储待读取数据的元数据的第二内存块在第一内存中的索引。客户端101查询预测列表,得到第一内存的首地址,根据第一内存的首地址和第四余数可以得到待读取数据的元数据的位置信息。客户端101在根据待读取数据的key得到元数据的位置信息的过程中,通过哈希计算、取模和加法运算即可得到元数据的位置信息,计算开销较小。
综上所述,哈希表占用内存203一段连续的空间,它里面的key是离散的,不支持区间查询和范围查询,也不易扩展。内存203中可以有多段连续的空间,每段对应一个首地址,客户端101需要先获取某段的首地址,知道待读取数据在哪段,再进一步获取在该段中的位置。
2、索引
服务端102配置第一索引,例如,在内存203中配置第一索引。其中,第一索引包括多个数据的key。进一步的,第一索引还可以包括多个数据中、每个数据的value。第一索引中的key和value存储在一段连续的内存上。例如,第一索引可以为数组或列表等。
示例性的,第一索引可以如图3所示。图3中,第一索引包括多个键值对。其中,第一个键值对包括key 301和value 305,第二个键值对包括key 302和value 306,第三个键值对包括key 303和value 307,…,最后一个键值对包括key 304和value 308。
进一步可选的,第一索引中的key和key对应的value,可以按照顺序排列。例如,按照key从小到大的顺序排列。以图3所示的第一索引为例,key 301<key 302<key 303<key304。
可以理解的,若内存203中的数据通过第一索引的形式存储,客户端101通过单边RDMA读内存203中的数据之前,客户端101可以根据待读取数据的key和预测模型得到待读取数据的元数据的位置信息。其中,预测模型可以处理器201训练数据生成,并发送给客户端101的。元数据的位置信息可以用于指示元数据位于服务端102中的位置。例如,元数据的位置信息用于指示元数据位于第一索引中的位置。后续,客户端101可以向服务端102发送第一读请求,第一读请求中包括待读取数据的元数据的位置信息,这样网卡202即可根据该位置信息读取元数据,根据元数据获得待读取数据,将待读取数据发送给客户端101。
可选的,第一索引是静态的。也就是说,第一索引中的key不变,并且在预设的时间范围内,第一索引中的key的数量是不变的。换句话说,不会改变第一索引中的key,并且在预设的时间范围内不会在第一索引中增加新的key,但是可以更新第一索引中的key对应的value。
在这种情况下,服务端102配置第二索引,例如,在内存203中配置第二索引。第二索引可以用于记录更新数据的key。也就是说,若需要增加新的key,可以将新增加的key写入第二索引。
其中,第二索引包括多个数据的key和value。进一步的,第二索引中的key和key对应的value,可以按照顺序排列。例如,按照key从小到大的顺序排列。示例性的,第二索引包括B+树(tree)、B树、二叉树或有序的列表等。
可以理解的,若服务端102不配置第二索引,而是将新增加的key写入第一索引,一方面,第一索引中key的的位置会改变,在这种情况下,服务端102训练预测模型的过程中,还需要生成翻译表(translation table),该预测模型可以预测待读取数据的逻辑地址,翻译表可以将该逻辑地址转换为待读取数据在内存203的实际地址。而内存203中存储的数据一般较多,所以翻译表占用的空间也较大,导致服务端102和客户端101的内存开销较大。另一方面,第一索引在key大于一定阈值的情况下,还会进行分裂。在这种情况下,根据原先训练的预测模型和翻译表确定的实际地址就不准确。因此,服务端102需要重新对新的第一索引进行训练得到新的模型和翻译表,服务端102的计算开销较大。
一种可能的实现方式,更新数据的key会定期写入第一索引。可以理解的,若待读取数据的元数据位于第二索引,则客户端101通过单边RDMA是读取不到待读取数据的。因此,服务端102可以定期将第二索引写入第一索引,并训练新的第一索引得到新的预测模型,将新的预测模型发送给客户端101,这样客户端101就可以根据新的预测模型进行单边RDMA。
可以理解的,本申请实施例不限制预测模型和第一索引的数量。也就是说,服务端可以存储多个预测模型,以及每个预测模型对应的第一索引。一个预测模型和该预测模型对应的第一索引对应一段内存范围。进一步的,第二索引的数量与预测模型的数量相同。换句话说,本申请实施例中,预测模型、第一索引,和第二索引一一对应。
示例性的,如图4所示,服务端上存储有预测模型401-预测模型403,第一索引404-第一索引406,以及第二索引407-第二索引409。其中,预测模型401、第一索引404和第二索引407对应内存范围1,预测模型402、第一索引405和第二索引408对应内存范围2,预测模型403、第一索引406和第二索引409对应内存范围3。若服务端上要插入的数据是内存范围1中的数据,则将该数据插入到第二索引407中;若服务端上要插入的数据是内存范围2中的数据,则将该数据插入到第二索引408中;若服务端上要插入的数据是内存范围3中的数据,则将该数据插入到第二索引409中。
综上所述,内存203中的数据通过索引的形式存储,若要进行单边RDMA,是需要经过训练的,计算开销较大。但是,通过索引的形式存储数据容易扩展,而且key是连续的,支持区间查询和范围查询,在内存中占用的空间也小。
下面结合图1和图2对本申请实施例提供的访问数据的方法进行具体阐述。
可以理解的,本申请实施例中同一个步骤或者具有相同功能的步骤或者技术特征在不同实施例之间可以互相参考借鉴。
可以理解的,本申请实施例中,客户端和/或服务端可以执行本申请实施例中的部分或全部步骤,这些步骤仅是示例,本申请实施例还可以执行其它步骤或者各种步骤的变形。此外,各个步骤可以按照本申请实施例呈现的不同的顺序来执行,并且有可能并非要执行本申请实施例中的全部步骤。
在本申请实施例中,访问数据的方法的执行主体的具体结构,本申请实施例并未特别限定,只要能够实现本申请实施例的提供的方法即可。例如,本申请实施例提供的访问数据的方法的执行主体可以是客户端,或者为应用于客户端中的部件,例如,芯片,本申请对此不进行限定。或者,本申请实施例提供的访问数据的方法的执行主体可以是服务端,或者为应用于服务端中的部件,例如,芯片,本申请对此不进行限定。下述实施例以访问数据的方法的执行主体分别为客户端、服务端为例进行描述。
如图5所示,为本申请实施例提供的一种访问数据的方法,该访问数据的方法可以应用于图1所示的存储系统10中。该访问数据的方法包括S501-S502。
S501:客户端向服务端发送第一读请求。
其中,客户端可以为图1所示存储系统10中的客户端101。服务端可以为图1所示存储系统10中的服务端102。第一读请求为单边RDMA的读请求,它包括待读取数据的元数据的位置信息。
其中,待读取数据为客户端要读取的服务端中的数据。元数据的位置信息可以用于指示元数据位于服务端中的位置,并且该位置信息是根据待读取数据的key和预测信息得到的。一种可能的实现方式,元数据的位置信息可以指示元数据位于服务端中的内存的起始地址。
其中,预测信息可以包括预测模型或预测列表。客户端可以根据服务端中数据的存储形式,确定采用预测模型或预测列表获取位置信息。可以理解的,服务端中的数据可以以哈希表的形式存储,也可以以索引的形式存储。哈希表和索引的介绍可以参考上述图2所示实施例中对应的描述,此处不再赘述。下面分别以服务端中的数据以第一索引的形式和哈希表的形式存储为例,介绍预测模块。
情况1:服务端配置第一索引,预测信息包括预测模型。在这种情况下,元数据的位置信息是根据待读取数据的key和预测模型得到的。例如,将待读取数据的key作为预测模型的输入,该预测模型可以输出元数据的位置信息。
对于情况1,元数据的位置信息可以用于指示元数据位于第一索引中的位置,例如,元数据的位置信息指示了元数据在第一索引中的位置的起始地址。
一种可能的实现方式,S501之前,图5所示的方法还包括:服务端训练数据以生成预测模型;服务端将预测模型发送给客户端。进一步的,服务端训练数据以生成预测模型,具体包括:服务端训练第一索引以生成预测模型。例如,服务端可以通过一种或多种算法对第一索引进行模型训练,生成预测模型。这样客户端即可根据待读取数据的key和预测模型得到待读取数据的元数据的位置信息。
进一步的,服务端对第一索引进行模型训练,生成预测模型的过程中,还可以生成该预测模型的误差。预测模型的误差可以反映预测模型预测的位置的准确率。
一种可能的实现方式,S501之前,客户端根据待读取数据的key确定待读取数据的key是否保存在服务端中,当确定结果为待读取数据的key保存在服务端中时,客户端向服务端发送第一读请求。
进一步的,对于上述情况1,客户端根据待读取数据的key确定待读取数据的key是否保存在第一索引中,当确定结果为待读取数据的key保存在第一索引中,客户端向服务端发送第一读请求。当确定结果为待读取数据的key未保存在第一索引中,客户端通过双边RDMA读取待读取数据。
一种可能的实现方式,客户端可以将待读取数据的key输入到过滤器,例如布隆过滤器(bloom filter,BF)、计数布隆过滤器(counted bloom filter,Counted BF),紧凑型范围过滤器(succinct range filters,SuRF)、学习型过滤器等,以确定待读取数据的key是否保存在第一索引中。示例性的,客户端将待读取数据的key输入到过滤器中,若过滤器输出的值为“0”,则客户端可以确定待读取数据的key未保存在第一索引中;若过滤器输出的值为“1”,则客户端可以确定待读取数据的key保存在第一索引中。
进一步的,服务端可以根据一种或多种算法得到过滤器,并将过滤器发送给客户端,以便客户端根据过滤器确定待读取数据的key是否保存在第一索引中。
可以理解的,客户端接收到过滤器后,若第一索引和第二索引没有被更新,则客户端可以一直使用上述过滤器。若第二索引中新增加了数据,服务端可以根据新增加的数据更新过滤器,以便在客户端通过双边RDMA访问服务端的情况下,服务端根据更新后的过滤器确定服务端是否存储客户端要访问的数据。
可以理解的,若服务端中删除了数据,服务端可以重新训练得到新的过滤器,将新的过滤器发送给客户端。应理解,若该删除操作是服务端发起的内存资源回收流程,则服务端删除的数据为要淘汰的数据,服务端可以不重新训练过滤器。
情况2:服务端配置至少一个哈希表,预测信息包括预测列表。在这种情况下,元数据的位置信息是根据待读取数据的key和预测列表得到的。客户端根据待读取数据的key和预测列表得到元数据的位置信息的过程可以参考上述图2所示实施例中对应的描述。
对于情况2,元数据的位置信息可以指示元数据在哈希表中的位置,例如,元数据的位置信息可以指示元数据在哈希表中的位置的起始地址。
一种可能的实现方式,S501之前,图5所示的方法还包括:服务端获取至少一段连续内存的首地址,以生成预测列表;服务端将预测类别发送给客户端。这样客户端即可根据待读取数据的key和预测列表得到待读取数据的元数据的位置信息。
一种可能的实现方式,以客户端和服务端通过RDMA协议通信为例,对于上述情况1和情况2,客户端的网卡向服务端的网卡发送第一读请求。
对应的,服务端接收来自客户端的第一读请求。
S502:服务端根据元数据的位置信息读取元数据,根据元数据获得待读取数据,将待读取数据发送给客户端。
一种可能的实现方式,对于上述情况1,服务端根据元数据的位置信息读取元数据,具体包括:服务端根据元数据的位置信息从第一索引中读取元数据。进一步的,服务端在第一索引中,读取以元数据的位置信息指示的位置为起始位置,以服务端读取数据的读取宽度为大小的内存块,将该内存块发送给客户端。
一种可能的实现方式,对于上述情况2,服务端根据元数据的位置信息读取元数据,具体包括:服务端根据元数据的位置信息从至少一段连续内存中读取元数据。进一步的,服务端在至少一段连续内存中,读取以元数据的位置信息指示的位置为起始位置,以服务端读取数据的读取宽度为大小的内存块,将该内存块发送给客户端。
其中,服务端读取数据的读取宽度可以大于或等于待读取数据的元数据的大小与两倍的预测模型的误差之和。
可以理解的,对于上述情况1,在具体应用中,为了使得服务端发送给客户端的内存块中包括待读取数据的元数据,服务端或客户端可以调整元数据的位置信息。若服务端调整元数据的位置信息,服务端可以将元数据的位置信息指示的位置减小第一偏移,得到调整后的位置,服务端读取的内存块是以调整后的位置为起始位置,以服务端读取数据的读取宽度为大小的内存块。若客户端调整元数据的位置信息,客户端根据待读取数据的key和预测模型得到元数据的位置信息后,可以将元数据的位置信息指示的位置减小第一偏移,得到调整后的位置,并把调整后的位置包括在第一读请求中发送给服务端。这样服务端接收到第一读请求后,可以读取以调整后的位置为起始位置,以服务端读取数据的读取宽度为大小的内存块。上述第一偏移大于或等于预测模型的误差。
可以理解的,服务端的处理器,例如CPU,对S502的过程不感知,也就是说,服务端的处理器不参与S502中读取数据的过程,因此可以缩短读取数据的时间,提高用户体验。
可以理解的,在具体应用中,客户端可以对服务端中的元数据进行更新和/或插入操作。下面对客户端对服务端中的元数据进行更新和/或插入操作的具体过程进行阐述。该更新操作可以作用于第一索引和第二索引。该插入操作可以作用于第二索引。
示例性的,以客户端对服务端中的元数据进行更新操作(update)为例,客户端可以向服务端发送第二读请求,第二读请求包括要更新的key和要更新的key对应的value。服务端接收到第二读请求后,根据第二读请求在第一索引和/或第二索引中查找要更新的key。若查到要更新的key,服务端将第一索引和/或第二索引中要更新的key对应的value,更新为第二读请求中,要更新的key对应的value。若未查找到要更新的key,更新操作失败。
示例性的,以客户端对服务端中的元数据进行插入操作(insert)为例,客户端可以向服务端发送第三读请求,第三读请求包括要插入的key和该要插入的key对应的value。服务端接收到第三读请求后,根据第三读请求在第一索引和/或第二索引中查找要插入的key。若未查找到该要插入的key,服务端将要插入的key和该要插入的key对应的value插入到第二索引中。若查找到该要插入的key,插入操作失败。
示例性的,以客户端对服务端中的元数据进行更新和插入操作(put)为例,客户端可以向服务端发送第四读请求,第四读请求包括要更新和插入的key和该key对应的value。服务端接收到第四读请求后,根据第四读请求在第一索引和/或第二索引中查找要更新和插入的key。若查到该key,服务端将第一索引和/或第二索引中该key对应的value,更新为第四读请求中,该key对应的value。若未查找到该key,服务端将该key和该key对应的value插入到第二索引中。
可以理解的,服务端配置上述第一索引和第二索引可以使得客户端通过预测模型准确预测要待读取数据在第一索引中的位置。若第一索引中未保存有待读取数据的key时,可以从第二索引中获得待读取数据的元数据的存储地址,从而读取元数据。如此,服务端可以不用频繁地训练模型,可以减少服务端的计算开销。具体的,S502中,服务端根据位置信息读取元数据,具体包括:当第一索引中未保存有待读取数据的关键字时,从第二索引中获得待读取数据的元数据的存储地址,从而读取元数据。
也就是说,当S502中服务端读取的内存块中未包括待读取数据的元数据,客户端向服务端发送第五读请求,第五读请求包括待读取数据的key。服务端接收到第五读请求后,可以在第二索引中查找待读取数据的key,并获得待读取数据的元数据的存储地址,从而读取元数据。
可以理解的,若第二索引中未查找到待读取数据的key,服务端也可以在第一索引中查找,以避免因为预测模型预测的位置信息不准确导致数据读取失败的情况。
可以理解的,服务端在接收到第五读请求后,也可以先在第一索引中查找待读取数据的key,再在第二索引中查找待读取数据的key,本申请实施例不予限制。
可以理解的,服务端也可以根据第五读请求,同时在第一索引和第二索引中查找待读取数据的key,以减小服务端读取数据的时间。
一种可能的实现方式,第五读请求为双边RDMA读请求。
基于图5所示的方法,客户端可以根据待读取数据的关键字和预测信息预测待读取数据的元数据的位置信息,根据元数据的位置信息读取元数据,根据元数据获得待读取数据。在上述过程中,服务端的处理器不参与,因此可以降低访问时延。
可选的,在图5所示方法的一种可能的实现方式中,服务端具备预取功能。也就是说,服务端可以预测客户端将要读取的数据,并将预测的客户端将要读取的数据的元数据提前写入第二索引中。具体的,如图6所示,图5所示的方法还包括S601-S602。
S601:服务端预测客户端将要读取的数据。
一种可能的实现方式,服务端根据历史上客户端访问的数据,确定客户端将要读取的数据。
示例性的,若客户端前两次访问服务端时,读取了数据1、数据2和数据3。在客户端第三次访问服务端时,服务端可以预测客户端要读取的是数据1、数据2和数据3。
另一种可能的实现方式,服务端接收来自客户端的指示信息,该指示信息用于指示客户端将要访问的数据。服务端根据该指示信息预测客户端将要读取的数据。
S602:若将要读取的数据的元数据未包括在第一索引和第二索引中,服务端将客户端将要读取的数据的元数据写入第二索引。
一种可能的实现方式,服务端将客户端将要读取的数据的元数据写入第二索引中,使得写入后的第二索引中的key和该key对应的value,按照key的大小有序排列。
可以理解的,本申请实施例不限制S601-S602的执行顺序,例如,S601-S602可以在S501之前、S502之前或S502之后执行。
可以理解的,本申请实施例不限制S601-S602的执行次数,也就是说,服务端可以不断的预测客户端将要读取的数据,若客户端将要读取的数据未包括在第一索引和第二索引中,服务端就将客户端将要读取的数据的元数据写入第二索引。
基于图6所示的方法,服务端可以将预测的客户端将要读取的数据的元数据提前写入第二索引中,当客户端需要读取服务端预测的数据的情况下,服务端可以快速返回该数据,提高了服务端的响应速度。
对于上述情况1,可以将新增加的key写入第二索引中,这样第一索引就不会出现分裂的情况,服务端可以不用频繁地训练模型,进而可以减少服务端的计算开销。服务端和客户端也不需要存储翻译表,可以减小服务端和客户端的内存的开销。然而,当第二索引中写入的元数据较多时,客户端要读取的数据很有可能都包括在第二索引中。在这种情况下,若还是采用上述预测模型预测待读取数据的元数据的位置信息,根据位置信息获取获取待读取数据的元数据,很可能会因为该元数据中未包括在第一索引中,而导致客户端需要再次向服务端发送读请求(同上述第五读请求),增加了客户端读取数据的时间,影响用户体验。因此,服务端可以定期或不定期的重新训练模型,使得客户端根据新的模型预测要读取的数据的位置,可以在减少服务端的计算开销,服务端和客户端的内存开销的基础上,减少客户端读取数据的时间,提高用户体验。
可选的,在图5所示方法的一种可能的实现方式中,服务端可以定期或不定期的重新训练模型,使得客户端根据新的预测模型预测待读取数据的元数据的位置信息。具体的,如图7所示,图5所示的方法还包括S701-S703。
S701:服务端将第二索引写入第一索引,得到第三索引。
一种可能的实现方式,服务端可以在下述情况下将第二索引写入第一索引。
情况A:服务端定期将第二索引写入第一索引。例如,服务端每隔12小时将第二索引写入第一索引。
情况B:服务端不定期将第二索引写入第一索引。例如,第二索引的大小大于或等于一个预设的阈值的情况下,服务端将第二索引写入第一索引。
情况C:服务端通过预测客户端将要读取的数据,并将预测的客户端将要读取的数据的元数据写入第二索引中的情况下,也就是说,S602之后,服务端将第二索引写入第一索引。
对于上述情况C,S602中,服务端将客户端将要读取的数据的元数据写入第二索引,具体包括:服务端将客户端将要读取的数据的key写入第二索引,将第二索引中,客户端将要读取的数据的value设置为空。可以理解的,服务端将客户端将要读取的数据的key写入到第二索引中所用的时间较短,而服务端将客户端将要读取的数据的value拷贝到第二索引中所用的时间比较长。所以服务端可以先将客户端将要读取的数据的key写入第二索引中,而将客户端将要读取的数据的value设置为空,以使得服务端可以尽快训练模型,将训练好的模型发送给客户端。这样客户端就可以在发起读请求前获取到训练好的模型。后续,客户端可以通过训练好的模型预测待读取数据在第三索引中的位置,快速读取数据。
一种可能的实现方式,第三索引中的数据的key和value,按照key的大小有序排列。
进一步的,S701之前,服务端可以拷贝第一索引。S701中,第二索引可以写入拷贝的第一索引中,得到第三索引。服务端在拷贝第一索引的过程中,可以将原先第一索引中数据的key拷贝到新的第一索引中,将数据的value以指针的方式指向原先第一索引中该数据的value,在模型训练完成后,再将新的第一索引中的指针通过拷贝替换为原先第一索引中对应的value。类似的,在第二索引写入拷贝的第一索引,得到第三索引的过程中,可以将第二索引中的数据的key写入拷贝的第一索引中,将数据的value以指针的方式指向第二索引中该数据的value,在模型训练完成后,再将第三索引中的指针通过拷贝替换为第二索引中对应的value。如此,若在服务端拷贝第一索引,至模型训练的过程中,第一索引或第二索引中的数据的value被更新,也不会影响第三索引的准确性。
可以理解的,在S701中,若第一索引和第二索引中存在相同的key,则将第二索引中该key对应的value作为第三索引中,该key对应的value。
可以理解的,服务端开始执行S701时,服务端不在第二索引中新增加key。若有数据的key需要写入到服务端中,可以写入第四索引中。第四索引包括多个数据的key和value。进一步的,第四索引中的key和key对应的value,可以按照顺序排列。例如,按照key从小到大的顺序排列。例如,第四索引包括B+树、B树、二叉树或有序的列表等。
S702:服务端训练第三索引以生成新的预测模型。
其中,新的预测模型用于根据待读取数据的关键字预测待读取数据的元数据在第三索引中的位置。
一种可能的实现方式,服务端通过一种或多种算法对第三索引进行模型训练得到新的预测模型。
可以理解的,对于上述情况C,S702之后,服务端根据客户端将要读取的数据的value,更新第三索引,使得第三索引中,客户端将要读取的数据的key对应的value为客户端将要读取的数据的value。
本申请实施例中,服务端通过训练得到模型的过程中还可以为每个模型生成对应的版本号或序列号。该模型对应的版本号或序列号与该模型对应的索引的版本号或序列号一致。这样服务端可以将预测模型和该预测模型对应的索引联系起来。
S703:服务端将新的预测模型发送给客户端。
一种可能的实现方式,对于上述情况A和情况B,服务端可以向与服务端通信连接的一个或多个客户端发送新的预测模型。对于上述情况C,服务端可以向服务端的预测对象,即S601中的客户端发送新的预测模型。上述情况C中,服务端是预测的S601中的客户端将要读取的数据,提前将S601中的客户端将要读取的数据写入第二索引中,其他客户端可能不会读取上述数据,因此可以不用向其他客户端发送新的预测模型。
可以理解的,在客户端启用新的预测模型之前,服务端和客户端之间还可以通过图5或图6所示的方法读取数据、更新数据或插入数据。不同的是,在插入数据时,不在第二索引中插入数据,而是在第四索引中插入数据。在读取数据时,若第一索引和第二索引中都未查找到要读取的数据,还可以在第四索引中查找数据。
对应的,客户端接收来自服务端的新的预测模型。
可以理解的,客户端接收到新的预测模型后,可以通过新的预测模型预测待读取数据的元数据在第三索引中的位置。进一步的,客户端可以删除旧的预测模型。
可以理解的,S701-S703还可以在图6所示的方法中执行,不予限制。
基于图7所示的方法,服务端可以定期或不定期的重新训练模型,使得客户端根据新的模型预测待读取数据的元数据的位置,可以在减少服务端的计算开销,服务端和客户端的内存开销的基础上,降低访问时延。
上述图5、图6或图7所示的方法中,第一索引、第二索引、第三索引、第四索引和哈希表中存储的是数据的元数据。在具体应用中,第一索引、第二索引、第三索引、第四索引和哈希表中也可以存储数据。以第一索引存储数据为例,第一索引可以包括多个数据的key和每个key对应的数据。第一索引、第二索引、第三索引、第四索引和哈希表中存储数据的情况下,本申请实施例提供的访问数据的方法的具体过程可以参考上述图5、图6或图7所示方法中所述,不同的有以下几处:
1、S501中的第一读请求包括待读取数据的位置信息,该待读取数据的位置信息可以用于指示待读取数据位于服务端中的位置,并且待读取数据的位置信息是根据待读取数据的key和预测信息得到的。
2、S502中,服务端不是根据位置信息读取元数据,而是根据位置信息获得待读取数据,将待读取数据发送给客户端。
3、S602中,服务端要确定的是将要读取的数据是否包括在第一索引和第二索引中,若将要读取的数据未包括在第一索引和第二索引中,服务端将客户端将要读取的数据写入第二索引。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (63)
1.一种访问数据的方法,其特征在于,所述方法应用于存储系统中,所述存储系统包括客户端和服务端,所述客户端和所述服务端之间通过内存访问协议通信,所述方法包括:
所述客户端向所述服务端发送第一读请求,所述第一读请求包括待读取数据的元数据的位置信息,所述位置信息用于指示所述元数据位于所述服务端中的位置,并且所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述服务端接收所述第一读请求,根据所述位置信息读取所述元数据,并且根据所述元数据获得所述待读取数据,将所述待读取数据发送给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述服务端中一段连续内存的起始地址。
3.根据权利要求2所述的方法,其特征在于,所述预测信息包括所述预测模型,所述方法还包括:
所述服务端训练数据以生成所述预测模型;
所述服务端将所述预测模型发送给所述客户端。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述服务端配置第一索引,所述第一索引包括多个数据的关键字,所述位置信息用于指示所述元数据位于所述第一索引中的位置;
所述根据所述位置信息读取所述元数据具体包括:
所述服务端根据所述位置信息从所述第一索引中读取所述元数据。
5.根据权利要求4所述的方法,其特征在于,所述第一索引是静态的,所述第一索引中的关键字不变。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
所述服务端配置第二索引,所述第二索引用于记录更新数据的关键字,所述更新数据的关键字会定期写入所述第一索引。
7.根据权利要求6所述的方法,其特征在于,所述根据所述位置信息读取所述元数据具体包括:
当所述第一索引中未保存有所述待读取数据的关键字时,从所述第二索引中获得所述待读取数据的元数据的存储地址,从而读取所述元数据。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
所述服务端预测所述客户端将要读取的数据;
若所述将要读取的数据的元数据未包括在所述第一索引和所述第二索引中,所述服务端将所述将要读取的数据的元数据写入所述第二索引。
9.根据权利要求8所述的方法,其特征在于,所述服务端将所述将要读取的数据的元数据写入所述第二索引之后,所述方法还包括:
所述服务端将所述第二索引写入所述第一索引,得到第三索引;
所述服务端训练所述第三索引以生成新的预测模型;
所述服务端将所述新的预测模型发送给所述客户端。
10.根据权利要求2所述的方法,其特征在于,所述预测信息包括所述预测列表,所述方法还包括:
所述服务端获取所述至少一个首地址以生成所述预测列表;
所述服务端将所述预测列表发送给所述客户端。
11.根据权利要求10所述的方法,其特征在于,所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的具体包括:
所述元数据的位置信息是对所述待读取数据的关键字做哈希运算,根据所述哈希运算的结果查询所述预测列表得到的。
12.根据权利要求1所述的方法,其特征在于,所述客户端向所述服务端发送第一读请求之前,所述方法还包括:
所述客户端根据所述待读取数据的关键字确定所述待读取数据的关键字是否保存在所述服务端中;
所述客户端向所述服务端发送第一读请求具体包括:当确定结果为所述待读取数据的关键字保存在所述服务端中时,所述客户端向所述服务端发送第一读请求。
13.一种访问数据的方法,其特征在于,所述方法应用于存储系统中,所述存储系统包括客户端和服务端,所述客户端和所述服务端之间通过内存访问协议通信,所述方法包括:
所述客户端向所述服务端发送第一读请求,所述第一读请求包括待读取数据的位置信息,所述位置信息用于指示所述待读取数据位于所述服务端中的位置,并且所述待读取数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述服务端接收所述第一读请求,根据所述位置信息获得所述待读取数据,将所述待读取数据发送给所述客户端。
14.根据权利要求13所述的方法,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述服务端中一段连续内存的起始地址。
15.根据权利要求14所述的方法,其特征在于,所述预测信息包括所述预测模型,所述方法还包括:
所述服务端训练数据以生成所述预测模型;
所述服务端将所述预测模型发送给所述客户端。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
所述服务端配置第一索引,所述第一索引包括多个数据的关键字,所述位置信息用于指示所述待读取数据位于所述第一索引中的位置;
所述根据所述位置信息读取所述待读取数据具体包括:
所述服务端根据所述位置信息从所述第一索引中读取所述待读取数据。
17.根据权利要求16所述的方法,其特征在于,所述第一索引是静态的,所述第一索引中的关键字不变。
18.根据权利要求16或17所述的方法,其特征在于,所述方法还包括:
所述服务端配置第二索引,所述第二索引用于记录更新数据的关键字,所述更新数据的关键字会定期写入所述第一索引。
19.根据权利要求18所述的方法,其特征在于,所述根据所述位置信息获得所述待读取数据具体包括:
当所述第一索引中未保存有所述待读取数据的关键字时,从所述第二索引中获得所述待读取数据的存储地址,从而读取所述待读取数据。
20.根据权利要求18或19所述的方法,其特征在于,所述方法还包括:
所述服务端预测所述客户端将要读取的数据;
若所述将要读取的数据未包括在所述第一索引和所述第二索引中,所述服务端将所述将要读取的数据写入所述第二索引。
21.根据权利要求20所述的方法,其特征在于,所述服务端将所述将要读取的数据写入所述第二索引之后,所述方法还包括:
所述服务端将所述第二索引写入所述第一索引,得到第三索引;
所述服务端训练所述第三索引以生成新的预测模型;
所述服务端将所述新的预测模型发送给所述客户端。
22.根据权利要求14所述的方法,其特征在于,所述预测信息包括所述预测列表,所述方法还包括:
所述服务端获取所述至少一个首地址以生成所述预测列表;
所述服务端将所述预测列表发送给所述客户端。
23.根据权利要求22所述的方法,其特征在于,所述待读取数据的位置信息是根据所述待读取数据的关键字与预测信息获得的具体包括:
所述待读取数据的位置信息是对所述待读取数据的关键字做哈希运算,根据所述哈希运算的结果查询所述预测列表得到的。
24.根据权利要求13所述的方法,其特征在于,所述客户端向所述服务端发送第一读请求之前,所述方法还包括:
所述客户端根据所述待读取数据的关键字确定所述待读取数据的关键字是否保存在所述服务端中;
所述客户端向所述服务端发送第一读请求具体包括:当确定结果为所述待读取数据的关键字保存在所述服务端中时,所述客户端向所述服务端发送第一读请求。
25.一种访问数据的装置,其特征在于,所述装置包括网卡和内存,所述网卡支持内存访问协议;
所述网卡,用于接收第一读请求,所述第一读请求包括待读取数据的元数据的位置信息,所述位置信息用于指示所述元数据位于所述内存中的位置,并且所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述网卡,还用于根据所述位置信息读取所述元数据,根据所述元数据获得所述待读取数据,将所述待读取数据发送给客户端。
26.根据权利要求25所述的装置,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述访问数据的装置中一段连续内存的起始地址。
27.根据权利要求26所述的装置,其特征在于,所述预测信息包括所述预测模型,所述装置还包括:处理器;
所述处理器,用于训练数据以生成所述预测模型;
所述网卡,还用于将所述预测模型发送给所述客户端。
28.根据权利要求27所述的装置,其特征在于,
所述处理器,还用于配置第一索引,所述第一索引包括多个数据的关键字,所述位置信息用于指示所述元数据位于所述第一索引中的位置;
所述网卡,具体用于根据所述位置信息从所述第一索引中读取所述元数据。
29.根据权利要求28所述的装置,其特征在于,所述第一索引是静态的,所述第一索引中的关键字不变。
30.根据权利要求28或29所述的装置,其特征在于,
所述处理器,还用于配置第二索引,所述第二索引用于记录更新数据的关键字,所述更新数据的关键字会定期写入所述第一索引。
31.根据权利要求30所述的装置,其特征在于,
所述网卡,具体用于当所述第一索引中未保存有所述待读取数据的关键字时,从所述第二索引中获得所述待读取数据的元数据的存储地址,从而读取所述元数据。
32.根据权利要求30或31所述的装置,其特征在于,
所述处理器,还用于预测所述客户端将要读取的数据;
所述处理器,还用于若所述将要读取的数据的元数据未包括在所述第一索引和所述第二索引中,将所述将要读取的数据的元数据写入所述第二索引。
33.根据权利要求32所述的装置,其特征在于,
所述处理器,还用于将所述第二索引写入所述第一索引,得到第三索引;
所述处理器,还用于训练所述第三索引以生成新的预测模型;
所述网卡,还用于将所述新的预测模型发送给所述客户端。
34.根据权利要求26所述的装置,其特征在于,所述预测信息包括所述预测列表,所述装置还包括处理器;
所述处理器,用于获取所述至少一个首地址以生成所述预测列表;
所述网卡,还用于将所述预测列表发送给所述客户端。
35.根据权利要求34所述的装置,其特征在于,所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的具体包括:
所述元数据的位置信息是对所述待读取数据的关键字做哈希运算,根据所述哈希运算的结果查询所述预测列表得到的。
36.一种访问数据的装置,其特征在于,所述装置包括网卡和内存,所述网卡支持内存访问协议;
所述网卡,用于向服务端发送第一读请求,所述第一读请求包括待读取数据的元数据的位置信息,所述位置信息用于指示所述元数据位于所述服务端中的位置,并且所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述网卡,还用于接收待读取数据。
37.根据权利要求36所述的装置,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述服务端中一段连续内存的起始地址。
38.根据权利要求37所述的装置,其特征在于,
所述预测信息包括所述预测模型,所述网卡,还用于接收所述预测模型;或者,
所述预测信息包括所述预测列表,所述网卡,还用于接收所述预测列表。
39.根据权利要求36所述的装置,其特征在于,所述装置还包括:处理器;
所述处理器,用于根据所述待读取数据的关键字确定所述待读取数据的关键字是否保存在所述服务端中;
所述网卡,具体用于当确定结果为所述待读取数据的关键字保存在所述服务端中时,向所述服务端发送第一读请求。
40.一种存储系统,所述存储系统包括客户端和服务端,所述客户端和所述服务端之间通过内存访问协议通信;
所述客户端,用于向所述服务端发送第一读请求,所述第一读请求包括待读取数据的元数据的位置信息,所述位置信息用于指示所述元数据位于所述服务端中的位置,并且所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述服务端,用于接收所述第一读请求,根据所述位置信息读取所述元数据,并且根据所述元数据获得所述待读取数据,将所述待读取数据发送给所述客户端。
41.根据权利要求40所述的存储系统,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述服务端中一段连续内存的起始地址。
42.根据权利要求41所述的存储系统,其特征在于,所述预测信息包括所述预测模型;
所述服务端,还用于训练数据以生成所述预测模型;
所述服务端,还用于将所述预测模型发送给所述客户端。
43.根据权利要求42所述的存储系统,其特征在于,
所述服务端,还用于配置第一索引,所述第一索引包括多个数据的关键字,所述位置信息用于指示所述元数据位于所述第一索引中的位置;
所述服务端,具体用于根据所述位置信息从所述第一索引中读取所述元数据。
44.根据权利要求43所述的存储系统,其特征在于,所述第一索引是静态的,所述第一索引中的关键字不变。
45.根据权利要求43或44所述的存储系统,其特征在于,
所述服务端,还用于配置第二索引,所述第二索引用于记录更新数据的关键字,所述更新数据的关键字会定期写入所述第一索引。
46.根据权利要求45所述的存储系统,其特征在于,
所述服务端,具体用于当所述第一索引中未保存有所述待读取数据的关键字时,从所述第二索引中获得所述待读取数据的元数据的存储地址,从而读取所述元数据。
47.根据权利要求45或46所述的存储系统,其特征在于,
所述服务端,还用于预测所述客户端将要读取的数据;
若所述将要读取的数据的元数据未包括在所述第一索引和所述第二索引中,所述服务端,还用于将所述将要读取的数据的元数据写入所述第二索引。
48.根据权利要求47所述的存储系统,其特征在于,
所述服务端,还用于将所述第二索引写入所述第一索引,得到第三索引;
所述服务端,还用于训练所述第三索引以生成新的预测模型;
所述服务端,还用于将所述新的预测模型发送给所述客户端。
49.根据权利要求41所述的存储系统,其特征在于,所述预测信息包括所述预测列表,
所述服务端,还用于获取所述至少一个首地址以生成所述预测列表;
所述服务端,还用于将所述预测列表发送给所述客户端。
50.根据权利要求49所述的存储系统,其特征在于,所述元数据的位置信息是根据所述待读取数据的关键字与预测信息获得的具体包括:
所述元数据的位置信息是对所述待读取数据的关键字做哈希运算,根据所述哈希运算的结果查询所述预测列表得到的。
51.根据权利要求40所述的存储系统,其特征在于,
所述客户端,还用于根据所述待读取数据的关键字确定所述待读取数据的关键字是否保存在所述服务端中;
所述客户端,还具体用于当确定结果为所述待读取数据的关键字保存在所述服务端中时,向所述服务端发送第一读请求。
52.一种存储系统,其特征在于,所述存储系统包括客户端和服务端,所述客户端和所述服务端之间通过内存访问协议通信;
所述客户端,用于向所述服务端发送第一读请求,所述第一读请求包括待读取数据的位置信息,所述位置信息用于指示所述待读取数据位于所述服务端中的位置,并且所述待读取数据的位置信息是根据所述待读取数据的关键字与预测信息获得的;
所述服务端,用于接收所述第一读请求,根据所述位置信息获得所述待读取数据,将所述待读取数据发送给所述客户端。
53.根据权利要求52所述的存储系统,其特征在于,所述预测信息包括预测模型或预测列表,所述预测列表包括至少一个首地址,每个首地址是所述服务端中一段连续内存的起始地址。
54.根据权利要求53所述的存储系统,其特征在于,所述预测信息包括所述预测模型;
所述服务端,还用于训练数据以生成所述预测模型;
所述服务端,还用于将所述预测模型发送给所述客户端。
55.根据权利要求54所述的存储系统,其特征在于;
所述服务端,还用于配置第一索引,所述第一索引包括多个数据的关键字,所述位置信息用于指示所述待读取数据位于所述第一索引中的位置;
所述服务端,具体用于根据所述位置信息从所述第一索引中读取所述待读取数据。
56.根据权利要求55所述的存储系统,其特征在于,所述第一索引是静态的,所述第一索引中的关键字不变。
57.根据权利要求55或56所述的存储系统,其特征在于;
所述服务端,还用于配置第二索引,所述第二索引用于记录更新数据的关键字,所述更新数据的关键字会定期写入所述第一索引。
58.根据权利要求57所述的存储系统,其特征在于,
所述服务端,具体用于当所述第一索引中未保存有所述待读取数据的关键字时,从所述第二索引中获得所述待读取数据的存储地址,从而读取所述待读取数据。
59.根据权利要求57或58所述的存储系统,其特征在于,
所述服务端,还用于预测所述客户端将要读取的数据;
若所述将要读取的数据未包括在所述第一索引和所述第二索引中,所述服务端,还用于将所述将要读取的数据写入所述第二索引。
60.根据权利要求59所述的存储系统,其特征在于,
所述服务端,还用于将所述第二索引写入所述第一索引,得到第三索引;
所述服务端,还用于训练所述第三索引以生成新的预测模型;
所述服务端,还用于将所述新的预测模型发送给所述客户端。
61.根据权利要求53所述的存储系统,其特征在于,所述预测信息包括所述预测列表,
所述服务端,还用于获取所述至少一个首地址以生成所述预测列表;
所述服务端,还用于将所述预测列表发送给所述客户端。
62.根据权利要求61所述的存储系统,其特征在于,所述待读取数据的位置信息是根据所述待读取数据的关键字与预测信息获得的具体包括:
所述待读取数据的位置信息是对所述待读取数据的关键字做哈希运算,根据所述哈希运算的结果查询所述预测列表得到的。
63.根据权利要求52所述的存储系统,其特征在于,
所述客户端,还用于根据所述待读取数据的关键字确定所述待读取数据的关键字是否保存在所述服务端中;
所述客户端,还具体用于当确定结果为所述待读取数据的关键字保存在所述服务端中时,向所述服务端发送第一读请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083500.6A CN114817232A (zh) | 2021-01-21 | 2021-01-21 | 访问数据的方法及装置 |
PCT/CN2022/072421 WO2022156650A1 (zh) | 2021-01-21 | 2022-01-17 | 访问数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083500.6A CN114817232A (zh) | 2021-01-21 | 2021-01-21 | 访问数据的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114817232A true CN114817232A (zh) | 2022-07-29 |
Family
ID=82524200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110083500.6A Pending CN114817232A (zh) | 2021-01-21 | 2021-01-21 | 访问数据的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114817232A (zh) |
WO (1) | WO2022156650A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028677A (zh) * | 2023-03-14 | 2023-04-28 | 阿里云计算有限公司 | 数据操作方法以及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785997A (zh) * | 2022-09-22 | 2024-03-29 | 北京火山引擎科技有限公司 | 数据处理方法及装置 |
CN116991338B (zh) * | 2023-09-28 | 2023-12-22 | 北京超弦存储器研究院 | 访问数据的方法及控制器、cxl内存模组和存储系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150006478A1 (en) * | 2013-06-28 | 2015-01-01 | Silicon Graphics International Corp. | Replicated database using one sided rdma |
US9448901B1 (en) * | 2015-12-15 | 2016-09-20 | International Business Machines Corporation | Remote direct memory access for high availability nodes using a coherent accelerator processor interface |
CN109445905B (zh) * | 2018-06-22 | 2022-04-22 | 华为云计算技术有限公司 | 虚拟机数据通信方法和系统以及虚拟机配置方法和装置 |
CN110221779B (zh) * | 2019-05-29 | 2020-06-19 | 清华大学 | 分布式持久性内存存储系统的构建方法 |
CN111538603B (zh) * | 2020-04-20 | 2022-03-22 | 上海交通大学 | 机器学习和rdma加速的键值存储读访问方法及系统 |
-
2021
- 2021-01-21 CN CN202110083500.6A patent/CN114817232A/zh active Pending
-
2022
- 2022-01-17 WO PCT/CN2022/072421 patent/WO2022156650A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028677A (zh) * | 2023-03-14 | 2023-04-28 | 阿里云计算有限公司 | 数据操作方法以及系统 |
CN116028677B (zh) * | 2023-03-14 | 2023-08-29 | 阿里云计算有限公司 | 数据操作方法以及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2022156650A1 (zh) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108810041B (zh) | 一种分布式缓存系统的数据写入及扩容方法、装置 | |
CN114817232A (zh) | 访问数据的方法及装置 | |
CN111247518B (zh) | 用于数据库分片的方法和系统 | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
US11580162B2 (en) | Key value append | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
US20190005101A1 (en) | Method and apparatus for accessing time series data in memory | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN110958300B (zh) | 一种数据的上传方法、系统、装置、电子设备和计算机可读介质 | |
CN113853778B (zh) | 一种文件系统的克隆方法及装置 | |
US11996868B2 (en) | Adaptive delta compression for timeseries data | |
CN114356893A (zh) | 基于机器学习的元数据调优方法、装置、设备及存储介质 | |
CN106528451A (zh) | 针对小文件的二级缓存预取的云存储框架及构建方法 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN116560562A (zh) | 一种读、写数据方法及装置 | |
CN101247405A (zh) | 计算下载时间及资源下载的方法、系统及装置 | |
CN105069139B (zh) | 文件访问方法和文件访问装置以及服务器 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
CN117009389A (zh) | 数据缓存方法、装置、电子设备和可读存储介质 | |
US10073874B1 (en) | Updating inverted indices | |
JP2016045594A (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN113934361B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN113806389A (zh) | 一种数据处理方法、装置、计算设备与存储介质 |
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 |