System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及数据库,尤其涉及一种应用于分布式存储的数据写入方法、装置、设备及介质。
技术介绍
1、随着数据存储规模越来越大且数据存储需求的多样化,对数据库的性能要求越来越高。为了满足数据库的高并发性能和实时响应效率等需求,相关技术中提出了分库分表的方案,即通过对数据库或数据表至少之一进行拆分,以解决单一数据库和单一数据表的性能瓶颈问题。
2、在实现本公开构思的过程中,专利技术人发现相关技术中至少存在如下技术问题:对于业务而言,存在需要保证某个或某些字段唯一的需求,以便于进行唯一数据记录的定位;在单库单表中,只需要创建唯一索引便能够保证字段唯一,但是分布式存储后,数据分散在不同数据库的不同表中,在分表中创建唯一索引,只能保证在当前分表不重复,无法保证字段在所有分库分表中唯一;如果要确定某个字段是否唯一,需要进行全部数据分表的扫描后进行查重处理,工作量巨大且效率低下。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种应用于分布式存储的数据写入方法、装置、设备及介质。
2、第一方面,本公开的实施例提供一种应用于分布式存储的数据写入方法。上述数据写入方法包括:接收对目标数据的写入请求,上述目标数据包含:切分键的第一设置值与唯一字段的第二设置值;上述唯一字段用于指示对应数据对象在原数据表中的唯一性;在预先构建的至少一个映射表中确定上述第二设置值对应的目标映射表;上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系
3、根据本公开的实施例,在上述目标分表中执行上述目标数据的唯一写入操作,在上述目标映射表中执行上述第一设置值和上述第二设置值的唯一写入操作,包括:执行分布式锁的抢占操作;在分布式锁抢占成功的情况下,核验上述目标映射表中是否存在上述第二设置值,得到核验结果;在核验结果为不存在第二设置值的情况下,执行目标数据库事务,上述目标数据库事务用于指示并行在上述目标分表中写入上述目标数据,以及在上述目标映射表中写入上述第一设置值和上述第二设置值;在上述目标数据库事务执行成功后结束事务并释放抢占的分布式锁。
4、根据本公开的实施例,上述写入请求包括以下至少一种:新增上述目标数据的新增请求,将第一数据更改为上述目标数据的更改请求;上述第一数据的切分键的取值与上述目标数据的切分键的取值相同,上述第一数据的唯一字段的取值为第三设置值。在写入请求为上述新增请求的情况下,在上述目标分表中写入上述目标数据,以及在上述目标映射表中写入上述第一设置值和上述第二设置值,包括:在上述目标分表中新增上述目标数据;在上述目标映射表中新增上述第一设置值和上述第二设置值。在写入请求为上述更改请求的情况下,在上述目标分表中写入上述目标数据,以及在上述目标映射表中写入上述第一设置值和上述第二设置值,包括:在上述目标分表中将上述第一数据替换为上述目标数据;根据第二预设分布式存储路由算法,确定上述第三设置值所在的待更新映射表;其中,上述第二预设分布式存储路由算法用于进行映射表的分布式存储切分;在上述待更新映射表与上述目标映射表为不同的分布式映射表的情况下,在上述待更新映射表中删除上述第三设置值和上述第一设置值;并在上述目标映射表中新增上述第一设置值和上述第二设置值之间的映射关系;在上述待更新映射表与上述目标映射表为相同的分布式映射表的情况下,在上述待更新映射表中将上述第三设置值替换为上述第二设置值。
5、根据本公开的实施例,确定上述第一设置值对应的目标分表,包括:根据用于切分原数据表的第一预设分布式存储路由算法,确定上述第一设置值对应的目标分表。
6、根据本公开的实施例,上述数据写入方法还包括:预先构建映射表。上述预先构建映射表,包括:将原数据表中用于查询的唯一字段确定为映射键;根据上述原数据表中切分键的取值与上述映射键的取值之间的映射关系,构建初始映射表;根据上述初始映射表的数据量规模或查询效率设定指标,确定是否需要对上述初始映射表进行分布式存储处理;在需要对上述初始映射表进行分布式存储处理的情况下,将上述映射键作为切分键,基于第二预设分布式存储路由算法对上述初始映射表进行分布式存储处理,得到多个分布式映射表,上述多个分布式映射表作为构建好的映射表;在不需要对上述初始映射表进行分布式存储处理的情况下,上述初始映射表作为构建好的映射表。
7、根据本公开的实施例,上述映射表为多个分布式映射表,上述分布式映射表是由上述映射键基于第二预设分布式存储路由算法进行数据切分得到的。其中,在预先构建的至少一个映射表中确定上述第二设置值对应的目标映射表,包括:根据第二预设分布式存储路由算法,在预先构建的多个分布式映射表中确定上述第二设置值对应的目标分布式映射表。
8、根据本公开的实施例,上述映射表中,映射键的取值包含以下表示方式至少一种:采用单一唯一字段的字段取值的形式进行表示;采用唯一字段名称和唯一字段取值组合的形式进行表示;在唯一字段是由多个查询字段逻辑组合得到的情况下,采用多个查询字段逻辑组合后的复合查询字段取值的形式进行表示。
9、根据本公开的实施例,上述数据写入方法还包括:在查询存在上述第二设置值的情况下,中断写入执行操作并返回非唯一值写入失败的报错信息。
10、第二方面,本公开的实施例提供一种应用于分布式存储的数据写入装置。上述数据写入装置包括:请求接收模块、映射表定位模块、写入唯一性确定模块和唯一写入处理模块。上述请求接收模块用于接收对目标数据的写入请求,上述目标数据包含:切分键的第一设置值与唯一字段的第二设置值;上述唯一字段用于指示对应数据对象在原数据表中的唯一性。上述映射表定位模块用于在预先构建的至少一个映射表中确定上述第二设置值对应的目标映射表;上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,上述映射键包含上述唯一字段。上述写入唯一性确定模块用于在上述目标映射表中查询是否存在上述第二设置值。上述唯一写入处理模块用于在查询不存在上述第二设置值的情况下,确定上述第一设置值对应的目标分表,并在上述目标分表中执行上述目标数据的唯一写入操作,在上述目标映射表中执行上述第一设置值和上述第二设置值的唯一写入操作。
11、第三方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的应用于分布式存储的数据写入方法。
12、第四方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序本文档来自技高网...
【技术保护点】
1.一种应用于分布式存储的数据写入方法,其特征在于,包括:
2.根据权利要求1所述的数据写入方法,其特征在于,在所述目标分表中执行所述目标数据的唯一写入操作,在所述目标映射表中执行所述第一设置值和所述第二设置值的唯一写入操作,包括:
3.根据权利要求2所述的数据写入方法,其特征在于,所述写入请求包括以下至少一种:新增所述目标数据的新增请求,将第一数据更改为所述目标数据的更改请求;所述第一数据的切分键的取值与所述目标数据的切分键的取值相同,所述第一数据的唯一字段的取值为第三设置值;
4.根据权利要求1所述的数据写入方法,其特征在于,确定所述第一设置值对应的目标分表,包括:
5.根据权利要求1所述的数据写入方法,其特征在于,还包括:预先构建映射表;
6.根据权利要求1所述的数据写入方法,其特征在于,所述映射表为多个分布式映射表,所述分布式映射表是由所述映射键基于第二预设分布式存储路由算法进行数据切分得到的;
7.根据权利要求1所述的数据写入方法,其特征在于,所述映射表中,映射键的取值包含以下表示方式至少一种:
...【技术特征摘要】
1.一种应用于分布式存储的数据写入方法,其特征在于,包括:
2.根据权利要求1所述的数据写入方法,其特征在于,在所述目标分表中执行所述目标数据的唯一写入操作,在所述目标映射表中执行所述第一设置值和所述第二设置值的唯一写入操作,包括:
3.根据权利要求2所述的数据写入方法,其特征在于,所述写入请求包括以下至少一种:新增所述目标数据的新增请求,将第一数据更改为所述目标数据的更改请求;所述第一数据的切分键的取值与所述目标数据的切分键的取值相同,所述第一数据的唯一字段的取值为第三设置值;
4.根据权利要求1所述的数据写入方法,其特征在于,确定所述第一设置值对应的目标分表,包括:
5.根据权利要求1所述的数据写入方法,其特征在于,还包括:预先构建映射表;
6...
【专利技术属性】
技术研发人员:李保峰,
申请(专利权)人:京东科技控股股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。