【技术实现步骤摘要】
一种基于Redis的关系型数据库全量内存化的方法
[0001]本专利技术涉及计算机数据处理
,尤其涉及一种基于Redis的关系型数据库全量内存化的方法。
技术介绍
[0002]在经历了人工管理、文件管理之后,数据管理技术在数据库阶段迎来了里程碑式的发展。数据库能够高效有序地存储大量数据信息,并方便用户进行有效检索、访问和管理,是信息技术发展过程中管理数据的主要方式。自2013年以来,排名前三位的数据库均是RDB(关系型数据库)。虽然目前非关系型数据库(Not Only Sql,NoSQL)发展迅速,但RDB仍然是大多数应用程序的数据存储介质,是整个社会的信息基础设施。为满足存储需求,数据库技术的发展中衍生出了以下几种数据库架构。
[0003]最简单的数据库架构是单体数据库,它使用单个数据库存储全部数据,并通过配置数据库连接池管理数据库连接,客户端可从连接池中获取连接管理数据库中的数据。在小型应用系统中,通过数据连接池直连RDB的方案比较常见。
[0004]为避免数据库单点故障和单个数据库压力过大,针对不同规模的读写请求出现了一主多从的数据库方案。但主从架构的读写分离方案存在写延迟的问题,会导致主从数据库实时数据不一致。为了降低数据呈指数级增长场景下的单个数据库的负载,分库分表技术应运而生。但分库分表技术会带来分布式事务和跨数据库JOIN等问题。数据库不同架构产生的本质原因在于RDB将数据存储在磁盘上,在频繁读写的高并发场景下会存在读写I/O瓶颈,带来操作效率低和高异常率等问题。综上所述,RDB在
【技术保护点】
【技术特征摘要】
1.一种基于Redis的关系型数据库全量内存化的方法,其特征在于:所述方法包括:构建基于对象的行式存储模式ORB
‑
KVM、基于属性的行式存储模块ARB
‑
KVM和分段列式键值交叉存储模式PCB
‑
KVCM将RDB中的数据、关系和约束转换为适合Redis存储的对象,并通过迁移控制组件实现批量快速的数据库迁移;设置SQL操作中间件,通过其中的SQL解析器组件、操作预检查组件和SQL适配器组件对Redis进行标准SQL访问;设置数据备份架构,分析Redis的离线RDB数据文件,通过解析RDB日志文件,将文件中的数据内容转换为MySQL支持的SQL语句,批量执行SQL实现数据从Redis到关系型数据库的备份存储。2.根据权利要求1所述的一种基于Redis的关系型数据库全量内存化的方法,其特征在于:所述数据库迁移包括以下内容:A1、从MySQL Schema中获取指定数据库中每个表的表对象,记录每个表的表名、列属性、主键属性和记录行数信息,然后将每个表的表对象组合为全局表对象;A2、判断MySQL数据库中的所有关系是否转换完成,如果是,则跳转步骤A4,如果不是,则跳转步骤A3;A3、使用存储转换模式中的关系转换算法实现所有关系转换,生成关系转换对象;A4、判断MySQL数据库中所有表的约束是否转换完成,如果是,则跳转步骤A6,如果不是,则跳转步骤A5;A5、使用存储转换模式中的约束转换算法实现所有约束转换,生成约束转换对象;A6、判断MySQL数据库中的所有表的数据是否转换完成,如果是,则跳转步骤A8,如果不是,则选择任意未完成数据转换的表,跳转步骤A7;A7、使用存储转换模式中的数据转换算法构建数据键值对象,生成数据转换对象;A8、当需要迁移的转换结果对象个数超过预设的阈值时,通过迁移控制组件批量迁移关系转换对象、约束转换对象和数据转换对象;A9、判断所有转换对象是否迁移完成,如果没有完成则跳转步骤A8。3.根据权利要求2所述的一种基于Redis的关系型数据库全量内存化的方法,其特征在于:所述基于对象的行式存储模式ORB
‑
KVM中的数据转换算法包括:输入数据库对象DB,初始化全局Map类型表对象TabObjMap,以表名称为键,以表对象为值;输入全局表对象TabObjMap,输出DB中的所有表的自增主键Tpk,设置T
i
(i<tcount)中的主键为PK
i
,若主键存在,则通过公式获取到表中的主键PK
i
,否则为主键值为默认值dpk;针对每一个数据库表,输入数据库名称DB、表名T
i
和主键PK
i
,根据公式K
i
=M(DB,T
i
,PK
i
)拼接为Redis中的Key对象K
i
;针对数据集djsonarr,jsonarr的长度为trlen,设置行对象为row
i
,行记录中主键值为PKVal
i
,行json对象为jrow
i
,根据公式jrow
′
i
=R(jrow
i
,PK
i
)移除json对象中主键及其对应的值,根据公式构建散列中的域字段field和域字段值value的集合NVal
i
,再结合K
i
通过公式DM=build(K
i
,NVal
i
)构建数
据转换对象DM。4.根据权利要求2所述的一种基于Redis的关系型数据库全量内存化的方法,其特征在于:所述基于属性的行式存储模块ARB
‑
KVM中的关系转换算法包括:输入数据库对象DB,初始化全局Map类型表对象TabObjMap,以表名称为键,以表对象为值;输入全局表对象TabObjMap,输出DB中的所有表的自增主键Tpk,设置T
i
(i<tcount)中的主键为PK
i
,若主键存在,则通过公式获取到表中的主键PK
i
,否则为主键值为默认值dpk;针对每一个数据库表,输入数据库名称DB,表名T
i
和主键PK
i
以及主键值PKVal
i
,根据公式K
i
=M(DB,T
i
,PK
i
,PKVal
i
)拼接为字符串对象K
i
;针对数据集djsonarr,设置行对象row
i
,行对象中的属性列长度为tcolcount,col
k
(k<tcolcount)和colVal
k
(k<tcolcount)分别为row
i
中的每个列字段和列值,根据公式构建散列中的的域字段field和域字段值value的集合NVal
i
,再结合K
i
通过公式DM=build(K
i
,NVal
i
)构建数据转换对象DM。5.根据权利要求2所述的一种基于Redis的关系型数据库全量内存化的方法,其特征在于:所述分段列式键值交叉存储模式PCB
‑
KVCM中的关系转换算法包括:输入数据库...
【专利技术属性】
技术研发人员:朱洲森,张俊,罗纯琦,赵倩,林露,
申请(专利权)人:四川师范大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。