本发明专利技术涉及计算机技术领域,具体提供一种基于多字段数据存储方法、电子设备及存储介质,旨在解决现有的存储方法需要分多张表造成分库分表复杂的技术问题。为此目的,本发明专利技术的基于多字段数据存储方法包括:创建主表和扩展表,并将主表和扩展表存储至Mysql数据库中;基于交易请求获取交易数据;基于主表和扩展表的存储规则将交易数据存储至主表和扩展表中。如此,减少了分表的数量,避免了多张表造成分库分表的复杂,提高了数据存储效率。提高了数据存储效率。提高了数据存储效率。
【技术实现步骤摘要】
基于多字段数据存储方法、电子设备及存储介质
[0001]本专利技术涉及计算机
,具体提供一种基于多字段数据存储方法、电子设备及存储介质。
技术介绍
[0002]目前,在交易行业中,数据库中有很多表数据需要频繁增删改查(CURD),如果设计为多张表,会增加IO交互。目前,现有技术中的查询方法具体包括下述步骤:
[0003]1.下游服务商发起一笔交易请求,通过Nginx发送到交易集群的一台服务器,交易服务调用上游银联,产生交易数据。
[0004]2.由于一笔交易数据产生的400多个字段需要保存,根据Mysql的设计标准以及后续的性能扩展,经过压测,单表50个字段设计为最好。
[0005]3.400个字段大概需要分配到10张表中,由于每日五千万级别的交易,Mysql又需要分库分表,所以这么设计导致表越来越多。
[0006]4.当服务商进行查询的时候,返回一条交易数据,需要在千万级别的表中,关联多张表,导致交易实时性降低,商户体验感极差,一旦Mysql产生慢sql,占用连接数,并且不释放,那么千万级别查询进来会拖垮数据库。
[0007]如图1所示,对应1条数据,包括400个字段(n=400),由于单表50个字段设计为最好,故对于每条数据,拆分为8张表中处理(垂直拆分,例如字段1
‑
50为第一张表,
…
,351
‑
400为第8张表);例如这些字段例如包括:id是mysql中自增主键;order_id(订单id,业务键,上游银行和下游服务商均需要通过该字段进行业务处理,这8张表中都需要存在该字段,通过该字段将8张表关联);create_date表示此条交易的创建时间;
[0008]update_date表示此条交易的更新时间。
[0009]对于每日5000万数据,对于Mysql数据库单表500
‑
1000万左右数据适宜,1000万为例,故需要拆分为5张表中存储(水平拆分)。
[0010]因此,对于每日数据,共需40张表存储。当进行查询单条数据时,需要从这40张表中关联8张表进行查询,导致查询速度过慢,进而影响其它交易,从而拖垮整个交易服务。
[0011]相应地,本领域需要一种新的基于多字段数据存储方案来解决上述问题。
技术实现思路
[0012]为了克服上述缺陷,提出了本专利技术,以提供解决或至少部分地解决上述技术问题。本专利技术提供了一种基于多字段数据存储方法、电子设备及存储介质。
[0013]在第一方面,本专利技术提供一种基于多字段数据存储方法,所述方法包括:创建主表和扩展表,并将所述主表和扩展表存储至Mysql数据库中;基于交易请求获取交易数据;基于所述主表和扩展表的存储规则将所述交易数据存储至所述主表和扩展表中。
[0014]在一个实施方式中,所述创建主表包括:通过结构化查询语言创建主表,其中所述主表用于存储交易数据,每一条所述交易数据的字段至少包括订单编号字段和变更版本号
字段。
[0015]在一个实施方式中,所述创建扩展表包括:通过结构化查询语言创建扩展表,所述扩展表用于存储交易数据,每一条所述交易数据的字段至少包括订单编号字段、变更版本号字段、表名字段和数据字段,其中所述主表中的变更版本号字段和所述扩展表中的变更版本号字段保持一致。
[0016]在一个实施方式中,所述基于交易请求获取交易数据,包括:由均衡服务器获取所述交易请求,并将所述交易请求发送至交易服务器集群中的任意一台交易服务器;由所述任意一台交易服务器将所述交易请求发送至第三方银联服务端,接收所述第三方银联服务端基于所述交易请求返回的交易数据。
[0017]在一个实施方式中,所述方法还包括:将所述交易数据整合为一个数据对象;将所述数据对象存入redis数据库,以及将所述数据对象发送至MQ消息队列;将所述MQ消息队列中的所述数据对象同步至ElasticSearch搜索引擎。
[0018]在一个实施方式中,所述方法还包括:由交易服务器获取查询请求,将所述查询请求发送ElasticSearch搜索引擎;由所述ElasticSearch搜索引擎基于所述查询请求获取查询结果。
[0019]在一个实施方式中,所述方法还包括:在所述ElasticSearch搜索引擎基于所述查询请求无法获取到查询结果的情况下,基于所述查询请求从redis数据库中获取查询结果;或在基于所述查询请求无法从redis数据库中获取查询结果的情况下,基于所述查询请求从Mysql数据库中获取查询结果。
[0020]在一个实施方式中,所述方法还包括:在所述主表和所述扩展表中存储的数据超过预设数据阈值的情况下,对所述主表和所述扩展表进行分库分表操作。
[0021]在第二方面,提供一种电子设备,该电子设备包括至少一个处理器和至少一个存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述任一项所述的基于多字段数据存储方法。
[0022]在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行前述任一项所述的基于多字段数据存储方法。
[0023]本专利技术上述一个或多个技术方案,至少具有如下一种或多种有益效果:
[0024]本专利技术中的基于多字段数据存储方法,首先创建主表和扩展表,并将主表和扩展表存储至Mysql数据库中,其次基于交易请求获取交易数据,基于主表和扩展表的存储规则将交易数据存储至主表和扩展表中。如此,将多张表设计为主表和扩展表,并且将交易数据按照区域进行存储,减少了分表的数量,避免了多张表造成分库分表的复杂,提高了数据存储的效率。
附图说明
[0025]参照附图,本专利技术的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本专利技术的保护范围组成限制。此外,图中类似的数字用以表示类似的部件,其中:
[0026]图1是现有技术中进行分库分表的示意图;
[0027]图2是根据本专利技术的一个实施例的基于多字段数据存储方法的主要步骤流程示意图;
[0028]图3是一个实施例中构建的主表示意图;
[0029]图4是一个实施例中构建的扩展表示意图;
[0030]图5是一个实施例中基于多字段数据查询方法的完整示意图;
[0031]图6是一个实施例中电子设备的结构示意图。
具体实施方式
[0032]下面参照附图来描述本专利技术的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本专利技术的技术原理,并非旨在限制本专利技术的保护范围。
[0033]在本专利技术的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于多字段数据存储方法,其特征在于,所述方法包括:创建主表和扩展表,并将所述主表和扩展表存储至Mysql数据库中;基于交易请求获取交易数据;基于所述主表和扩展表的存储规则将所述交易数据存储至所述主表和扩展表中。2.根据权利要求1所述的基于多字段数据存储方法,其特征在于,所述创建主表包括:通过结构化查询语言创建主表,其中所述主表用于存储交易数据,每一条所述交易数据的字段至少包括订单编号字段和变更版本号字段。3.根据权利要求2所述的基于多字段数据存储方法,其特征在于,所述创建扩展表包括:通过结构化查询语言创建扩展表,所述扩展表用于存储交易数据,每一条所述交易数据的字段至少包括订单编号字段、变更版本号字段、表名字段和数据字段,其中所述主表中的变更版本号字段和所述扩展表中的变更版本号字段保持一致。4.根据权利要求1所述的基于多字段数据存储方法,其特征在于,所述基于交易请求获取交易数据,包括:由均衡服务器获取所述交易请求,并将所述交易请求发送至交易服务器集群中的任意一台交易服务器;由所述任意一台交易服务器将所述交易请求发送至第三方银联服务端,接收所述第三方银联服务端基于所述交易请求返回的交易数据。5.根据权利要求1所述的基于多字段数据存储方法,其特征在于,所述方法还包括:将所述交易数据整合为一个数据对象;将所述数据对象存入redis数据库,以及将所述数据对象发送至MQ...
【专利技术属性】
技术研发人员:王鹏飞,
申请(专利权)人:北京结慧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。