CN113553333B - 一种数据库的数据操作方法、装置、设备及介质 - Google Patents
一种数据库的数据操作方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN113553333B CN113553333B CN202110816931.9A CN202110816931A CN113553333B CN 113553333 B CN113553333 B CN 113553333B CN 202110816931 A CN202110816931 A CN 202110816931A CN 113553333 B CN113553333 B CN 113553333B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- updating
- field number
- sdk 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000004044 response Effects 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000006872 improvement Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 11
- 238000013500 data storage Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (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
本发明提供一种数据库的数据操作方法、装置、设备及介质,所述方法包括:SDK Client接收数据更新指令;SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收多媒体服务器返回的Protobuf描述文件,其中多媒体服务器预先存储有Protobuf描述文件;SDK Client从Protobuf描述文件中确定数据更新指令所对应的字段编号;SDK Client将数据更新指令、字段编号发送给数据库进行更新。本发明通过在NOSQL数据库中实现了复杂Schema数据的字段级数据操作,业务可以直接实现字段级数据操作,不仅极大简化了业务侧的数据操作,同时也给业务侧带来了非常明显的效率提升。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种数据库的数据操作方法、装置、设备及介质。
背景技术
用于数据存储的数据库主要包括结构化和非结构化类型,结构化类型数据库如Mysql数据库,非结构化类型数据库典型如Key-Value数据库。
结构化数据库在用于推荐场景的特征数据存储时,提供了结构化的数据存储能力,推荐业务可以基于结构化的数据存储能力实现特征数据的实时读写。但是,结构化数据库虽然可以提供结构化的数据存储能力,极大便利业务侧操作,但却可能存在着诸如结构扩展困难的问题,或者存在扩展困难的问题,如Mysql数据库数据规模增大时,扩展困难。
非结构化类型数据库Key-Value在用于推荐场景的特征数据存储时,提供基本的KV数据读写能力,用于推荐业务对特征数据的实时读写,由于Key-Value数据库缺乏数据的Schema(数据库中数据的组织和结构)能力,在特征数据复杂的背景下,对于推荐业务,根据相应的业务侧的读写请求,需要服务器处理特征数据结构的编码和解码,对于特征数据的更新需要从数据库中获取原始数据,解码后根据业务侧的读取请求更新原始数据,更新完后编码写回数据库,从而业务侧操作过程复杂,需要额外资源,且存在两次与网络侧的交互。
发明内容
本发明实施例提供一种数据库的数据操作方法、装置、设备及介质,解决现有的Key-Value数据库中对有结构的Protobuf Schema的数据更新复杂而漫长,且当存在多个业务操作端同时更新相同key时出现并发更新的冲突的问题。
第一方面,本发明实施例提供一种数据库的数据操作方法,该方法包括:
SDK Client接收数据更新指令;
SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号,包括:
所述SDK Client根据数据更新指令获取数据操作信息;
所述SDK Client根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号。
本发明实施例提供的数据库的数据操作方法,通过SDK Client接收数据更新指令后从多媒体服务器中拉取的Protobuf描述文件中获取字段编号,发送至数据库进行更新,实现了支持Protobuf Schema的数据CRUD(增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete))能力的非关系型数据库。
在一种可能的实施方式中,所述SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value;
所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新。
本发明实施例提供的数据库的数据操作方法,通过SDK Client确定的key值、数据值value可以在数据库精确锁定需要更新的数据。
在一种可能的实施方式中,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
本发明实施例提供的数据库的数据操作方法,数据库根据接收到的所述key值定位到待更新的数据值value所对应的列表,通过遍历数据库中的字段编号与SDK Client发送的字段编号进行比对,找到需要更新的字段。提高了更新的效率,避免从数据库中取数据,解码,在数据库外完成更新,再编码存储至数据库,减少了数据更新的流程。在一种可能的实施方式中,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
所述SDK Client将所述key值和字段编号发送给数据库进行更新。
本发明实施例,本发明实施例在进行数据更新时,数据更新指令可以仅包括字段编号,也可以包括字段编号及要更新的数据值value。
在一种可能的实施方式中,所述SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
本发明实施例中数据更新指令仅包括字段编号时,数据更新指令中的数据操作信息包括增加一个字段(字段***),删除某一字段或查看某一字段的内容。
在一种可能的实施方式中,SDK Client接收数据更新指令,包括:
SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者
SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令。
本发明实施例多媒体服务器提供HTTP接口用于UI操作,一方面可以提供与业务相关的UI操作,另一方面,可以提供用于对数据库更新相关的UI操作。多媒体服务器根据UI操作产生相应的数据更新指令。
在一种可能的实施方式中,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新之后,还包括:
SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
SDK Client将数据操作响应消息返回给所述多媒体服务器。
本发明实施例数据操作响应消息根据数据更新指令中数据操作信息的不同,所携带内容不同,可以针对任一类型的数据操作信息返回对应的数据操作响应消息,也可以仅针对部分类型的数据操作信息返回对应的数据操作响应消息。
在一种可能的实施方式中,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
本发明实施例提供的加锁,解决并发更新冲突的问题,保证一个时刻仅对用户的一个字段进行修改。
第二方面,本发明实施例提供一种数据库的数据操作装置,包括:
接收数据更新指令单元,用于通过SDK Client接收数据更新指令;
接收Protobuf描述文件单元,用于通过SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
确定字段编号单元,用于通过SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
发送单元,用于通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述确定字段编号单元,具体用于:
通过所述SDK Client根据数据更新指令获取数据操作信息;
通过所述SDK Client根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号。
在一种可能的实施方式中,所述发送单元具体用于:
通过所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value;
通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述发送单元具体用于:
通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
在一种可能的实施方式中,确定字段编号单元具体用于:
通过所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
通过所述SDK Client将所述key值和字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述字段编号单元具体用于:通过所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
在一种可能的实施方式中,所述接收数据更新指令单元具体用于:
通过SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者
通过SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令。
在一种可能的实施方式中,所述发送单元还用于:
通过SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
通过SDK Client将数据操作响应消息返回给所述多媒体服务器。
在一种可能的实施方式中,所述发送单元具体用于:
通过SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
第五方面,本发明实施例提供一种数据库的数据操作设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面提供的方法。
第六方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序指令被处理器执行时实现上述第一方面提供的方法。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请一个实施例的一种数据库的数据操作方法的应用场景示意图;
图2为根据本申请一个实施例的一种数据库的数据操作方法的流程图;
图3为根据本申请一个实施例的一种数据库的数据操作方法中Protobuf Schema的定义示意图;
图4为根据本申请一个实施例的一种数据库的数据操作方法的整体架构图;
图5为根据本申请一个实施例的一种数据库的数据操作方法中按Protobuf格式编码示意图;
图6为根据本申请一个实施例的一种数据库的数据操作方法中数据库中更新示意图;
图7为根据本申请一个实施例的一种数据库的数据操作装置的示意图;
图8为根据本申请一个实施例的一种数据库的数据操作设备示意图;
图9为根据本申请一个实施例的用于数据库的数据操作的程序产品。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种数据库的数据操作方法及装置。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
NOSQL:英文Not Only SQL,泛指非关系型数据库。
PROTOBUF:一种语言无关、平台无关、可扩展的序列化结构数据的方法,可用于(数据)通信协议、数据存储等。
PDB:一款支持Protobuf Schema的分布式NOSQL数据库。
Schema:数据库中数据的组织和结构。
key-value数据库:分布式存储***,根据关键字取值,key是关键字,value是值。
SDK Client:软件开发工具包,一般都是为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,用于数据存储的数据库主要包括结构化类型数据库Key-Valu和非结构化类型数据库Key-Value,其中:
1、Key-Value数据库在用于推荐场景的特征数据存储时,提供基本的KV数据读写能力,用于推荐业务对特征数据的实时读写,存储的是有结构的Protobuf Schema的数据。
由于Key-Value数据库缺乏数据的组织结构能力,在特征数据复杂的背景下,在进行数据更新时,需要业务侧处理特征数据结构的编码和解码,对于特征数据的更新更需要从数据库中获取原始数据,解码后在业务侧更新,更新完后编码写回数据库。业务侧操作过程复杂,需要额外资源,且存在两次网络交互,导致数据更新流程复杂,效率低下。
2、结构化数据库(如Mysql)在用于推荐场景的特征数据存储时,本身提供了结构化的数据存储能力,推荐业务可以基于结构化的数据存储能力实现特征数据的实时读写,便利业务侧操作,但却可能存在着诸如结构扩展困难的问题,如Mysql数据库数据规模增大时,扩展困难。
有鉴于此,本发明实施例提供了一种数据库的数据操作方法,该方法包括,SDKClient接收数据更新指令;SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。整个过程不仅解决了Key-Value数据库中对Protobuf Schema数据更新复杂而漫长的问题,同时也极大提升了数据的更新效率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,其为本发明实施例提供的一种数据库的数据操作方法的应用场景示意图。该场景例如可以包括:
用户侧装置11,用户通过用户侧装置登录业务服务平台进行业务操作,上述业务服务平台可以为视频推荐平台等。
服务侧装置12,与上述用户侧设备11通过网络连接,提供业务服务平台,在用户登录到业务平台后,产生相应的用户数据,并负责对用户数据进行更新;
用户登录业务服务平台可以产生用户数据,服务侧装置对用户数据进行更新包括两种情况,一种情况为通过UI交互,根据用户对Protobuf描述文件的操作,确定对用户数据进行更新;另一种情况为根据用户对业务服务平台进行业务操作,根据业务操作情况统计对应的字段数据,确定满足数据更新条件时触发对用户数据更新,例如对于视频推荐场景,确定用户对视频的点播次数增加设定数量个时,进行点播次数更新。
非关系型数据库13,与服务侧装置12连接,用于通过Key-value的形式存储上述用户数据。
本发明实施例中上述服务侧装置主要包括媒体服务器MetaServer和SDK Client装置,媒体服务器MetaServer和SDK Client装置可以集成在同一服务器上,也可以分别为两个服务器。上述媒体服务器MetaServer提供HTTP接口用于UI操作,同时,支持TCP/IP协议接口用于与SDK Client进行通信和交互;SDK Client装置用于分别与MetaServer和非关系型数据库交互,本发明实施例中SDK Client装置主要用于实现:
SDK Client接收数据更新指令;
SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
本发明公开了一种在NOSQL数据库中支持Protobuf Schema数据字段级CRUD的方案,该方案实现了在更新时,业务侧只需要发送简单的一次字段更新请求,NOSQL数据服务端收到请求后,完成对Protobuf Schema数据的二进制寻址,寻找到待更新字段时,直接替换待更新字段对应value段即可,整个过程不仅解决了Key-Value数据库中对ProtobufSchema数据更新复杂而漫长的问题,同时也极大提升了数据的更新效率。
需要说明的是,上述应用场景仅是对本发明实施例中一种可能的实施方式的说明,并不对本发明实施例产生限定,相反,本申请的实施方式可以应用于适用的任何场景,且上述应用场景可以根据具体的实施情况进行实体的增减、删改。
示例性方法
如图2所示,为本发明实施例提供的一种数据库的数据操作方法的流程图,用于对Key-Value数据库中对Protobuf Schema数据的更新,包括如下步骤:
步骤S201,SDK Client接收数据更新指令;
SDK Client可以是从多媒体服务器MetaServer接收数据更新指令。
多媒体服务器提供HTTP接口用于UI操作,一方面可以提供与业务相关的UI操作,另一方面,可以提供用于对数据库更新相关的UI操作。多媒体服务器根据UI操作产生相应的数据更新指令并发送到SDK Client。
上述多媒体服务器预先存储有Protobuf描述文件,上述Protobuf描述文件具体可以为包括多个文本字段的table格式,且不同用户对应不同的table。
可以先在多媒体服务器中注册table的基本信息和存储位置信息以及对应的Protobuf Schema定义,table的基本信息包括table的标识,不同的table标识与不同的用户对应,存储位置信息为table在多媒体服务器中的存储位置,Protobuf Schema定义为文本形式,包括用户数据的文本字段。
参见图3所示的Protobuf Schema的定义示例,包括文本字段:用户标识user id、用户年龄、播放时间以及点击次数,图中符号//左侧为数据库中的数据形式,图中符号//右侧为多媒体服务器中文本形式的Protobuf Schema定义。
本发明实施例中数据更新指令包括CRUD,具体包括增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)。具体来讲,可以对Protobuf描述文件中各文本字段的字段内容进行查看操作,或者修改文本字段内容或者增加文本字段的内容或者删除文本字段的内容。例如上述Protobuf Schema的定义中,增加一个点赞次数字段,或者将年龄字段删除,或者将播放时间字段对应的a值修改为b值,或者查看id字段对应的用户id,以及增加一个新用户的整体table。
步骤S202,SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
SDK Client收到多媒体服务器发送的数据更新指令后,确定需要对某个用户的table中的文本字段的内容进行更新,则首先向多媒体服务器发送Protobuf描述文件获取请求,获取所述多媒体服务器返回该用户的Protobuf描述文件。
SDK Client获取到Protobuf描述文件后,可以获取到上述文本形式的ProtobufSchema的定义,SDK Client将上述Protobuf描述文件作为源文件(proto文件),基于Protobuf提供的库接口实现proto文件的compiler,该compiler的主要功能在于将文本型的proto文件编译为Schema相关的内存对象模型,从而将Protobuf描述文件中的各文本字段编译为对应的字段编号。
上述数据更新指令,可以为新增加一个table的数据更新指令,则通过SDK Client可以实现table初始化时的编译;上述数据更新指令,也可以为对原有table中的字段内容进行更新,则通过SDK Client可以实现table动态更新时的编译。
步骤S203,SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
上述数据更新指令用于指示更新的table的标识即Protobuf描述文件标识,及更新的Protobuf描述文件中的文本字段,例如数据更新指令用于指示将用户A的点播次数加10,则SDK Client根据数据更新指令,会获取用户A的Protobuf描述文件,并将Protobuf描述文件中的点播次数的文本字段,编译为Schema相关的内存对象模型,得到点播次数对应的字段编号。
上述数据更新指令所指示更新的Protobuf描述文件中的文本字段可以为原table中的字段,也可以为在原table上新增的一个字段。
作为一种可选的实施方式,所述SDK Client根据数据更新指令获取数据操作信息;所述SDK Client根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号。
具体来讲,数据操作信息为数据更新指令中所指示的针对某个用户的Protobuf描述文件中的某个字段进行相关操作信息,数据操作信息可以包括字段内容,也可以不包括字段内容,例如数据操作信息可以为将某个字段的内容进行删除、将某个字段的内容进行加减运算,或者将某个字段的内容替换为某个值。
步骤204,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
数据库存储的用户数据是以key-value的形式存储,其中一个用户标识对应数据库中的一个key,一个用户的table中各字段及字段内容,在数据库中以字段编号及数据值value的形式存储,因此数据库接收SDK Client发送的数据更新指令和字段编号,可以遍历数据库中的字段编号进行二进制寻址,进行数据库中相应字段编号的查询,根据数据更新指令确定数据操作信息,根据数据操作信息对所述字段编号对应的数值进行数据操作。例如上述定义的四个字段:uid、age、age、click,当需要对字段编号为1的uid进行更新时,SDKClient会找到uid字段的编号1,然后将该字段编号1发送给数据库,数据库接收到需要对字段编号为1的字段内容进行更新的请求。
参见图4所示的整体架构图,本发明实施例整体架构包括SDK Client、MetaServer(多媒体服务器)、Distributed NOSQL(数据库)三部分,图中MetaServer中的xx.proto表示多媒体服务器预先存储有Protobuf描述文件;SDK Client中的Proto Compiler用于实现基于Protobuf提供的库接口实现proto文件的compiler;Distributed NOSQL为包括底层存储层和上层处理层的数据库。
具体来讲图中1表示SDK Client向多媒体服务器发送Protobuf描述文件获取请求;图中2表示接收所述多媒体服务器返回的所述Protobuf描述文件;图中3表示SDKClient将所述数据更新指令、字段编号发送给数据库进行更新;图中4表示数据库返回携带更新结果的数据操作响应消息。
本发明实施例通过在NOSQL数据库中实现了复杂Schema数据的字段级数据操作,业务可以直接实现字段级数据操作,不仅极大简化了业务侧的数据操作,同时也给业务侧带来了非常明显的效率提升。
如前所述,多媒体服务器提供HTTP接口用于UI操作,一方面可以提供与业务相关的UI操作,另一方面,可以提供用于对数据库更新相关的UI操作。多媒体服务器根据UI操作产生相应的数据更新指令。
作为一种可选的实施方式,SDK Client接收数据更新指令,可以采用如下任一方式:
1)SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;
此种情况属于用户主动触发的对数据的更新,用户通过多媒体服务器进行UI操作发送用户数据查看指令,多媒体服务器响应于数据查看指令,在显示界面上显示用户的Protobuf描述文件,从而使用户可以查看table中的各文本字段,用户根据显示的各文字字段,确定对字段的操作,例如可以是增加一个字段,或者删除一个字段,或者查看某个字段的内容,或者修改某个字段的字段内容。确定对字段的操作从而产生相应的数据更新指令,并将数据更新指令发送SDK Client,SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令。
上述触发数据更新的用户可以为进行业务操作的用户,也可以为具有管理员身份的用户。
情况二、SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令。
用户登录到业务服务平台,随着用户业务操作,多媒体服务器会根据业务操作确定该用户的table中的值是否发生更新,例如确定用户对推荐的视频进行点击操作时,确定table中的点播次数加1,具体是否触发更新可以设定相应的数据更新条件,例如增加设定数量个或减少设定数量个等。确定满足Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令,并发送到SDK Client。
作为一种可选的实施方式,所述SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value;
所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新。
数据库存储的用户数据是以key-value的形式存储,其中一个用户标识对应数据库中的一个key,一个用户的table中各字段及字段内容,在数据库中以字段编号及数据值value的形式存储。由于value是按Protobuf格式编码的二进制数据。如图5所示,每个字段编号及数据值value被封装为Field的格式进行存储,每个Field包含Tag、Length、value三部分,Tag的编码格式为field_number+wire_type,其中field_number表示字段编号,wire_type表示编码方式(例如32-bit、64-bit等);Length为长度,value为数据值。由于字段编号被封装在Field的Tag部分,在初次将用户的key及其对应的Field存储在数据库中,会预先建立用户的key及其对应的Field地址的对应关系,因此可以根据用户的key及其对应的Field地址的对应关系,遍历该用户的对应的Field中的字段编号,从而可以实现对value的二进制寻址。
例如参见图6,Schema定义中包含uid、age、play、click共4个字段,编译后十六进制表示的数据为10 06 18 07 20 08 28 09,当数据库收到更新请求时,需要更新字段编号为1的数据,遍历十六进制表示的value数据,找到第一个字段的原始数据为6(十六进制表示为06)的字段,将第一个字段的内容更新为100(十六进制表示为64),更新后的十六进制表示的数据为10 64 18 07 20 08 28 09。
本发明实施例在进行数据更新时,数据更新指令可以仅包括字段编号,也可以包括字段编号及要更新的数据值value。
作为一种可选的实施方式,数据更新指令包括字段编号及要更新的数据值value时,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
数据库包括底层存储层和上层处理层,当数据库接收到更新指令时,进入到处理层,在处理层先从底层的存储层获取更新请求中待更新key对应的value,value是按Protobuf格式编码的二进制数据。
在对value进行二进制寻址更新时,对二进制数据同样按照Protobuf方式解码,然后对value进行二进制遍历。对比value中所有Field的field number和指令中待更新的field number,如果存在相同的field number,则匹配Field成功,更新Field中的二进制Value数据,至此,整个二进制寻址更新过程结束。
作为另一种可选的实施方式,数据更新指令仅包括字段编号时,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
所述SDK Client将所述key值和字段编号发送给数据库进行更新。
上述数据更新指令仅包括字段编号时,数据更新指令还可以为***一个新的table,例如对于视频推荐场景,确定有新用户注册到视频推荐场景平台时,建立该新用户的table,table中包括预定义的至少一个文本字段,并发送***table的数据更新指令。所述SDK Client收到数据更新指令后,将用户的标识编译key值,获取table中的各文本字段并编译为对应的字段编号,向数据发送***新table的指令及对应的字段编号,***新table指令中携带用户对应的key值。SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号。具体可以为在数据库中将新key值对应的字段编号封装为Field,确定Field地址并进行存储,存储新key值并建立新key值与Field地址的对应关系。
上述数据更新指令仅包括字段编号时,上述数据更新指令中的数据操作信息包括增加一个字段(字段***),删除某一字段或查看某一字段的内容。
上述数据更新指令仅包括字段编号时,数据更新指令中的数据操作信息为在原有table中***新字段时,所述SDK Client收到数据更新指令后,将用户的标识编译key值,确定***的新字段并编译为对应的字段编号,SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库将接收的字段编号封装为Field,确定Field地址并进行存储,存储所述key值并建立key值与所述封装的Field地址的对应关系。
上述数据更新指令仅包括字段编号时,数据更新指令中的数据操作信息为在原有table中删除一字段时,所述SDK Client收到数据更新指令后,将用户的标识编译key值,确定删除的字段并编译为对应的字段编号,向数据发送删除字段的指令及对应的字段编号,删除字段指令中携带用户对应的key值。SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号,删除字段编号对应的数据值value。
上述数据更新指令仅包括字段编号时,数据更新指令中的数据操作信息为为在原有table中查看某一字段时,所述SDK Client收到数据更新指令后,将用户的标识编译key值,确定查看的字段并编译为对应的字段编号,向数据发送查看字段的指令及对应的字段编号,查看字段指令中携带用户对应的key值。SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时向SDK返回对应的数据值value。
数据更新指令中的数据操作信息为对字段内容更新时,查到所述字段编号时利用所述数据值value进行数据更新后,可以返回更新后的value,也可以不返回更新后的value。
作为一种可选的实施方式,本申请中对于SDK Client获取文本型的proto文件中对应字段的字段编号的方法,一种方式为通过用于将文本文件编译为二进制文件的编译器,将文本型的proto文件编译为对应的二进制文件;另一种方式为预先直接解析文本型的proto文件定义,构造出字段名称和字段编号的映射关系,直接通过Protobuf提供的库编译proto文件,构造对应内存对象,在获取到Protobuf描述文件时,通过上述映射关系获取字段名称对应的字段编号。
作为一种可选的实施方式,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新之后,还包括:
SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
SDK Client将数据操作响应消息返回给所述多媒体服务器。
具体来讲,数据库的处理层经过二进制寻址更新后,得到更新后的二进制value数据,处理层将上述更新后二进制value数据写回存储层,写回存储层成功后,然后向SDKClient发送数据操作响应消息。SDK Client根据数据操作响应消息,指示所述多媒体服务器更新对应的Protobuf描述文件。
上述数据操作响应消息根据数据更新指令中数据操作信息的不同,所携带内容不同,可以针对任一类型的数据操作信息返回对应的数据操作响应消息,也可以仅针对部分类型的数据操作信息返回对应的数据操作响应消息。SDK Client接收数据库返回的携带更新结果的数据操作响应消息后,对数据操作响应消息中的信息从数据库格式编译文本格式数据,将携带文本格式数据的数据操作响应消息返回给多媒体服务器。实施中,可以针对查看字段内容的操作,返回携带字段内容的数据操作响应消息,多媒体服务器收到数据操作响应信息后在UI界面上显示对应的字段内容。针对其他类型的操作,可以反馈操作是否成功的响应消息,具体过程这里不再重述。
此外基于已有的Key-Value数据库存储时,当存在多个业务端进程同时更新相同key时,存在并发更新的冲突问题,为避免更新丢失,业务需要处理并发更新的冲突。作为一种可选的实施方式,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
具体来讲,SDK Client将所述key值、数据值value和字段编号发送给数据库时,首先判断key此时的状态,是否为非加锁;如果此时的key状态为加锁,则等待加锁状态的key恢复为非加锁时再进行处理,等到加锁状态的key恢复为非加锁时,数据库对非加锁的key进行加锁并对完成加锁的key对应的value进行遍历,找到相应的字段编号后,将待更新value值替换原先的value值,最后恢复为非加锁;如果此时的key状态为非加锁,则数据库直接对非加锁的key进行加锁并对完成加锁的key对应的value进行遍历,找到相应的字段编号后,将待更新value值替换原先的value值,最后恢复为非加锁。本发明实施例通过在NOSQL数据库中实现了复杂Schema数据的字段的数据更新能力,业务可以直接实现数据更新,简化了业务对特征数据的操作,同时也给业务侧带来了非常明显的效率提升。参见下表根据测试结果和线上业务性能统计数据对比分析,通过对比请求平均rt、占用的FLINK计算资源得出结果,更新方式1为:GET->DECODE->MERGE->ENCODE->PUT;更新方式2为PDBUPDATE。业务侧计算资源可降低60%,业务侧平均rt可降低70%。
业务更新方式 | 请求平均rt | 占用的FLINK计算资源 | 服务端CPU |
更新方式1 | 0.6ms | 101核104GB | 10%左右 |
更新方式2 | 0.2ms | 41核44GB | 15%左右 |
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,对本申请示例性实施方式的数据库的数据操作装置进行介绍。
如图7所示,基于相同的发明构思,本发明实施例还提供了一种数据库的数据操作装置,包括:
一种数据库的数据操作装置,所述装置包括:
接收数据更新指令单元701,用于通过SDK Client接收数据更新指令;
接收Protobuf描述文件单元702,用于通过SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
确定字段编号单元703,用于通过SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
发送单元704,用于通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述确定字段编号单元703,具体用于:
通过所述SDK Client根据数据更新指令获取数据操作信息;
通过所述SDK Client根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号。
在一种可能的实施方式中,所述发送单元704具体用于:
通过所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value;
通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述发送单元704具体用于:
通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
在一种可能的实施方式中,确定字段编号单元703具体用于:
通过所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
通过所述SDK Client将所述key值和字段编号发送给数据库进行更新。
在一种可能的实施方式中,所述确定字段编号单元703具体用于:通过所述SDKClient将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
在一种可能的实施方式中,所述接收数据更新指令单元701具体用于:
通过SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者
通过SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令。
在一种可能的实施方式中,所述发送单元704还用于:
通过SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
通过SDK Client将数据操作响应消息返回给所述多媒体服务器。
在一种可能的实施方式中,所述发送单元704具体用于:
通过SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
下面参照图8来描述根据本发明的这种实施方式的数据库的数据操作设备80。图8显示的数据库的数据操作设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,数据库的数据操作设备80可以以通用计算设备的形式表现,例如其可以为终端设备。数据库的数据操作设备80的组件可以包括但不限于:上述至少一个处理器81、上述至少一个存储器82、连接不同***组件(包括存储器82和处理器81)的总线83。
总线83可以包括数据总线、地址总线和控制总线。
存储器82可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)821和/或高速缓存存储器822,还可以进一步包括只读存储器(ROM)823。
存储器82还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
数据库的数据操作设备80也可以与一个或多个外部设备84(例如键盘、指向设备等)通信,这种通信可以通过输入/输出(I/O)接口85进行。并且,数据库的数据操作设备80还可以通过网络适配器86与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器86通过总线83与数据库的数据操作设备80的其它模块通信。应当明白,尽管图中未示出,可以结合数据库的数据操作设备80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
所述存储器82存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器81执行,以使所述至少一个处理器81能够执行如下方法的步骤:
通过SDK Client接收数据更新指令;
通过SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
通过SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;
通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
作为一种可选的实施方式,所述处理器通过所述SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号,包括:
所述SDK Client根据数据更新指令获取数据操作信息;
所述SDK Client根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号。
作为一种可选实施方式,所述处理器通过所述SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value;
所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新。
作为一种可选的实施方式,所述处理器通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
作为一种可选的实施方式,所述处理器通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
所述SDK Client将所述key值和字段编号发送给数据库进行更新。
作为一种可选的实施方式,所述处理器通过所述SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
作为一种可选的实施方式,所述处理器通过SDK Client接收数据更新指令,包括:
SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者
SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令。
作为一种可选的实施方式,所述处理器通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新之后,还用于:
SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
SDK Client将数据操作响应消息返回给所述多媒体服务器。
作为一种可选的实施方式,所述处理器通过SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在服务器设备上运行时,程序代码用于使服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的数据库的数据操作装置中各模块的步骤,例如,服务器设备可以执行数据库的数据操作方法,包括:通过SDK Client接收数据更新指令;通过SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;通过SDK Client从所述Protobuf描述文件中确定所述数据更新指令所对应的字段编号;通过SDK Client将所述数据更新指令、字段编号发送给数据库进行更新。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图9所示,描述了根据本发明的实施方式的用于数据库的数据操作的程序产品90,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了***的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明***各模块的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些操作,将多个操作合并为一个操作执行,和/或将一个操作分解为多个操作执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种数据库的数据操作方法,其特征在于,所述方法包括:
SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者,SDKClient接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令;其中,所述数据更新指令包括增加、更新、检索和删除;
SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
SDK Client根据数据更新指令获取数据操作信息,并根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号;
SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value,并将所述key值、数据值value和字段编号发送给数据库进行更新。
2.根据权利要求1所述的方法,其特征在于,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
3.根据权利要求1所述的方法,其特征在于,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新,包括:
所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
所述SDK Client将所述key值和字段编号发送给数据库进行更新。
4.根据权利要求3所述的方法,其特征在于,所述SDK Client将所述key值和字段编号发送给数据库进行更新,包括:
所述SDK Client将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
5.根据权利要求1所述的方法,其特征在于,SDK Client将所述数据更新指令、字段编号发送给数据库进行更新之后,还包括:
SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
SDK Client将数据操作响应消息返回给所述多媒体服务器。
6.根据权利要求1所述的方法,其特征在于,所述SDK Client将所述key值、数据值value和字段编号发送给数据库进行更新,包括:
SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
7.一种数据库的数据操作装置,其特征在于,所述装置包括:
接收数据更新指令单元,用于通过SDK Client接收用户对显示的Protobuf描述文件操作产生的数据更新指令;或者,通过SDK Client接收根据业务操作及数据更新条件,判定业务操作符合Protobuf描述文件中任一字段的更新条件时,产生的数据更新指令;其中,所述数据更新指令包括增加、更新、检索和删除;
接收Protobuf描述文件单元,用于通过SDK Client向多媒体服务器发送Protobuf描述文件获取请求,并接收所述多媒体服务器返回的所述Protobuf描述文件,其中所述多媒体服务器预先存储有Protobuf描述文件;
确定字段编号单元,用于通过SDK Client根据数据更新指令获取数据操作信息,并根据数据操作信息,从所述Protobuf描述文件中确定数据操作信息所对应的字段编号;
发送单元,SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值以及待更新的数据值value,并将所述key值、数据值value和字段编号发送给数据库进行更新。
8.根据权利要求7所述的装置,其特征在于,所述发送单元具体用于:
通过所述SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库遍历所述key值对应的字段编号,查到所述字段编号时利用所述数据值value进行数据更新。
9.根据权利要求7所述的装置,其特征在于,确定发送单元具体用于:
通过所述SDK Client根据数据更新指令,确定待更新数据的用户所对应的key值;
通过所述SDK Client将所述key值和字段编号发送给数据库进行更新。
10.根据权利要求7所述的装置,其特征在于,所述发送单元具体用于:通过所述SDKClient将所述key值和字段编号发送给数据库,由所述数据库确定所述key值为新key值时,存储新key值并确定所述新key值对应的字段编号,或者遍历所述key值对应的字段编号,查到所述字段编号时删除对应的数据值value或者向SDK返回对应的数据值value。
11.根据权利要求7所述的装置,其特征在于,所述发送单元还用于:
通过SDK Client接收数据库返回的携带更新结果的数据操作响应消息;
通过SDK Client将数据操作响应消息返回给所述多媒体服务器。
12.根据权利要求7所述的装置,其特征在于,所述发送单元具体用于:
通过SDK Client将所述key值、数据值value和字段编号发送给数据库,由所述数据库对非加锁的所述key进行数据更新并加锁,及在更新数据完成后恢复为非加锁。
13.一种数据库的数据操作设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-6中任何一项所述的方法。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-6中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110816931.9A CN113553333B (zh) | 2021-07-20 | 2021-07-20 | 一种数据库的数据操作方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110816931.9A CN113553333B (zh) | 2021-07-20 | 2021-07-20 | 一种数据库的数据操作方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553333A CN113553333A (zh) | 2021-10-26 |
CN113553333B true CN113553333B (zh) | 2024-06-04 |
Family
ID=78103465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110816931.9A Active CN113553333B (zh) | 2021-07-20 | 2021-07-20 | 一种数据库的数据操作方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553333B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009132261A1 (en) * | 2008-04-25 | 2009-10-29 | Vmware, Inc. | Updating a file using differences and file format therefor |
CN108776665A (zh) * | 2018-04-20 | 2018-11-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
CN109542636A (zh) * | 2018-10-18 | 2019-03-29 | 新浪网技术(中国)有限公司 | 一种数据更新的方法及装置 |
CN111143383A (zh) * | 2019-12-20 | 2020-05-12 | 五八有限公司 | 一种数据更新方法、装置、电子设备及存储介质 |
CN111324619A (zh) * | 2020-02-18 | 2020-06-23 | 苏州达家迎信息技术有限公司 | 微服务***中的对象更新方法、装置、设备和存储介质 |
CN112230968A (zh) * | 2020-12-17 | 2021-01-15 | 清华四川能源互联网研究院 | 固件更新方法、装置、服务器和计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7987246B2 (en) * | 2002-05-23 | 2011-07-26 | Jpmorgan Chase Bank | Method and system for client browser update |
US10025873B2 (en) * | 2014-04-18 | 2018-07-17 | Walmart Apollo, Llc | System and method for storing and processing database requests |
US11416478B2 (en) * | 2019-01-08 | 2022-08-16 | Live Earth, LLC | Data structure and format for efficient storage or transmission of objects |
-
2021
- 2021-07-20 CN CN202110816931.9A patent/CN113553333B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009132261A1 (en) * | 2008-04-25 | 2009-10-29 | Vmware, Inc. | Updating a file using differences and file format therefor |
CN108776665A (zh) * | 2018-04-20 | 2018-11-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
CN109542636A (zh) * | 2018-10-18 | 2019-03-29 | 新浪网技术(中国)有限公司 | 一种数据更新的方法及装置 |
CN111143383A (zh) * | 2019-12-20 | 2020-05-12 | 五八有限公司 | 一种数据更新方法、装置、电子设备及存储介质 |
CN111324619A (zh) * | 2020-02-18 | 2020-06-23 | 苏州达家迎信息技术有限公司 | 微服务***中的对象更新方法、装置、设备和存储介质 |
CN112230968A (zh) * | 2020-12-17 | 2021-01-15 | 清华四川能源互联网研究院 | 固件更新方法、装置、服务器和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113553333A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和*** | |
CN110297689B (zh) | 智能合约执行方法、装置、设备及介质 | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
US7500221B2 (en) | Filter-based comments in source code | |
CN111240689B (zh) | 应用程序的构建方法、装置、设备及存储介质 | |
CN112685433B (zh) | 元数据更新方法、装置、电子设备及计算机可读存储介质 | |
CN112685029B (zh) | 一种可视化模板的生成方法、装置、设备及存储介质 | |
CN113158101B (zh) | 一种可视化页面渲染方法、装置、设备及存储介质 | |
CN108733317B (zh) | 数据存储方法和装置 | |
CN111242462B (zh) | 数据处理方法及装置、计算机存储介质、电子设备 | |
CN113076729B (zh) | 用于报表导入的方法及***、可读存储介质及电子设备 | |
CN112084179B (zh) | 一种数据处理的方法、装置、设备及存储介质 | |
CN105094857B (zh) | 用于应用加载的方法和*** | |
CN110889013B (zh) | 一种基于xml的数据关联方法、装置、服务器及存储介质 | |
CN116244387A (zh) | 实体关系构建方法、装置、电子设备及存储介质 | |
CN113792138B (zh) | 报表生成方法、装置、电子设备及存储介质 | |
US9251181B2 (en) | Dynamic map template discovery and map creation | |
CN113553333B (zh) | 一种数据库的数据操作方法、装置、设备及介质 | |
CN111124883B (zh) | 一种基于树形表格的测试用例库引入方法、***及设备 | |
CA3089289C (en) | System and methods for loading objects from hash chains | |
CN116955192A (zh) | 接口测试数据的管理、接口测试方法及装置、存储介质 | |
CN109947739B (zh) | 数据源管理方法及装置 | |
CN111447268B (zh) | 文件结构转换方法、装置、设备和存储介质 | |
CN113722007A (zh) | Vpn分支设备的配置方法、装置及*** | |
CN113806556A (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 |