一种数据库异构复制方法
【专利摘要】本发明公开了一种数据库异构复制方法,包括如下步骤:a)获取关系数据库运行过程中产生的过程数据;b)对获取的过程数据中的会话数据和客户数据进行分离提取;c)将分离提取的会话数据保存到非关系数据库中;所述非关系数据库中保存的会话数据按照会话ID进行划分,包括SQLID、调用的应用程序、持续时间、调用SQL数量、等待事件以及占用内存大小,并按照时间顺序排序后进行存储。本发明提供的数据库异构复制方法,通过将会话数据和客户数据分离,利用NoSQL格式存储关系数据库运行过程中产生的会话数据,从而能够长期保存监控数据,减少对系统表空间的占用,以便进行后续的统计分析、故障追溯和性能优化。
【专利说明】一种数据库异构复制方法
【技术领域】
[0001] 本发明涉及一种数据库处理方法,尤其涉及一种数据库异构复制方法。
【背景技术】
[0002] 传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功 能强大,同时也积累了大量的成功案例。
[0003] 过程数据在关系型数据库里面,都是一个表,一个表的去存储,通过类似Sid去进 行关联。例如v$session表和v$process表。在这些表里面,每一条记录代表了一个过程 数据。如果要完整的展现一个会话的所有过程数据,就需要把这些表都关联起来查询。
[0004] 例如关系型数据库Oracle,它的会话信息是保存在v$session这种动态性能视图 中,每一秒都会把v$session中的信息复制到v$active_session_history中,这一部分历 史数据还是存放在内存当中,而每过10秒钟会把v$session中的信息存入到的dba_hist 相关的基表里面。这一部分信息是保存在磁盘上。虽然Oracle自带了这一部分功能,但是 因为这类型的数据是大数据,并不能保存多久,如果设置长期保存将会对数据库系统产生 一定的负担,影响数据库的性能。
[0005] 由上可见,虽然关系数据库很强大,但是它并不能很好地长期保存监控数据,扩展 性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难。
【发明内容】
[0006] 本发明所要解决的技术问题是提供一种数据库异构复制方法,能够长期保存监控 数据,减少对系统表空间的占用,以便进行后续的统计分析。
[0007] 本发明为解决上述技术问题而采用的技术方案是提供一种数据库异构复制方法, 包括如下步骤:a)获取关系数据库运行过程中产生的过程数据;b)对获取的过程数据中的 会话数据和客户数据进行分离提取;c)将分离提取的会话数据保存到非关系数据库中。
[0008] 上述的数据库异构复制方法,其中,所述步骤a)通过会话ID查询所有相关联的 v$session表和v$process表,获取该会话相关的过程数据。
[0009] 上述的数据库异构复制方法,其中,所述步骤b)对查询获取的过程数据通过 SPOOL的方式分离提取会话数据,并转换成相关的内存dump文件。
[0010] 上述的数据库异构复制方法,其中,所述步骤c)采用FTP方式周期性传送所述内 存dump文件到非关系数据库中;所述非关系数据库将所述内存dump文件转换成NoSQL格 式,并将转换好的文件按照Key/Value类型进行存储。
[0011] 上述的数据库异构复制方法,其中,所述NoSQL格式为CSV格式或JSON格式,所述 非关系数据库将所述内存dump文件中的多条记录转换成树形结构的记录,每颗树对应一 组记录,树根为key,其他的叶子和叶枝为Value。
[0012] 上述的数据库异构复制方法,其中,所述步骤c)中非关系数据库中保存的会话数 据按照会话ID进行划分,每个会话ID对应的会话数据按照时间顺序排序后进行存储。
[0013] 上述的数据库异构复制方法,其中,所述步骤c)中非关系数据库中保存的会话数 据包括SQLID、调用的应用程序、持续时间、调用SQL数量、等待事件以及占用内存大小。
[0014] 本发明对比现有技术有如下的有益效果:本发明提供的数据库异构复制方法,通 过将会话数据和客户数据分离,利用NoSQL格式存储关系数据库运行过程中产生的会话数 据,从而能够长期保存监控数据,减少对系统表空间的占用,以便进行后续的统计分析、故 障追溯和性能优化。
【专利附图】
【附图说明】
[0015] 图1为本发明数据库异构复制系统架构示意图;
[0016] 图2为本发明数据库异构复制流程示意图。
【具体实施方式】
[0017] 下面结合附图和实施例对本发明作进一步的描述。
[0018] 图1为本发明数据库异构复制系统架构示意图。
[0019] 现有的关系型数据库,例如关系型数据库Oracle,它的会话信息是保存在 v$session这种动态性能视图中,每一秒都会把v$session中的信息复制到v$active_ session_history中,这一部分历史数据还是存放在内存当中,而每过10秒钟会把 v$session中的信息存入到的dba_hist相关的基表里面。这一部分信息是保存在磁盘上。 虽然Oracle自带了这一部分功能,但是因为这类型的数据是大数据,并不能保存多久,如 果设置长期保存将会对数据库系统产生一定的负担,影响数据库的性能。比如现有的关系 数据库一般是将会话数据临时保存在物理的磁盘上,临时保存可以根据系统需要进行设 置,但是一般临时保持时间都不会太长。如果保存的太久,会占用很多系统表空间。本发明 利用复制技术,能够保障数据库自身产生的会话数据和客户数据进行分离保存,在生产环 境中,不保存过程数据,这样可以减少对系统表空间的占用,如图1所示。
[0020] 图2为本发明数据库异构复制流程示意图。
[0021] 请继续参见图2,本发明提供的数据库异构复制方法包括如下步骤:
[0022] 步骤Sl :获取关系数据库运行过程中产生的过程数据;如通过会话ID查询所有相 关联的v$session表和v$process表,获取该会话相关的过程数据。
[0023] 步骤S2 :对获取的过程数据中的会话数据和客户数据进行分离提取;如对查询获 取的过程数据通过SPOOL的方式分离提取会话数据,并转换成相关的内存dump文件。SPOOL 的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果;利用sqlplus spool 将表导成CSV文件。
[0024] 步骤S3 :将分离提取的会话数据保存到非关系数据库中。为了不对生产环境(关 系性数据库)造成过多的负载,引起性能上的负荷,本发明采用FTP方式周期性传送所述内 存dump文件到非关系数据库中;所述非关系数据库将所述内存dump文件转换成NoSQL格 式,比如CSV格式或JSON格式,并将转换好的文件按照Key/Value (键一值对)类型进行 存储。
[0025] 本发明提供的数据库异构复制方法,所述非关系数据库中保存的会话数据优选按 照会话ID进行划分,每个会话ID对应的会话数据按照时间顺序排序后进行存储。所述非 关系数据库中保存的会话数据包括SQLID、调用的应用程序、持续时间、调用SQL数量、等待 事件以及占用内存大小,从而可以进行后续的统计分析。通过对NoSQL系统的存储数据进 行开发,做相应深层次的数据多维分析,并将分析数据进行图形化展示。本发明可以展示一 段时间内,某个进程的变化情况,或者做一组多维度的分析,比如持续时间、调用SQL数量、 等待事件等等的多维分析。通过对运行数据的采集,本发明可以分析出一些规律加以应用, 帮助更好的优化关系型数据库。
[0026] 本发明提供的数据库异构复制方法,组合使用关系数据库和非关系数据库的优 点,在传统关系数据库的基础上充分利用了 NoSQL的易扩展性、大数据量、灵活的数据模型 和高可用性。
[0027] 1)易扩展性:NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库 的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来 了可扩展的能力。
[0028] 2)大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量 下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2. 0的交互频繁的 应用,Cache性能不高。而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL 在这个层面上来说就要性能高很多了。
[0029] 3)灵活的数据模型:NoSQL无需事先为要存储的数据建立字段,随时可以存储自 定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数 据量的表,增加字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。
[0030] 4)高可用性:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比 如Cassandra, HBase模型,通过复制模型也能实现高可用。
[0031] 下面给出本发明的【具体实施方式】:
[0032] 1)每隔1-5秒从关系型数据库中查询v$session中的ACTIVE数据。也可以查询 其它动态性能视图的数据。经过对大型Oracle系统的测试,基本上可以在不到1秒就能就 把内存中的ACTIVE会话查询出来,然后将查询出来的信息通过SPOOL的方式转换成相关的 dump文件。
[0033] 2)为了不对生产环境(关系性数据库)造成过多的负载,引起性能上的负荷,本发 明把文件上传到NoSQL服务器上。这里可以考虑采用FTP的方式,每隔一段时间传输一批 文件过去。
[0034] 3)编写相应的接口,对dump文件进行转换,转换成NoSQL相应的格式,例如CSV格 式或者是JSON格式,针对不同的NoSQL数据库,需要开发不同的接口。
[0035] 这一块需要读取相应的文件,把关系数据库表格型的数据文件,转换成NOSQL格 式的数据形式。这里可以使用操作系统上中脚本类型的语言,如awk,sed等等对文件进行 处理,可以简单地将多条记录转换成树形结构的记录,一个树就是一组记录。树的根就是 key,其他的叶子和叶枝就是Value。应用程序A是一个根,在10点03分发起了一个叶支, 然后在10点04分又发起了另外一个叶支。
[0036] 4)将转换好的文件导入到Key/Value类型的NoSQL数据库当中,例如mongodb、 redis 等。
[0037] 例如:
[0038] 本发明可以组织成如下key/Value形式存入到Nosql里面。
【权利要求】
1. 一种数据库异构复制方法,其特征在于,包括如下步骤: a) 获取关系数据库运行过程中产生的过程数据; b) 对获取的过程数据中的会话数据和客户数据进行分离提取; c) 将分离提取的会话数据保存到非关系数据库中。
2. 如权利要求1所述的数据库异构复制方法,其特征在于,所述步骤a)通过会话ID查 询所有相关联的v$session表和v$process表,获取该会话相关的过程数据。
3. 如权利要求2所述的数据库异构复制方法,其特征在于,所述步骤b)对查询获取的 过程数据通过SPOOL的方式分离提取会话数据,并转换成相关的内存dump文件。
4. 如权利要求3所述的数据库异构复制方法,其特征在于,所述步骤c)采用FTP方式 周期性传送所述内存dump文件到非关系数据库中;所述非关系数据库将所述内存dump文 件转换成NoSQL格式,并将转换好的文件按照Key/Value类型进行存储。
5. 如权利要求4所述的数据库异构复制方法,其特征在于,所述NoSQL格式为CSV格式 或JS0N格式,所述非关系数据库将所述内存dump文件中的多条记录转换成树形结构的记 录,每颗树对应一组记录,树根为key,其他的叶子和叶枝为Value。
6. 如权利要求1?5任一项所述的数据库异构复制方法,其特征在于,所述步骤c)中 非关系数据库中保存的会话数据按照会话ID进行划分,每个会话ID对应的会话数据按照 时间顺序排序后进行存储。
7. 如权利要求6所述的数据库异构复制方法,其特征在于,所述步骤c)中非关系数据 库中保存的会话数据包括SQLID、调用的应用程序、持续时间、调用SQL数量、等待事件以及 占用内存大小。
【文档编号】G06F17/30GK104391891SQ201410632763
【公开日】2015年3月4日 申请日期:2014年11月11日 优先权日:2014年11月11日
【发明者】程永新, 杨志洪, 袁伟翔 申请人:上海新炬网络信息技术有限公司