CN113792031B - 键值对数据的处理方法、系统、设备和介质 - Google Patents
键值对数据的处理方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN113792031B CN113792031B CN202111180762.0A CN202111180762A CN113792031B CN 113792031 B CN113792031 B CN 113792031B CN 202111180762 A CN202111180762 A CN 202111180762A CN 113792031 B CN113792031 B CN 113792031B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- key value
- value pair
- pair data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 12
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000006399 behavior Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,特别涉及键值对数据的处理方法、系统、设备和介质。方法包括:接收来自用户设备的键值对数据;该键值对数据的键中含有版本信息的情况下,将该版本信息转移到该键值对数据的值中;按照键的字符串顺序存储版本信息经过转移的键值对数据;对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据。解决异构网络中,服务器为了保证客户端读取到最新键值对数据而造成的读写性能差的问题。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及键值对数据的处理方法、系统、设备和介质。
背景技术
在多云网络环境中,不同网络中的不同客户端会同时操作或写同一个用户的相同信息,而在异构网络中,每个客户端写入的数据到达存储端的时间无法严格有序,这样,其他客户端在读取该数据时就无法保证该数据是最新版本的。解决该问题的通用方法是在写入数据的key(键)的时候,对key的版本信息的进行查询,如果写入版本比存储的版本新,则更新数据再写入,然而这种方法会降低读写性能。
发明内容
本发明的目的在于提供键值对数据的处理方法、系统、设备和介质,解决异构网络中,服务器为了保证客户端读取到最新键值对数据而造成的读写性能差的问题。
本申请的实施方式公开了一种键值对数据的处理方法,用于电子设备,包括:
接收来自用户设备的键值对数据;
该键值对数据的键中含有版本信息的情况下,将该版本信息转移到该键值对数据的值中;
按照键的字符串顺序存储版本信息经过转移的键值对数据;
对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据。
可选地,方法还包括:
键值对数据的键中没有版本信息的情况下,为该键值对数据的键添加第一标签;
接收来自用户设备的读出具有第一键的键值对数据的请求;
响应于该请求,访问具有该第一键的一个或多个键值对数据,直到遍历所有具有该第一键的键值对数据或访问到具有第一标签的键的键值对数据;
输出版本信息最新的键值对数据,或输出没有版本信息的键值对数据。
可选地,合并操作还包括:
为保留的版本信息最新的键值对数据添加第一标签。
可选地,对具有相同键的多个键值对数据中进行合并操作包括:
从该多个键值对数据中按预设规则选定不超过第一预定数量的键值对数据,并对该不超过第一预定数量的键值对数据进行合并操作,得到合并操作后的键值对数据;
如存在未被合并的键值对数据的情况下,针对该合并操作后的键值对数据与该未被合并的键值对数据,重复进行选定不超过第一预定数量的键值对并进行合并操作的处理,直至第二预定数量的键值对数据被保留,其中,该第二预定数量的键值对数据的版本信息比上述多个键值对数据的版本信息更新。
可选地,合并操作是在经过预定时间或存入具有相同键的键值对数据达到预定阈值数量的情况下被实施。
本申请的实施方式公开了一种键值对数据的处理系统,包括
接收模块,该接收模块接收来自用户设备的键值对数据;
存储模块,该键值对数据的键中含有版本信息的情况下,该存储模块将版本信息转移到该键值对数据的值中;该存储模块按照键的字符串顺序存储版本信息经过转移的键值对数据;
合并模块,该合并模块对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据。
本申请的实施方式公开了一种键值对数据的处理设备,该设备包括存储有计算机可执行指令的存储器和处理器,当该指令被该处理器执行时,使得该设备实施以上任一键值对数据的处理方法。
本申请的实施方式公开了一种计算机存储介质,在该计算机存储介质上存储有指令,当该指令在计算机上运行时,使得该计算机执行以上任一键值对数据的处理方法。
本发明实施方式与现有技术相比,主要区别及其效果在于:
在本申请中,键值对数据的键中含有版本信息的情况下,将该版本信息转移到该键值对数据的值中;按照键的字符串顺序存储版本信息经过转移的键值对数据。对版本的判断和处理通常只需要极短的时间(1us左右),对延时的影响几乎可以忽略,内存管理采用LSM结构落盘,这样不同的客户端在数据写入的时候不需要做版本比较,不影响LSM追加写入的性能。
在本申请中,对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据;键值对数据的键中没有版本信息的情况下,为该键值对数据的键添加第一标签;响应于请求,访问具有该第一键的一个或多个键值对数据,直到遍历所有具有该第一键的键值对数据或访问到具有第一标签的键的键值对数据;为留下的版本信息最新的键值对数据添加第一标签。从多个键值对数据中按预设规则选定不超过第一预定数量的键值对数据,并对该不超过第一预定数量的键值对数据进行合并操作,得到合并操作后的键值对数据;如存在未被合并的键值对数据的情况下,针对该合并操作后的键值对数据与该未被合并的键值对数据,重复进行选定不超过第一预定数量的键值对并进行合并操作的处理,直至第二预定数量的键值对数据被保留,其中,该第二预定数量的键值对数据的版本信息比上述多个键值对数据的版本信息更新;合并操作是在经过预定时间或存入具有相同键的键值对数据达到预定阈值数量的情况下被实施;
上述合并操作可以利用服务器的多核处理器周期并发地在后台执行,不影响读写性能,同时可以把存储服务器存储的键值对数据的版本控制在一个范围内,当读取键值对数据时,访问到具有第一标签(Put)的数据,则不再遍历,这样保证每次能够读取到最新版本的数据,并且读取扫描的版本个数可控,进而控制了延时,也避免因为数据版本增多而使得存储器中存储的数据量越来越大,进而面临需要扩容的问题。
附图说明
图1示出根据本申请的实施例的键值对数据的处理方法的实施场景的示意图。
图2A示出根据本申请的实施例的服务器接收和存储键值对数据的示意图。
图2B示出根据本申请的实施例的服务器接收和存储键值对数据的示意图。
图2C示出根据本申请的实施例的服务器接收和存储键值对数据的示意图。
图3示出根据本申请的实施例的合并操作的示意图。
图4示出根据本申请的实施例的键值对数据的处理方法的流程图。
图5示出根据本发明的实施例的键值对数据的处理系统的框图。
图6示出根据本申请的实施例的键值对数据的处理设备的示意图。
具体实施方式
下面结合具体实施例和附图对本申请做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本申请,而非对本申请的限定。此外,为了便于描述,附图中仅示出了与本申请相关的部分而非全部的结构或过程。应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项。
应当理解的是,虽然在本文中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了进行区分,而不能理解为指示或暗示相对重要性。举例来说,在不背离示例性实施例的范围的情况下,第一特征可以被称为第二特征,并且类似地第二特征可以被称为第一特征。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本实施例中的具体含义。
本申请的说明性实施例包括但不限于键值对数据的处理方法、系统、设备和介质。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本申请的说明性实施例模糊不清。
此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A和/或B”表示“(A)、(B)或(A和B)”。
如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括:用于运行一个或多个软件或固件程序的存储器(共享、专用或组)、专用集成电路(ASIC)、电子电路和/或处理器(共享、专用或组)、组合逻辑电路、和/或提供所述功能的其他合适组件。
在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
图1示出根据本申请的实施例的键值对数据的处理方法的实施场景的示意图。
如图1所示,场景包括终端103-107,终端103-107可以是台式终端或移动终端,移动终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等。终端103-107可以安装有可以进行访问远程服务的应用,例如浏览器或者客户端。本申请实施例涉及的应用可以是软件客户端,也可以是网页、小程序等客户端,若应用为网页、小程序等客户端时,后台服务器则是与软件或是网页、小程序等相对应的后台服务器,不限制客户端的具体类型。
场景还包括服务器101,服务器101可以为终端103-107上安装的应用所对应的后台服务器,例如可以是独立的物理服务器或者是多个服务器组成的服务器集群或分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
终端103-107和服务器101之间通过网络109连接,网络109包括一个或多个,并且可以包括各种连接类型,例如有线、无线通信链路、云或者光纤电缆等等,上述的网络具体实例可包括终端103-107的通信供应商提供的互联网。
在异构网络中,同一个用户可能通过不同网络和不同终端103-107访问服务器101提供的服务,这种情况下,终端103-107产生的数据到达服务器101所需的时间也会不同。例如,同一个用户可能同时通过连接蜂窝网的智能手机103和连接有线宽带的膝上型计算机107登录同一个账号来访问服务器101提供的服务,例如,访问网络社区。用户在这个过程中会产生相应的数据并发送给服务器101,例如,用户完善个人信息后会向服务器101返回个人信息数据,用户浏览社区的过程中会产生用户行为数据返回给服务器101,或者,终端103-107根据该行为数据生成相应的用户画像数据(例如,兴趣、常浏览的版块、关注的用户等)返回给服务器101。同一种数据的不同版本会从不从网络的终端103-107发送给服务器101,例如,智能手机通过蜂窝网个人计算机通过有线宽带分别发送用户兴趣数据的新旧版本给服务器101,然而,由于是通过不同网络发送的,并且可能遇到网络抖动,服务器101可能会先接收到新版本的数据后接收到旧版本的数据。存储服务器以后读出该数据提供给终端103-107时如果按照后进先出的原则读取,就可能会读出旧版本的数据。
对于键值对(Key-Value)数据,通常解决上述问题的方法是在写入数据的key(键)的时候,对key的版本信息的进行查询,如果写入版本比存储的版本新,则更新数据再写入(例如,删除存储的旧版本的数据,然后写入新版本的数据),如果写入版本比存储的版本旧,则不写入该版本的数据。然而,由于每次写入都要进行查询和比对,这种方式严重影响了写入的性能,并且对于每天需要更新用户画像的业务来说,存储在存储系统的数据版本数会越来越多,数据量也多倍放大,每一次查询都需要比对数据的key(键)的版本信息,读取的性能也会越来越差。
针对以上问题,本申请的实施例提供了一种键值对数据的处理方法,用于电子设备。图2A、2B和2C示出根据本申请的实施例的服务器接收和存储键值对数据的示意图。以下结合图2A、2B和2C和图1对该方法进行说明。
如图2A、2B和2C所示,存储服务器101中运行有存储服务,该存储服务包括I/O线程和后台存储服务。存储服务器101通过I/O线程接收不同客户端103-107通过不同网络发送来的同一个用户的用户数据,然后写入后台存储服务。例如,用户A在不同客户端103-107上访问服务端的服务(例如,网络社区),在该访问过程中,客户端103-107会根据用户的行为生成或更新用户信息(例如,用户画像信息),每个用户信息可以以键值对数据的形式来存储和传输,当客户端103-107生成新的用户信息后,将该用户信息的键值对数据传输给服务端的存储服务器101进行存储,而客户端103-107根据用户行为需要对该用户信息进行更新时就将新版本的键值对数据发送给存储服务器101。
具体地,参考图2A,不同客户端103和107(例如,分别为智能手机和笔记本电脑)根据用户的注册、浏览商品和填写个人爱好等行为,生成相应用户信息的键值对数据108-114并发送给存储服务器101存储在后台存储服务中,在该后台存储服务中,内存管理采用LSM(Log-Structured Merge Tree)结构通过追加写的方式,将键值对数据108-114落盘,这些键值对数据108-114在存储器中根据键的ASCII码顺序排序。用户A在其他客户端105(例如,平板电脑)上访问服务端的服务,同样地,该客户端105将生成的键值对数据102-106发送给存储服务器101,存储服务器101通过I/O线程接收这些数据。其中,键值对数据102的键记录了相应用户信息的类型(如图中所示,近期想买)和版本信息(如图中所示,v1),值记录了该用户信息的内容(如图中所示,iPad)。键值对数据102与键值对数据108和110对应相同类型的用户信息,但是版本不同。同样的,键值对数据104与键值对数据112对应相同的用户信息(爱好),但是版本(v2)不同。而键值对数据106记录了新获取的用户信息(性别),并且由于这类用户信息本身一般不会变化,所以没有版本信息。
然后,参考1B,在存储服务器101的I/O线程接收到键值对数据102-106之后,I/O线程判断每个键值对的键中是否含有版本信息,如果没有,则给该键添加第一标签(例如,Put),并且该键值对在写入时以Put方式写入,如果有,则将该版本信息转移到该键对应的值中,并且给该键添加第二标签(例如,Merge),并且该键值对在写入时以Merge方式写入。
需要说明的是,第一标签(Put)表示标记键值对数据没有版本信息,当存储服务器101根据请求读出具有某个键的键值对数据时,会对具有该键的键值对数据进行遍历访问,如果访问到具有第一标签(Put)的键值对数据,则表示该键值对数据没有版本信息,即只有一个版本,无需遍历或查找即可直接读出该键值对数据,因此能够减少不必要的访问,提高读出性能。第二标签(Merge)表示标记键值对数据有版本信息,当存储服务器101根据请求读出具有某个键的键值对数据时,对具有该键的键值对数据进行遍历访问,如果访问到具有第二标签(Merge)的键值对数据,则表示该键值对数据有版本信息,即可能有多个版本,就需要往后遍历,直到遍历完所有具有该键的键值对数据,然后读出具有最新版本信息的键值对数据,因此能够保证读取到最新的数据。
之后,参考1C,后台存储将键值对数据102-106写入到存储器中。在存储服务器101接收到数据读出请求的情况下,会根据预定顺序(例如,如图中箭头所示方向的顺序)读出存储器中的键值对数据。
优选地,每个键值对数据写入到存储器中时,如果存储器中已有一个或多个具有相同键的键值对数据,则写入到该一个或多个具有相同键的键值对数据的根据上述预定顺序的前面。例如,键值对数据102写入到键值对数据108的前面,键值对数据104写入到键值对数据112的前面。而具有不同键的键值对数据之间还是按照ASCII码顺序排列。
根据本申请的一些实施例,具有不同键的键值对数据的排列不限于按照ASCII码顺序排列,也可以是本领域技术人员能够理解的任意排列顺序。
该键值对数据的处理方法中对版本的判断和处理通常只需要极短的时间(1us左右),对延时的影响几乎可以忽略,内存管理采用LSM结构落盘,这样不同的客户端在数据写入的时候不需要做版本比较,不影响LSM追加写入的性能。
根据本申请的一些实施例,方法还包括对存储的具有相同所述键的多个键值对数据进行合并操作,该合并操作删除部分键值对数据,保留版本信息最新的键值对数据。图3示出根据本申请的实施例的合并操作的示意图。
参考图3,并结合图2,上述实施例的一个示例是,在存储服务器101中存储有具有相同键Key1的键值对数据202-218,这些键值对数据在存储器中彼此相邻。存储服务器101的后台存储服务会根据与前述预定顺序相反的顺序,每当满足预定条件时对键值对数据202-218中的第一预定数量(例如,图中所示为4个)的键值对数据进行合并操作。
图3中键值对数据202-218在存储器中组成一个队列。在上述预定顺序为键值对数据202→键值对数据218的情况下,每当满足预定条件时后台存储服务就从该队列的尾部开始,即,第1步合并操作对键值对数据212-218进行比较,删除具有较老版本信息的键值对数据,留下具有最新版本信息的键值对数据212,并将该键值对数据212的第二标签(Merge)改为第一标签(Put)。多次重复类似过程后留下键值对数据202。
存储服务器101接收到来自客户端的读取键为Key1的键值对数据对应的用户信息的请求的情况下,存储服务器101根据上述预定顺序逐个遍历键为Key1的键值对数据,直到遍历所有键为Key1的键值对数据或访问到具有第一标签的键的键值对数据,找出具有最新版本信息的键值对数据读出。例如,在进行过3步上述合并操作留下键值对数据202的情况下,访问到键值对数据202,发现键值对数据202的键具有第一标签,就不再进行遍历,直接读出键值对数据202。
或者例如,在进行了1步上述合并操作的情况下,遍历到键值对数据212就停止遍历,然后读出遍历过的键值对数据中具有最新版本信息的键值对数据202。而当接收到读出没有版本信息的用户信息请求时,由于存储器中只有一个相应的键值对数据,访问该键值对数据时发现它的键具有第一标签,不会再往后遍历,直接读出该键值对数据。
在图3所示的示例中,每一步合并操作针对的是第一预定数量,即四个键值对数据,但是本领域技术人员能够理解,第一预定数量可以是小于数据库中存储的键值对数据的数量的任意值。
根据本申请的一些实施例,合并操作保留的具有最新版本信息的键值对数据不仅可以是具有最新版本信息的一个键值对数据,也可以是第二预定数量的多个最新版本信息的键值对数据。
例如,结合图2,在存储服务器101中存储有具有相同键Key1的键值对数据202-218,这些键值对数据在存储器中彼此相邻。存储服务器101的后台存储服务会根据与前述预定顺序相反的顺序,每当满足预定条件时对键值对数据202-218中的第一预定数量(例如,4个)的键值对数据进行合并操作。
其中键值对数据202-218在存储器中组成一个队列。在上述预定顺序为键值对数据202→键值对数据218的情况下,每当满足预定条件时后台存储服务就从该队列的尾部开始,即,第1步合并操作对键值对数据212-218进行比较,删除具有较老版本信息的键值对数据,留下具有第二预定数量(例如,2个)的最新版本信息的键值对数据212和214,并将这二者中的最后一个,即,键值对数据214的第二标签(Merge)改为第一标签(Put)。
在多次重复类似过程后留下键值对数据202和206。存储服务器101接收到来自客户端的读取键为Key1的键值对数据对应的用户信息的请求的情况下,存储服务器101根据上述预定顺序逐个遍历键为Key1的键值对数据,直到遍历所有键为Key1的键值对数据或访问到具有第一标签的键的键值对数据,找出第二预定数量具有最新版本信息的键值对数据读出。
例如,在进行过4步上述合并操作留下键值对数据202和206的情况下,就顺序访问键值对数据202和206,遇到键值对数据206的键具有第一标签,就停止遍历,读出键值对数据202。或者例如,在进行2步上述合并操作的情况下,遍历到键值对数据214就停止遍历,然后读出键值对数据202。
在上述的示例中,合并操作保留具有最新版本信息的键值对数据202和206,即第二预定数量为两个,本领域技术人员能够理解,第二预定数量可以是小于第一预定数量的任意值。
上述合并操作可以利用服务器的多核处理器周期并发地在后台执行,不影响读写性能,同时可以把存储服务器存储的键值对数据的版本控制在一个范围内,当读取键值对数据时,访问到具有第一标签(Put)的数据,则不再遍历,这样保证每次能够读取到最新版本的数据,并且读取扫描的版本个数可控,进而控制了延时,也避免因为数据版本增多而使得存储器中存储的数据量越来越大,进而面临需要扩容的问题。
根据本申请的一些实施例,上述合并操作满足的预定条件可以是经过预定时间或存入具有相同键的键值对数据达到预定阈值数量的情况。
例如,结合图3,每隔预定时间就进行一轮合并操作(如图中第1步-第3步为一轮合并操作),直到留下版本信息最新的键值对数据,这里的预定时间可以根据数据读写的实际情况确定,例如一小时或者十二小时等。
预定条件也可以是相同键的键值对数据达到阈值数量就进行一步合并操作(如图中第1步-第3步中的任意一步为一步合并操作)。本领域技术人员可以理解,阈值数量可以根据数据读写的实际情况确定,例如10个或20个等。
图4示出根据本申请的实施例的键值对数据的处理方法的流程图。下面结合图2A-2C、图3和图4对该键值对数据的处理方法进行示例性说明。
如图4所示,键值对数据的处理方法用于电子设备,包括:
步骤302,接收来自用户设备的键值对数据;例如,用户A在客户端(例如,平板电脑)上访问服务端的服务,该客户端将生成的键值对数据102-106发送给存储服务器101,存储服务器101通过I/O线程接收这些数据。
步骤304,该键值对数据的键中含有版本信息的情况下,将该版本信息转移到该键值对数据的值中;例如,在存储服务器101的I/O线程接收到键值对数据102-106之后,I/O线程判断每个键值对的键中是否含有版本信息,如果没有,则给该键添加第一标签(例如,Put),如果有,则将该版本信息转移到该键对应的值中,并且给该键添加第二标签(例如,Merge)。
该键值对数据的处理方法中对版本的判断和处理通常只需要极短的时间(1us左右),对延时的影响几乎可以忽略,内存管理采用LSM结构落盘,这样不同的客户端在数据写入的时候不需要做版本比较,不影响LSM追加写入的性能。
步骤306,存储该版本信息经过转移的键值对数据,其中,已经存储的多个键值对数据之间按照键的字符串顺序排列;后台存储将键值对数据102-106写入到存储器中。在存储服务器101接收到数据读出请求地情况下,会根据预定顺序读出存储器中地键值对数据。优选地,每个键值对数据写入到存储器中时,如果存储器中已有一个或多个具有相同键的键值对数据,则写入到该一个或多个具有相同键的键值对数据的根据上述预定顺序的前面。例如,键值对数据102写入到键值对数据108的前面,键值对数据104写入到键值对数据112的前面。而具有不同键的键值对数据之间还是按照ASCII码顺序排列。
步骤308,对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据;例如,在存储服务器101中存储有具有相同键Key1的键值对数据202-218,这些键值对数据在存储器中彼此相邻。存储服务器101的后台存储服务会根据与前述预定顺序相反的顺序,每当满足预定条件时对键值对数据202-218中的第一预定数量(例如,图中所示为4个)的键值对数据进行合并操作。图3中键值对数据202-218在存储器中组成一个队列。在上述预定顺序为键值对数据202→键值对数据218的情况下,每当满足预定条件时后台存储服务就从该队列的尾部开始,即,第1步合并操作对键值对数据212-218进行比较,删除具有较老版本信息的键值对数据,留下具有最新版本信息的键值对数据212,并将该键值对数据212的第二标签(Merge)改为第一标签(Put)。多次重复类似过程后留下键值对数据202。
上述合并操作可以利用服务器的多核处理器周期并发地在后台执行,不影响读写性能,同时可以把存储服务器存储的键值对数据的版本控制在一个范围内,当读取键值对数据时,访问到具有第一标签(Put)的数据,则不再遍历,这样保证每次能够读取到最新版本的数据,并且读取扫描的版本个数可控,进而控制了延时,也避免因为数据版本增多而使得存储器中存储的数据量越来越大,进而面临需要扩容的问题。
图5示出根据本发明的实施例的键值对数据的处理系统的框图,如图5所示,系统400包括
接收模块402,该接收模块402接收来自用户设备的键值对数据;
存储模块404,该键值对数据的键中含有版本信息的情况下,该存储模块404将版本信息转移到该键值对数据的值中;该存储模块404按照键的字符串顺序存储版本信息经过转移的键值对数据;
合并模块406,该合并模块406对具有相同键的多个键值对数据进行合并操作,该合并操作保留版本信息最新的键值对数据。
第一实施例是与本实施例相对应的方法实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
图6示出根据本申请的实施例的键值对数据的处理设备的示意图。
如图6所示,设备500包括
存储器502,用于存储计算机可执行指令,以及
处理器504,用于执行该指令以实施上述第一实施例的任意一种可能的方法。
第一实施例是与本实施例相对应的方法实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
具体的,如图6所示,设备500可以包括一个或多个(图中仅示出一个)存储器502和处理器504(处理器504可以包括但不限于中央处理器CPU、图像处理器GPU、数字信号处理器DSP、微处理器MCU或可编程逻辑器件FPGA等的处理装置)。本申请实施例中不限定上述存储器502和处理器504之间的具体连接介质。本申请实施例在图6中以存储器502和处理器504之间通过总线506连接,总线506在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线506可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。本领域技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备500还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。
处理器504通过运行存储在存储器502内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的键值对数据的处理方法。
存储器502可用于存储处理器504执行的如本申请的一些实施例中的键值对数据的处理方法对应的程序指令/模块。存储器502可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器502可进一步包括相对于处理器504远程设置的存储器,这些远程存储器可以通过网络连接至该设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
根据本申请的一些实施例,公开了一种计算机存储介质,在该计算机存储介质上存储有指令,当该指令在计算机上运行时,使得该计算机执行上述第一实施例的任意一种可能的方法。
第一实施例是与本实施例相对应的方法实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合形式来实现。所公开的实施例还可以以承载或储存在一个或多个瞬态或非瞬态的机器可读(例如,计算机可读)存储介质上的指令或程序形式实现,其可以由一个或多个处理器等读取和执行。当指令或程序被机器运行时,机器可以执行前述的各种方法。例如,指令可以通过网络或其他计算机可读介质分发。因此,机器可读介质可以包括但不限于,用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,例如,软盘,光盘,光盘只读存储器(CD-ROMs),磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电子式可清除程序化只读存储器(EEPROM),磁卡或光卡,或者用于通过电、光、声或其他形式信号(例如,载波、红外信号、数字信号等)传输网络信息的闪存或有形的机器可读存储器。因此,机器可读介质包括任何形式的适合于存储或传输电子指令或机器(例如,计算机)可读信息的机器可读介质。
上面结合附图对本申请的实施例做了详细说明,但本申请技术方案的使用不仅仅局限于本专利实施例中提及的各种应用,各种结构和变型都可以参考本申请技术方案轻易地实施,以达到本文中提及的各种有益效果。在本领域普通技术人员所具备的知识范围内,在不脱离本申请宗旨的前提下做出的各种变化,均应归属于本申请专利涵盖范围。
Claims (7)
1.一种键值对数据的处理方法,用于电子设备,其特征在于,包括:
接收来自用户设备的键值对数据;
所述键值对数据的键中含有版本信息的情况下,将所述版本信息从所述键转移到所述键值对数据的值中;
按照所述键的字符串顺序存储所述版本信息经过转移的所述键值对数据;
在具有相同所述键的多个所述键值对数据的预定顺序的尾部进行合并操作,每次所述合并操作保留所述版本信息最新的所述键值对数据,并为保留的所述键值对数据添加第一标签;
对具有目标键的所述键值对数据的访问操作:按照所述预定顺序逐个访问具有所述目标键的所述键值对数据,直到遍历所有具有所述目标键的所述键值对数据或访问到具有所述第一标签的所述键值对数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述键值对数据的键中没有版本信息的情况下,为所述键值对数据的所述键添加所述第一标签;
接收来自用户设备的读出具有第一键的所述键值对数据的请求;
响应于所述请求,对具有所述第一键的所述键值对数据执行所述访问操作;
输出访问到的所述版本信息最新的所述键值对数据,或输出访问到的没有所述版本信息的所述键值对数据。
3.根据权利要求1所述的方法,其特征在于,所述在具有相同所述键的多个所述键值对数据的预定顺序的尾部进行合并操作,包括:对多个所述键值对数据的所述预定顺序的尾部的不超过第一预定数量的所述键值对数据进行所述合并操作,保留第二预定数量的所述键值对数据;
如存在未被合并的键值对数据的情况下,重复对所述合并操作后的键值对数据与所述未被合并的键值对数据的所述预定顺序的尾部的不超过所述第一预定数量的所述键值对数据进行所述合并操作,直至只有第二预定数量的键值对数据被保留。
4.根据权利要求3所述的方法,其特征在于,
所述合并操作是在经过预定时间或存入具有相同所述键的所述键值对数据达到预定阈值数量的情况下被实施。
5.一种键值对数据的处理系统,其特征在于,包括
接收模块,所述接收模块接收来自用户设备的键值对数据;
存储模块,所述键值对数据的键中含有版本信息的情况下,所述存储模块将所述版本信息转移到所述键值对数据的值中;所述存储模块按照所述键的字符串顺序存储所述版本信息经过转移的所述键值对数据;
合并模块,所述合并模块在具有相同所述键的多个所述键值对数据的预定顺序的尾部进行合并操作,每次所述合并操作保留所述版本信息最新的所述键值对数据,并为保留的所述键值对数据添加第一标签;
访问模块,所述对具有目标键的所述键值对数据的访问操作:按照所述预定顺序逐个访问具有所述目标键的所述键值对数据,直到遍历所有具有所述目标键的所述键值对数据或访问到具有所述第一标签的所述键值对数据。
6.一种键值对数据的处理设备,其特征在于,所述设备包括存储有计算机可执行指令的存储器和处理器,当所述指令被所述处理器执行时,使得所述设备实施根据权利要求1-4中任一项所述的键值对数据的处理方法。
7.一种计算机存储介质,其特征在于,在所述计算机存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行根据权利要求1-4中任一项所述的键值对数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111180762.0A CN113792031B (zh) | 2021-10-11 | 2021-10-11 | 键值对数据的处理方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111180762.0A CN113792031B (zh) | 2021-10-11 | 2021-10-11 | 键值对数据的处理方法、系统、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113792031A CN113792031A (zh) | 2021-12-14 |
CN113792031B true CN113792031B (zh) | 2024-02-13 |
Family
ID=79184964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111180762.0A Active CN113792031B (zh) | 2021-10-11 | 2021-10-11 | 键值对数据的处理方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113792031B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
WO2016050112A1 (zh) * | 2014-09-30 | 2016-04-07 | 华为技术有限公司 | 一种数据存储方法、存储装置及存储系统 |
CN105956166A (zh) * | 2016-05-19 | 2016-09-21 | 北京京东尚科信息技术有限公司 | 数据库读写方法和读写装置 |
CN105989129A (zh) * | 2015-02-15 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 实时数据统计方法和装置 |
CN109684307A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN111339158A (zh) * | 2020-02-21 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种进行信息处理的方法、装置、电子设备及存储介质 |
CN112084254A (zh) * | 2019-06-14 | 2020-12-15 | 北京京东尚科信息技术有限公司 | 一种数据同步方法和系统 |
CN112287329A (zh) * | 2020-10-29 | 2021-01-29 | 平安科技(深圳)有限公司 | 服务实例校验方法、装置、电子设备及存储介质 |
CN112559498A (zh) * | 2020-12-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 时序时空数据库系统的分布式架构的构建方法、装置 |
CN112579695A (zh) * | 2019-09-29 | 2021-03-30 | 北京京东拓先科技有限公司 | 一种数据同步方法和装置 |
-
2021
- 2021-10-11 CN CN202111180762.0A patent/CN113792031B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
WO2016050112A1 (zh) * | 2014-09-30 | 2016-04-07 | 华为技术有限公司 | 一种数据存储方法、存储装置及存储系统 |
CN105989129A (zh) * | 2015-02-15 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 实时数据统计方法和装置 |
CN105956166A (zh) * | 2016-05-19 | 2016-09-21 | 北京京东尚科信息技术有限公司 | 数据库读写方法和读写装置 |
CN109684307A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN112084254A (zh) * | 2019-06-14 | 2020-12-15 | 北京京东尚科信息技术有限公司 | 一种数据同步方法和系统 |
CN112579695A (zh) * | 2019-09-29 | 2021-03-30 | 北京京东拓先科技有限公司 | 一种数据同步方法和装置 |
CN111339158A (zh) * | 2020-02-21 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种进行信息处理的方法、装置、电子设备及存储介质 |
CN112287329A (zh) * | 2020-10-29 | 2021-01-29 | 平安科技(深圳)有限公司 | 服务实例校验方法、装置、电子设备及存储介质 |
CN112559498A (zh) * | 2020-12-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 时序时空数据库系统的分布式架构的构建方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113792031A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106886375B (zh) | 存储数据的方法和装置 | |
US9501490B2 (en) | Automatic synchronization of most recently used document lists | |
US11451629B2 (en) | Distributed metadata management method for distributed file system | |
US9075722B2 (en) | Clustered and highly-available wide-area write-through file system cache | |
CN109657174A (zh) | 用于更新数据的方法和装置 | |
CN111400334B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN112559529B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN113961510A (zh) | 一种文件处理方法、装置、设备及存储介质 | |
CN115599821A (zh) | 缓存控制方法、装置、设备及介质 | |
CN115757492A (zh) | 一种热点数据的处理方法、装置、计算机设备及存储介质 | |
CN114691611A (zh) | 目录刷新的处理方法及装置、电子设备和存储介质 | |
CN113792031B (zh) | 键值对数据的处理方法、系统、设备和介质 | |
CN113361236A (zh) | 一种编辑文档的方法和装置 | |
CN111291083A (zh) | 网页源码数据处理方法、装置及计算机设备 | |
CN110245307A (zh) | 页面缓存管理方法及系统、终端设备及存储介质 | |
CN113626483B (zh) | 一种填写表单的前端缓存方法、系统、设备及存储介质 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN109857719B (zh) | 分布式文件处理方法、装置、计算机设备以及存储介质 | |
CN113076067A (zh) | 淘汰缓存数据的方法和装置 | |
CN113051244A (zh) | 数据访问方法和装置、数据获取方法和装置 | |
US11500590B2 (en) | Method, device and computer program product for data writing | |
US20080307012A1 (en) | Tsb-tree page split strategy | |
CN116383537B (zh) | 一种页面数据的预加载方法、装置、设备和存储介质 | |
CN111813711B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |