CN111459949B - 针对数据库的数据处理方法、装置及设备和索引更新方法 - Google Patents

针对数据库的数据处理方法、装置及设备和索引更新方法 Download PDF

Info

Publication number
CN111459949B
CN111459949B CN201910049419.9A CN201910049419A CN111459949B CN 111459949 B CN111459949 B CN 111459949B CN 201910049419 A CN201910049419 A CN 201910049419A CN 111459949 B CN111459949 B CN 111459949B
Authority
CN
China
Prior art keywords
data
database
main table
constraint attribute
request
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
Application number
CN201910049419.9A
Other languages
English (en)
Other versions
CN111459949A (zh
Inventor
杨晗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910049419.9A priority Critical patent/CN111459949B/zh
Publication of CN111459949A publication Critical patent/CN111459949A/zh
Application granted granted Critical
Publication of CN111459949B publication Critical patent/CN111459949B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Abstract

本申请公开了一种针对数据库的数据处理方法,包括:接收针对数据库的数据插入请求;根据所述数据插入请求,得到数据插入行为约束属性;根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。采用上述方法,以降低针对数据库的数据插入操作的成本。

Description

针对数据库的数据处理方法、装置及设备和索引更新方法
技术领域
本申请涉及数据库技术领域,具体涉及一种针对数据库的数据处理方法、装置、电子设备和存储设备。本申请同时涉及一种索引更新方法。
背景技术
在数据库领域中,索引是加速查询的重要手段,因此除了数据库主表外,还会存在数据库索引表。为了组织索引数据,数据库系统必须要付出相应的操作成本。
首先,在引入一个索引后,原本的一次数据库更新操作会“放大”为4次操作。一次典型的数据库的数据更新流程如下:1、读主表,得到原始的索引记录;2、从索引表中删除原始的索引记录;3、向索引表中插入新的记录;4、将主表中的满足条件的记录更新为目标值(即写入主表)。在没有索引表时,只有最后一步“写入主表”;在引入单个索引时,增加了前面3个操作。1次操作到4次操作的放大成本无疑是巨大的。产生这个问题的根源是:对主表行的更新操作导致了索引表主键列的变更,使得必须读一次主表来得到要删除的索引数据。
此外,数据库操作的另一个场景是插入操作,由于基于LSM树结构的NoSQL(非关系型数据库)数据库系统无法区别数据库写行为是更新操作还是插入操作,即使是在插入操作时,也需要进行读数据库主表的操作,来确定是插入操作还是更新操作,而读主表操作的成本比较大。
发明内容
本申请提供一种针对数据库的数据处理方法、装置、电子设备和存储设备,以降低针对数据库的索引场景下的数据插入操作的成本。
本申请提供一种针对数据库的数据处理方法,包括:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
可选的,所述根据所述数据插入请求,得到数据插入行为约束属性,包括:
从所述数据插入请求中得到所述数据库的主表标识;
根据所述数据库的主表标识得到所述数据插入行为约束属性。
可选的,所述数据插入行为约束属性,根据所述主表的写入行为约束属性确定。
可选的,所述数据插入行为约束属性包括:第一插入行为约束属性;
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被更新;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第二插入行为约束属性;
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第三插入行为约束属性;
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
可选的,所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述第一插入行为约束属性及所述数据插入请求,在未读取数据库主表的情况下,分别向所述数据库主表和所述索引表中插入新的列数据。
可选的,所述数据插入行为约束属性,还包括:第一插入行为加强约束属性;
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性为第二插入行为约束属性或第三插入行为约束属性或第一插入行为加强约束属性;所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述数据插入请求,向所述索引表中插入新的记录;
向所述数据库主表中插入新的记录。
可选的,还包括:
接收针对数据库的数据更新请求;
根据所述数据更新请求,得到数据更新行为约束属性;
根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表。
可选的,所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
可选的,所述根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表,包括:
根据所述数据更新请求的主键读取所述主表,得到原始的索引记录;
从所述索引表中删除所述原始的索引记录;
根据所述数据更新请求,向所述主表关联的索引表中插入新的索引记录;
将所述主表中满足所述数据更新请求中查询条件的记录中的值修改为所述数据更新请求中的目标值。
可选的,还包括:
接收针对数据库的数据删除请求;
根据所述数据删除请求,删除所述主表和所述索引表的数据。
可选的,所述根据所述数据删除请求,删除所述主表和所述索引表的数据,包括:
根据所述数据删除请求的主键读取所述数据库主表,得到原始的索引记录;
从所述主表关联的索引表中删除所述原始的索引记录;
删除所述主表中的记录。
本申请还提供一种针对数据库的数据插入装置,包括:
数据插入请求接收单元,用于接收针对数据库的数据插入请求;
数据插入行为约束属性得到单元,用于根据所述数据插入请求,得到数据插入行为约束属性;
数据插入单元,用于根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储针对数据库的数据处理方法的程序,该设备通电并通过所述处理器运行该针对数据库的数据处理方法的程序后,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
本申请还提供一种存储设备,
存储有针对数据库的数据处理方法的程序,该程序被处理器运行,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,在未读取所述主表的情况下,将数据插入到所述数据库的主表和所述主表关联的索引表。
与现有技术相比,本申请具有以下优点:
本申请提供一种针对数据库的数据处理方法、装置、电子设备及存储设备,根据所述数据插入行为约束属性及所述数据插入请求,在未读取数据库主表的情况下,将数据插入到所述主表和所述索引表。本申请通过为数据库主表设置插入行为约束属性,在对数据库进行插入操作时省去读取数据库主表的步骤,以使在针对具有索引表的数据库进行数据插入操作时的成本降低。
在优选实施例中,通过引入第三插入行为约束属性,解决了分布式系统多副本存在的更新数据时引起的数据混乱问题,同时降低了索引表更新的成本,实现系统整体写吞吐的最大化。
附图说明
图1是本申请第一实施例提供的一种针对数据库的数据处理方法的流程图。
图2是本申请第一实施例提供的一种根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表的流程图。
图3是本申请第二实施例提供的一种针对数据库的数据处理装置的示意图。
图4是本申请第三实施例提供的一种电子设备的示意图。
图5本申请第五实施例提供的一种针对数据库的索引更新方法的流程图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
本申请第一实施例提供一种针对数据库的数据处理方法,所述方法的执行主体为数据库服务器,以下结合图1进行详细说明。
如图1所示,在步骤S101中,接收针对数据库的数据插入请求。
所述数据插入请求,可以指数据库用户通过客户端向数据库服务器发送的数据插入请求。
所述数据库包括基于LSM树结构的NoSQL(非关系型数据库)数据库系统。
如图1所示,在步骤S102中,根据所述数据插入请求,得到数据插入行为约束属性。
所述数据插入行为约束属性用于表示在对所述数据库的主表和与所述主表关联的索引表进行数据插入操作时无需读取所述主表。
具体的,根据所述数据插入请求,得到数据插入行为约束属性,可以采用下述方式:从数据插入请求中得到所述数据库的主表标识;根据数据库的主表标识得到所述数据插入行为约束属性。在具体实施时,可以根据业务的属性,为每个数据库主表设置一个数据插入行为约束属性,每个数据库主表标识与一个数据插入行为约束属性对应。
需要说明的是,设置数据插入行为约束属性的主表只能进行插入操作,不能进行更新操作。
所述数据插入行为约束属性,可以根据所述主表的写入行为约束属性确定。所述数据插入行为约束属性可以包括:第一插入行为约束属性;第二插入行为约束属性;第三插入行为约束属性。
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被再次写入数据;
允许删除所述主表中的记录。
如果一个数据库主表的写入行为约束属性满足第一插入行为约束属性对应的写入行为约束属性,即允许针对主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被更新;允许删除主表中的记录,则可以将数据库主表的数据插入行为约束属性设为第一插入行为约束属性。
可以设置为第一插入行为约束属性的数据库的一个典型应用场景为:监控系统的数据库。可以将时间设为主表的主键列,主表记录的主键值为0时、1时……23时,非主键列为每分钟的监控数据值,每分钟向主表和索引表写入一个列数据(当前分钟的监控数据值)。而且数据写入后不能更新。
需要说明的是,在具体实施时,当数据库的主表关联的索引表的索引为主键重排索引和单列索引时,由于这两类索引的数据组织不需要读主表,直接更新索引即可,因此可以将主表设置为第一插入行为约束属性,省去读主表的步骤。
当数据库的主表关联的索引表的索引为多列索引时,由于多个索引列可能在不同的插入操作中被更新,因此索引表主键列可能会变化,需要读主表,其更新成本较大(读主表、删除旧的索引数据、写主表、写新索引),因此不能将主表设置为第一插入行为约束属性。
在实际场景中,由于多个索引列通常都是一起更新的,因此,为了减少更新成本,可以对第一插入行为约束属性进行加强,所述数据插入行为约束属性,还可以包括:第一插入行为加强约束属性。
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
当数据库的主表关联的索引表的索引为多列索引时,将主表设置为第一插入行为加强约束属性,多列索引的场景也不需要读主表,从而降低了对数据库主表进行插入操作的成本。
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;不允许修改所述主表的记录;
允许删除所述主表中的记录。
由于第二插入行为约束属性对应的数据库只允许针对主表的记录进行整行写入操作;不允许修改主表的记录,因此,索引表的主键列不会发生变化,也不会产生脏数据,因此在插入数据时可以省去读主表的步骤。
可以设置为第二插入行为约束属性的数据库的一个应用场景为:监控系统的数据库。可以将时间设为主表的主键列,主表记录的主键值为0时、1时……23时,每分钟有一个监控数据值,每小时将一小时的60个监控值全部写入,即整行写入,写入后不再修改。
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
需要说明的是,第三插入行为约束属性是所有数据插入行为约束属性中具有最强写入行为约束的属性,其不允许删除主表中的记录,只允许对数据库主表进行整行写入操作。
通过引入第三插入行为约束属性,解决了分布式系统多副本存在的修改数据时引起的数据混乱问题,同时降低了索引表更新的成本,实现系统整体写吞吐的最大化。
现有技术下,在分布式系统中,数据库主表存在多个副本,在数据库主表存在索引的场景下,在对数据库主表的数据进行更新操作时,易导致数据错乱的发生。例如:如果在机器A、机器B、机器C上存在数据库主表的3个副本,分别为副本A、副本B、副本C;数据库主表的数据格式为主键列为商品ID,非主键列为商品价格,如果在某一时刻,商品ID为1的商品的价格为10元,此处将此条记录简写为(1,10),索引表的主键列为商品价格,索引表的记录为(10,1),当用户需要将价格从10元改为20元时,会随机将更新请求发送到机器A、机器B、机器C上,假设请求发送到了机器A上,则读取副本A上的主表,确定商品ID为1的商品的价格为10元,找到索引表中的记录,将索引表中的记录(10,1)删除,再向索引表写入新的记录(20,1),并写主表记录(1,20);在副本B未与副本A同步时,用户需要将商品1的价格从20元改为30元,假设更新请求发送到了机器B上,则首先读取副本B上的主表,确定商品ID为1的商品的价格为10元,执行删除索引表中的记录(10,1),再向索引表写入新的记录(30,1),并写主表记录(1,30);此时,索引表中对商品1存在两条不同的数据记录(20,1)和(30,1),导致了数据混乱。
由于对数据库执行数据更新操作,删除行本身要读主表,是一次read-and-modify的事务,因此为了避免数据混乱情况的发生,保证分布式系统中多副本的一致性,现有技术下,实现此事务需要在单节点执行或者采用一些锁机制进行一定程度的互斥,以确保读写操作整体的原子性与隔离性。这会使得分布式系统无法实现多副本并发写,从而影响写吞吐。本申请第一实施例引入了第三插入行为约束属性,只允许对主表进行记录插入(追加写)操作,不允许删除记录。此时,为了解决对数据库主表的修改操作的需求,可以采用修改数据库主表中记录格式的方式,以实现采用插入操作代替更新操作。例如,可以将上例中数据库主表的主键列增加时间戳来实现改价格的需求,数据库主表的一条记录包括:商品ID、时间戳、价格三列数据。通过在分布式系统中,对数据库的操作采取插入操作替代更新操作的方式,不仅减少了数据更新成本,而且在保证分布式系统中多副本的一致性的情况下,在第三插入行为约束属性约束下,不存在read-and-modify类别的请求,故任意一个副本都能接受任意的数据插入请求,而不会产生一致性问题,从而可以实现系统整体写吞吐的最大化。分布式系统通常采用3副本机制,故第三插入行为约束属性的数据库吞吐是3个副本的吞吐之和,而其他场景只有单副本的吞吐。
如图1所示,在步骤S103中,根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
由于对主表设置了数据插入行为约束属性,因此数据库系统在分析写入操作命令时不再需要通过读取主表来获取写入操作的类别,即插入操作还是更新操作,省去了读取主表的成本。在对主表设置了数据插入行为约束属性后,数据插入操作只包括写主表和写索引表,节省了对数据进行插入操作的成本。
具体的,当数据插入行为约束属性为第一插入行为约束属性时,所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述第一插入行为约束属性及所述数据插入请求,在未读取数据库主表的情况下,分别向所述数据库主表和所述索引表中插入新的列数据。
当数据插入行为约束属性为第二插入行为约束属性或第三插入行为约束属性或第一插入行为加强约束属性;所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述数据插入请求,向所述索引表中插入新的记录;
向所述数据库主表中插入新的记录。
以上介绍的是针对数据库的数据插入场景的数据处理过程,可见,本申请第一实施例是针对数据库的数据插入操作的处理方法,由于对数据库主表设置了数据插入行为约束属性,因此数据库系统内部不必去判断写操作是插入操作还是更新操作,节省了读数据库主表的成本,实现了针对数据库的数据插入场景的数据处理过程只包括写主表和写索引表两个实质性的步骤。
由于对数据库的数据处理操作不仅包括数据插入操作,还包括数据更新操作和数据删除操作,本申请第一实施例还可以包括针对数据库的数据更新请求的处理过程与针对数据库的数据删除请求的处理过程。
针对数据库的数据更新请求的处理过程,可以包括以下步骤:
接收针对数据库的数据更新请求;
根据所述数据更新请求,得到数据更新行为约束属性;
根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表。
所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
当针对数据库的主表的对所述主表的写操作无任何约束时,可以将主表设置为数据更新行为约束属性。
如图2所示,所述根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表,包括:
步骤S201,根据所述数据更新请求的主键读取所述主表,得到原始的索引记录;
步骤S202,从所述索引表中删除所述原始的索引记录;
步骤S203,根据所述数据更新请求,向所述主表关联的索引表中插入新的索引记录;
步骤S204,将所述主表中满足所述数据更新请求中查询条件的记录中的值修改为所述数据更新请求中的目标值。
例如,主表有两列,userName和location,userName是主键,location是非主键,对location建索引。
表1
将ZhangSan的location修改为Beijing,即
updatedtsetlocation='Beijing'whereuserName='ZhangSan';
表2
上表中,(1)根据数据更新请求的主键userName读取所述数据库主表,得到原始的索引记录;(2)从索引表中删除原始的索引记录;(3)根据数据更新请求,向数据库主表关联的索引表中插入新的索引记录;(4)将主表中主键值为ZhangSan的记录中的location的值修改为Beijing。
针对数据库的数据删除请求的处理过程,可以包括以下步骤::
接收针对数据库的数据删除请求;
根据所述数据删除请求,删除所述主表和所述索引表的数据。
所述根据所述数据删除请求,删除所述主表和所述索引表的数据,包括:
根据所述数据删除请求的主键读取所述数据库主表,得到原始的索引记录;
从所述数据库主表关联的索引表中删除所述原始的索引记录;
删除所述数据库主表中的记录。
下面通过一个表格更加清楚地说明数据插入行为约束属性以及数据修改行为约束属性下的数据更新成本。假设读主表、删索引表、写索引表、写主表每个操作的成本为1。如表3所示:
Mutability 写入 删除
无索引 1 1
IMMUTABLE 2,多副本吞吐最大化 不支持
IMMUTABLE_COLUMNS加强 2 3
IMMUTABLE_COLUMNS 多列索引4,其他2 3
IMMUTABLE_ROWS 2 3
MUTABLE 4 3
表3
表3中,IMMUTABLE表示第三插入行为约束属性,IMMUTABLE_COLUMNS加强表示第一插入行为加强约束属性,IMMUTABLE_COLUMNS表示第一插入行为约束属性,IMMUTABLE_ROWS表示第二插入行为约束属性,MUTABLE表示数据修改行为约束属性。可见,在数据插入行为约束属性下,索引组织的代价已经达到理论最优(即写主表+写索引表),在索引个数增加时,本申请第一实施例的针对数据库的数据更新方法所带来的收益也会随之线性增加,同时通过细致的Mutability分类,使本申请第一实施例的针对数据库的数据处理方法能够适用于更丰富的业务场景。
与上述提供的一种针对数据库的数据处理方法相对应的,本申请第二实施例还提供了一种针对数据库的数据处理装置。
如图3所示,所述针对数据库的数据处理装置,包括:
数据插入请求接收单元301,用于接收针对数据库的数据插入请求;
数据插入行为约束属性得到单元302,用于根据所述数据插入请求,得到数据插入行为约束属性;
数据插入单元303,用于根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
可选的,所述数据插入行为约束属性得到单元,具体用于:
从所述数据插入请求中得到所述数据库的主表标识;
根据所述数据库的主表标识得到所述数据插入行为约束属性。
可选的,所述数据插入行为约束属性,根据所述主表的写入行为约束属性确定。
可选的,所述数据插入行为约束属性包括:第一插入行为约束属性;
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被更新;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第二插入行为约束属性;
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第三插入行为约束属性;
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
可选的,所述数据插入单元,具体用于:
根据所述第一插入行为约束属性及所述数据插入请求,在未读取数据库主表的情况下,分别向所述数据库主表和所述索引表中插入新的列数据。
可选的,所述数据插入行为约束属性,还包括:第一插入行为加强约束属性;
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性为第二插入行为约束属性或第三插入行为约束属性或第一插入行为加强约束属性;所述数据插入单元,具体用于:
根据所述数据插入请求,向所述索引表中插入新的记录;
向所述数据库主表中插入新的记录。
可选的,所述装置还包括:
数据更新请求接收单元,用于接收针对数据库的数据更新请求;
数据更新行为约束属性得到单元,用于根据所述数据更新请求,得到数据更新行为约束属性;
数据库更新单元,用于根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表。
可选的,所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
可选的,所述数据库更新单元,具体用于:
根据所述数据更新请求的主键读取所述主表,得到原始的索引记录;
从所述索引表中删除所述原始的索引记录;
根据所述数据更新请求,向所述主表关联的索引表中插入新的索引记录;
将所述主表中满足所述数据更新请求中查询条件的记录中的值修改为所述数据更新请求中的目标值。
可选的,所述装置还包括:
数据删除请求接收单元,用于接收针对数据库的数据删除请求;
数据删除单元,用于根据所述数据删除请求,删除所述主表和所述索引表的数据。
可选的,所述数据删除单元,具体用于:
根据所述数据删除请求的主键读取所述数据库主表,得到原始的索引记录;
从所述数据库主表关联的索引表中删除所述原始的索引记录;
删除所述数据库主表中的记录。
需要说明的是,对于本申请第二实施例提供的针对数据库的数据处理装置的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
与上述提供的一种针对数据库的数据处理方法相对应的,本申请第三实施例还提供了一种电子设备。
如图4所示,电子设备包括:
处理器401;以及
存储器402,用于存储针对数据库的数据处理方法的程序,该设备通电并通过所述处理器运行该针对数据库的数据处理方法的程序后,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
可选的,所述根据所述数据插入请求,得到数据插入行为约束属性,包括:
从所述数据插入请求中得到所述数据库的主表标识;
根据所述数据库的主表标识得到所述数据插入行为约束属性。
可选的,所述数据插入行为约束属性,根据所述主表的写入行为约束属性确定。
可选的,所述数据插入行为约束属性包括:第一插入行为约束属性;
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被更新;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第二插入行为约束属性;
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性包括:第三插入行为约束属性;
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
可选的,所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述第一插入行为约束属性及所述数据插入请求,在未读取数据库主表的情况下,分别向所述数据库主表和所述索引表中插入新的列数据。
可选的,所述数据插入行为约束属性,还包括:第一插入行为加强约束属性;
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
可选的,所述数据插入行为约束属性为第二插入行为约束属性或第三插入行为约束属性或第一插入行为加强约束属性;所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述数据插入请求,向所述索引表中插入新的记录;
向所述数据库主表中插入新的记录。
可选的,所述电子设备还执行下述步骤:
接收针对数据库的数据更新请求;
根据所述数据更新请求,得到数据更新行为约束属性;
根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表。
可选的,所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
可选的,所述根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表,包括:
根据所述数据更新请求的主键读取所述主表,得到原始的索引记录;
从所述索引表中删除所述原始的索引记录;
根据所述数据更新请求,向所述主表关联的索引表中插入新的索引记录;
将所述主表中满足所述数据更新请求中查询条件的记录中的值修改为所述数据更新请求中的目标值。
可选的,所述电子设备还执行下述步骤:
接收针对数据库的数据删除请求;
根据所述数据删除请求,删除所述主表和所述索引表的数据。
可选的,所述根据所述数据删除请求,删除所述主表和所述索引表的数据,包括:
根据所述数据删除请求的主键读取所述主表,得到原始的索引记录;
从所述主表关联的索引表中删除所述原始的索引记录;
删除所述数据库主表中的记录。
需要说明的是,对于本申请第三实施例提供的电子设备的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
与上述提供的一种针对数据库的数据处理方法相对应的,本申请第四实施例还提供了一种存储设备,存储有针对数据库的数据处理方法的程序,该程序被处理器运行,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表。
需要说明的是,对于本申请第四实施例提供的存储设备的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
本申请第五实施例提供一种针对数据库的索引更新方法,以下结合图5进行说明。
如图5所示,在步骤S501中,接收针对数据库的数据更新请求。
所述数据更新请求,此处是广义的概念,可以包括:数据插入(insert)请求、数据删除请求(delete)、数据更新(update)请求。
如图5所示,在步骤S502中,根据所述数据更新请求,得到数据更新行为约束属性。
所述根据所述数据更新请求,得到数据更新行为约束属性,包括:
从所述数据更新请求中得到所述数据库的主表标识;
根据所述数据库的主表标识得到所述数据更新行为约束属性。
广义的数据更新行为约束属性,包括:数据插入行为约束属性和数据更新行为约束属性,其中,所述数据插入行为约束属性可以包括:第一插入行为约束属性;第二插入行为约束属性;第三插入行为约束属性。
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被再次写入数据;
允许删除所述主表中的记录。
在实际场景中,由于多个索引列通常都是一起更新的,因此,为了减少更新成本,可以对第一插入行为约束属性进行加强,所述数据插入行为约束属性,还可以包括:第一插入行为加强约束属性。
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
当数据库的主表关联的索引表的索引为多列索引时,将主表设置为第一插入行为加强约束属性,多列索引的场景也不需要读主表,从而降低了对数据库主表进行插入操作的成本。
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;不允许修改所述主表的记录;
允许删除所述主表中的记录。
由于第二插入行为约束属性对应的数据库只允许针对主表的记录进行整行写入操作;不允许修改主表的记录,因此,索引表的主键列不会发生变化,也不会产生脏数据,因此在插入数据时可以省去读主表的步骤。
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
需要说明的是,第三插入行为约束属性是所有数据插入行为约束属性中具有最强写入行为约束的属性,其不允许删除主表中的记录,只允许对数据库主表进行整行写入操作。
所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
当针对数据库的主表的对所述主表的写操作无任何约束时,可以将主表设置为数据更新行为约束属性。
如图5所示,在步骤S503中,根据所述数据更新行为约束属性及所述数据更新请求,对数据库主表关联的索引表进行更新操作。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (17)

1.一种针对数据库的数据处理方法,其特征在于,包括:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性,包括:从所述数据插入请求中得到所述数据库的主表标识;根据所述数据库的主表标识得到所述数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表;
其中,所述数据插入行为约束属性用于表示在对所述数据库的主表和与所述主表关联的索引表进行数据插入操作时无需读取所述主表。
2.根据权利要求1所述的方法,其特征在于,所述数据插入行为约束属性,根据所述主表的写入行为约束属性确定。
3.根据权利要求2所述的方法,其特征在于,所述数据插入行为约束属性包括:第一插入行为约束属性;
所述第一插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行多次写入操作,每次写入操作针对不同的列,已经被写入过数据的列不能被更新;
允许删除所述主表中的记录。
4.根据权利要求3所述的方法,其特征在于,所述数据插入行为约束属性包括:第二插入行为约束属性;
所述第二插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;不允许修改所述主表的记录;
允许删除所述主表中的记录。
5.根据权利要求4所述的方法,其特征在于,所述数据插入行为约束属性包括:第三插入行为约束属性;
所述第三插入行为约束属性根据下述所述主表的写入行为约束属性确定:
允许针对所述主表的记录进行整行写入操作;
不允许删除所述主表中的记录。
6.根据权利要求3所述的方法,其特征在于,所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述第一插入行为约束属性及所述数据插入请求,分别向所述数据库主表和所述索引表中插入新的列数据。
7.根据权利要求3所述的方法,其特征在于,所述数据插入行为约束属性,还包括:第一插入行为加强约束属性;
所述第一插入行为加强约束属性根据下述所述主表的写入行为约束属性确定:
所述索引表的索引属性为多列索引;
允许一次将所有索引列全部写入所述主表;不允许分多次将索引列写入所述主表;
允许删除所述主表中的记录。
8.根据权利要求4或5或7所述的方法,其特征在于,所述数据插入行为约束属性为第二插入行为约束属性或第三插入行为约束属性或第一插入行为加强约束属性;所述根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表,包括:
根据所述数据插入请求,向所述索引表中插入新的记录;
向所述主表中插入新的记录。
9.根据权利要求1所述的方法,其特征在于,还包括:
接收针对数据库的数据更新请求;
根据所述数据更新请求,得到数据更新行为约束属性;
根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表。
10.根据权利要求9所述的方法,其特征在于,所述数据更新行为约束属性根据下述所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
11.根据权利要求10所述的方法,其特征在于,所述根据所述数据更新行为约束属性及所述数据更新请求,更新所述主表和所述索引表,包括:
根据所述数据更新请求的主键读取所述主表,得到原始的索引记录;
从所述索引表中删除所述原始的索引记录;
根据所述数据更新请求,向所述主表关联的索引表中插入新的索引记录;
将所述主表中满足所述数据更新请求中查询条件的记录中的值修改为所述数据更新请求中的目标值。
12.根据权利要求9所述的方法,其特征在于,还包括:
接收针对数据库的数据删除请求;
根据所述数据删除请求,删除所述主表和所述索引表的数据。
13.根据权利要求12所述的方法,其特征在于,所述根据所述数据删除请求,删除所述主表和所述索引表的数据,包括:
根据所述数据删除请求的主键读取所述主表,得到原始的索引记录;
从所述主表关联的索引表中删除所述原始的索引记录;
删除所述主表中的记录。
14.一种针对数据库的数据插入装置,其特征在于,包括:
数据插入请求接收单元,用于接收针对数据库的数据插入请求;
数据插入行为约束属性得到单元,用于根据所述数据插入请求,得到数据插入行为约束属性,包括:从所述数据插入请求中得到所述数据库的主表标识;根据所述数据库的主表标识得到所述数据插入行为约束属性;
数据插入单元,用于根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表;
其中,所述数据插入行为约束属性用于表示在对所述数据库的主表和与所述主表关联的索引表进行数据插入操作时无需读取所述主表。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储针对数据库的数据处理方法的程序,该设备通电并通过所述处理器运行该针对数据库的数据处理方法的程序后,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性,包括:从所述数据插入请求中得到所述数据库的主表标识;根据所述数据库的主表标识得到所述数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表;
其中,所述数据插入行为约束属性用于表示在对所述数据库的主表和与所述主表关联的索引表进行数据插入操作时无需读取所述主表。
16.一种存储设备,其特征在于,
存储有针对数据库的数据处理方法的程序,该程序被处理器运行,执行下述步骤:
接收针对数据库的数据插入请求;
根据所述数据插入请求,得到数据插入行为约束属性,包括:从所述数据插入请求中得到所述数据库的主表标识;根据所述数据库的主表标识得到所述数据插入行为约束属性;
根据所述数据插入行为约束属性及所述数据插入请求,将数据插入到所述数据库的主表和所述主表关联的索引表;
其中,所述数据插入行为约束属性用于表示在对所述数据库的主表和与所述主表关联的索引表进行数据插入操作时无需读取所述主表。
17.一种针对数据库的索引更新方法,其特征在于,包括:
接收针对数据库的数据更新请求;
根据所述数据更新请求,得到数据更新行为约束属性;包括:从所述数据更新请求中得到所述数据库的主表标识;根据所述数据库的主表标识得到所述数据更新行为约束属性;
根据所述数据更新行为约束属性及所述数据更新请求,对数据库主表关联的索引表进行更新操作;
其中,所述数据更新行为约束属性根据所述主表的写入行为约束属性确定:对所述主表的写操作无任何约束。
CN201910049419.9A 2019-01-18 2019-01-18 针对数据库的数据处理方法、装置及设备和索引更新方法 Active CN111459949B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910049419.9A CN111459949B (zh) 2019-01-18 2019-01-18 针对数据库的数据处理方法、装置及设备和索引更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910049419.9A CN111459949B (zh) 2019-01-18 2019-01-18 针对数据库的数据处理方法、装置及设备和索引更新方法

Publications (2)

Publication Number Publication Date
CN111459949A CN111459949A (zh) 2020-07-28
CN111459949B true CN111459949B (zh) 2023-12-19

Family

ID=71684946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910049419.9A Active CN111459949B (zh) 2019-01-18 2019-01-18 针对数据库的数据处理方法、装置及设备和索引更新方法

Country Status (1)

Country Link
CN (1) CN111459949B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104156396A (zh) * 2014-07-16 2014-11-19 成都康赛信息技术有限公司 大数据环境下提高数据库性能的方法及系统
WO2017005094A1 (zh) * 2015-07-03 2017-01-12 阿里巴巴集团控股有限公司 一种数据查询方法和装置
CN106372121A (zh) * 2016-08-23 2017-02-01 努比亚技术有限公司 服务器及数据处理方法
CN106777397A (zh) * 2017-03-02 2017-05-31 百望电子发票数据服务有限公司 一种电子发票数据组织查询方法及系统
CN107562762A (zh) * 2016-07-01 2018-01-09 中国联合网络通信集团有限公司 数据索引构建方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6299307B2 (ja) * 2014-03-19 2018-03-28 日本電気株式会社 ストレージシステム、ストレージ方法、及び、プログラム
US10592492B2 (en) * 2016-06-24 2020-03-17 International Business Machines Corporation Automatic updating of operational tables
US10726039B2 (en) * 2016-11-29 2020-07-28 Salesforce.Com, Inc. Systems and methods for updating database indexes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104156396A (zh) * 2014-07-16 2014-11-19 成都康赛信息技术有限公司 大数据环境下提高数据库性能的方法及系统
WO2017005094A1 (zh) * 2015-07-03 2017-01-12 阿里巴巴集团控股有限公司 一种数据查询方法和装置
CN107562762A (zh) * 2016-07-01 2018-01-09 中国联合网络通信集团有限公司 数据索引构建方法及装置
CN106372121A (zh) * 2016-08-23 2017-02-01 努比亚技术有限公司 服务器及数据处理方法
CN106777397A (zh) * 2017-03-02 2017-05-31 百望电子发票数据服务有限公司 一种电子发票数据组织查询方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蔡朝晖 ; .数据库设计中有效选择键和索引.牡丹江师范学院学报(自然科学版).2005,(第03期),全文. *

Also Published As

Publication number Publication date
CN111459949A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
US20160314161A1 (en) Multi-Version Concurrency Control Method in Database and Database System
KR102564170B1 (ko) 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체
TW201530328A (zh) 爲半結構化資料構建NoSQL資料庫索引的方法及裝置
CN107391544B (zh) 列式存储数据的处理方法、装置、设备及计算机储存介质
US7958149B2 (en) Computer program and product for append mode insertion of rows into tables in database management systems
US7908243B2 (en) Considering transient data also in reports generated based on data eventually stored in a data-warehouse
CN111414424B (zh) 一种配置数据自动同步redis的方法、系统、介质及设备
CN115114370B (zh) 主从数据库的同步方法、装置、电子设备和存储介质
CN106874329A (zh) 数据库表索引的实现方法和装置
CN111221814B (zh) 二级索引的构建方法、装置及设备
CN111459949B (zh) 针对数据库的数据处理方法、装置及设备和索引更新方法
WO2023083237A1 (zh) 图数据的管理
CN113918535A (zh) 一种数据读取方法、装置、设备及存储介质
CN109542860B (zh) 基于hdfs的业务数据管理方法、终端设备
CN112948389B (zh) 基于md5的数据库表数据比对方法及设备
CN114564501A (zh) 一种数据库数据存储、查询方法、装置、设备及介质
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN114217741A (zh) 存储装置的存储方法及存储装置
CN110019507B (zh) 数据同步的方法及装置
US20140325271A1 (en) Terminal device, information processing method, and computer program product
CN106155837B (zh) 一种主备库数据修复的方法以及装置
CN116821146B (zh) 一种基于Apache Iceberg的数据表列更新方法及系统
US20210326323A1 (en) Information processing device and information processing system
CN117131023B (zh) 数据表处理方法、装置、计算机设备和可读存储介质
CN114153857A (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