前言
本文章描述对于金融机构纷纷转用国产数据库进行市场调研,在业务背景中做了粗略说明。同时详细介绍达梦数据库特性和优势。在项目中通常会使用第三方组件,在文章中以Flowable为例提供了解决方案。

业务背景
随着国家有关部门近年来陆续出台相关政策指导文件,推动探索安全可控的金融科技产品,加强银行业信息安全建设,国内众多金融政企机构纷纷开始探索改造原有IT系统,对国产化数据库的需求日益强烈。
除了政策指导以外,金融机构纷纷选择国产化数据库很重要的原因是“降本增效”。传统集中型数据库,成本高、扩容难、依赖资源堆砌来保证数据库可用性和扩展性,这种方案正面临越来越大的压力。自主可控的国产达梦通用性、高性能、高安全性、高可靠、高可用性、易用性、海量数据存储和管理、全文索引、对存储模块的支持。
金融数据如何平滑迁移至国产化数据库。在金融业务场景中,数据库迁移升级、数据分发与数据备份是数据库系统必不可少的基本功能。其中数据库迁移升级、数据分发是实现数据解耦及汇总的重要基础,例如:保险行业常见的总分系统架构,多个子库需要实时的将业务数据同步至总库汇总查询;银行核心交易系统中,需要将交易数据实时同步至分析子系统进行报表,跑批等业务员操作。而数据备份则是数据安全的基石,更是金融业务数据的生命线。

达梦介绍
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。
DM7采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。
全文检索:DM提供多文本数据检索服务,包括全文索引和全文检索。全文索引为在字符串数据中进行复杂的词搜索提供了有效支持。全文索引存储关于词和词在特定列中的位置信息,全文检索利用这些信息,可快速搜索包含具体某个词或某一组词的记录。DM的全文索引支持中、英、俄文等多种语言。
多字符集支持:为了实现对多种语言的存储和访问,达梦数据库采用两种编码方式来存储数据。一种是根据操作系统所提供的系统默认编码来进行存储,一种是利用Unicode编码来进行存储。由于Unicode的一致性,它在大多数情况下都可能简化软件的国际化过程。它取消了处理多种代码页的必要,并且由于是采用多字节进行编码,因此由双字节字符集所引起的额外处理也不必要了。达梦数据库已经能够有效支持包括中、英、俄、韩、日文等在内的多种字符集。
物理数据页大小可选:物理数据页是系统内部数据组织的基本单位。系统的高速磁盘缓冲、 I/O等都以数据页为单位进行。DM系统允许用户在建立系统时,可在4K、8K、16K或32K中任选一个值作为页的大小,以达到最优的应用系统性能。
代理服务与作业调度:在DM系统中,代理服务是运行在服务器端,调度并执行作业、监视警报的服务。通过它用户可以自动执行部分管理任务,如定期备份、出错通知等,减轻工作负担。必须启动代理服务后,作业与调度才能正常工作。代理服务加载系统定义的所有作业,并根据其调度信息安排其执行时间。当特定的时刻到来时,启动作业,并依次执行作业包含的每个步骤。代理服务不仅监控时间事件,同时也监控服务器内部的警报事件,当服务器在运行中产生某个特定事件时(如执行操作失败),代理服务会检测到这个事件的发生,并触发相应的警报。
多媒体和空间信息支持:DM采用创新的混合数据库模型,扩展的多媒体和GIS数据类型等技术,成功实现了空间数据、多媒体数据与常规数据的一体化定义、存储和管理,在空间地理信息及多媒体信息管理方面具有明显的优势。此外,DM系统还提供了地理信息的分层检索、限定检索、漫游、特写、局部放大、叠加等功能。
迁移前期准备与常见问题解决方案
迁移前的准备工作查看数据格式检查、数据长度检查、区间范围检查、空值、默认值检查、完整性检查、一致性检查。如图所示迁移支持的数据库。

  1. 达梦数据库默认是大写,会照成我们前端获取的时候全部变成大写,所以我们需要取改动量比较小的方式去迁移,所以我们在安装时这里配置好大小写敏感。
  2. 建议不要用root用户安装,检查系统限制,检查系统内存与存储空间。 安装完数据库后,初始化实例。 Sql中达梦不支持单引号。、
  3. 如果在安装是未设置大小写敏感需要修改所以代码中的get(“”)取值,请安装时设置好避免此类问题。
  4. 达梦中没有FIND_IN_SET函数,需要使用存储过程替代。 GROUP_CONCAT函数修改成wm_concat() 函数。 JPA sql in中获取List数组写法不支持,请更换更换mybatis写法并且#号要更换成$符号。
  5. ADMIN与USER…等关键字问题请在表中更换名称,在代码中取重命名的名称,在使用map或json放到原来的关键字中即可使用,以免修改前端
  6. 达梦中使用group up请包涵所有的列

达梦兼容第三方组件
以Flowable工作流引擎为例兼容达梦数据库。目前大部分第三方组件是不支持达梦数据库,所以我们需要源码二次开发去兼容。

Flowable是Activiti原班主创人员从activiti-6.0.0.Beta4 分支重新开发出来的一套工作流引擎,是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎,易于与 Spring集成使用。

问题:Flowable启动项目,报错信息如下: couldn’t deduct database type from database product name ‘DM DBMS’。说明Flowable并不认识国产数据库,需要修改源码。

解决方案:在Flowable源码项目中搜索AbstractEngineConfiguration文件,修改其中getDefaultDatabaseTypeMappings方法,从下图可见,增加达梦数据库标识。

public static final String DATABASE_TYPE_ORACLE = "oracle";public static Properties getDefaultDatabaseTypeMappings() {databaseTypeMappings.setProperty("MySQL", DATABASE_TYPE_MYSQL);
// 兼容达梦数据库 **databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_ORACLE);return databaseTypeMappings;
}

Flowable中的Liquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据) 都保存在XML文件中,便于版本控制。liquibase说白了就是一个将你的数据库脚本转化为xml格式保存起来,其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操作。

问题:于达梦数据库不能自动转换true/false为1/0。

解决方案: Liquibase源码中覆盖了com.alibaba.druid.pool.DruidPooledStatement,将其中的executeUpdate和execute方法中待执行的SQL语句做了转换。

@Override
public final boolean execute(String sql) throws SQLException {checkOpen();incrementExecuteCount();transactionRecord(sql);try {if (StringUtils.isNotEmpty(sql)){sql = sql.replace("TRUE", "1");sql = sql.replace("FALSE", "0");}return stmt.execute(sql);} catch (Throwable t) {errorCheck(t);throw checkException(t, sql);}
}

总结
随着国家对信创工程的日益重视,目前采用有自主知识产权的国产数据库将成为主流。 DM 数据库和 MySQL 体系结构上存在差异,SQL 语法也存在一定的差异。DM 数据库针 对 MySQL 做了部分兼容性。但由于有根本性的差异,兼容度不高。从 MySQL 迁移到 DM 数 据库,DM 数据库提供了自动数据迁移工具,但在开发级别还需要一定的人工干预。

MySQL 到 DM 的迁移主要有分析待移植系统,确定移植对象、通过数据迁移工具 DTS 完成常规数据库对象及数据的迁移。通过人工完成 MSQL 的移植、移植完成后对移植的结果进行校验,确保移植的完整性和正确性、对应用系统进行移植、测试和优化。

项目中使用第三方组件,如果是开源的可以通过修改源码的方式去解决兼容性问题,上述以Flowable为例描述了兼容的详细过程。项目不同所使用的组件也有所差异,通过源码二次开发完全可以解决目前所遇到的项目难点,也可以通过达梦官方社区参与提问。

关系型数据库迁移达梦数据库相关推荐

  1. mysql数据库迁移达梦_mysql数据库迁移达梦数据库

    我们安装好达梦数据库之后,便可以在开始->所有工具->达梦数据库中看到它的结构 我们选择DM数据迁移工具,然后点击进去 然后在迁移管理里右键新建工程 然后输入工程名即可,可以随便起.点击确 ...

  2. MySQL数据库迁移到达梦数据库过程详解

    1-达梦数据库本地安装: 数据库安装 | 达梦技术文档 2-使用可视化工具迁移达梦数据库: 从 MySQL 迁移到 DM | 达梦技术文档 可能遇到的问题: 2-1 连接数据库失败[Communica ...

  3. DM8达梦数据库:达梦数据库分区表

    达梦数据库-二级分区表: 创建一个产品销售记录表 sales,记录产品的销量情况.由于产品只在几个固定 的城市销售,所以可以按照销售城市区号对该表进行 LIST 分区.再按照年份RANGE范围分区 示 ...

  4. 猿创征文|国产数据库之达梦数据库安装使用

    国产数据库之达梦数据库安装使用 引言 安装包下载 安装数据库 配置数据库 连接数据库 引言 现在数据安全越来越受到国家的重视,很多国有企业,学校等都要求使用国产数据库,虽然现在国产数据库的发展还是初期 ...

  5. 解决mysql数据库迁移达梦8数据库乱码问题

    手里有一个mysql数据库测试数据,准备将其导入国产数据库达梦8. 使用达梦数据库自带的管理工具进行迁移. 数据表结构和数据迁移后效果 迁移之后,我们看到存在乱码的问题. 研究了一段时间,终于找到了解 ...

  6. sql文件导入达梦数据库_达梦数据库 导入数据

    因为公司要求mysql数据库数据需要转到达梦数据库,对于达梦数据库的了解尚且不多,所以周周转转,寻找度娘以及贴吧,有推荐spoon工具的,有第三方数据迁移工具的.进行使用时发现实在是麻烦,而且对数据的 ...

  7. mysql数据库迁移到达梦数据库

    说明:在windowns上安装达梦数据库,并从mysql5.7迁移到达梦数据库8,此处使用的是达梦数据库的试用版本,如果要安装标准版或者企业版,可以花钱购买. 下载安装包 从达梦官网下载安装包,下载地 ...

  8. 国产数据库之达梦数据库 - DM7 MPP集群安装配置

    武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件 ...

  9. php7 测试数据库_达梦数据库PHP连接测试

    完整实验步骤: 1.apache安装 2.php安装 3.连接达梦数据库 1.源码安装apache apache的源码安装包: httpd-2.4.43.tar.gz 安装apache源码包需要先安装 ...

最新文章

  1. 图像点云数据融合方法汇总
  2. 解决电脑重启后 ubuntu 不能联网
  3. 深度:应用安全是信息安全防护的短板
  4. LUOGU P2966 [USACO09DEC]牛收费路径Cow Toll Paths
  5. 如何学习网络协议(学习笔记)
  6. 十一、Grafana监控系统
  7. Android(java)学习笔记164:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)...
  8. form提交php怎么接收不到,php form表单post提交获取不到数据,而使用get提交能获取到数据 的解决办法...
  9. ArrayList 的三种构造方法
  10. SmartSVN 14 for Mac(多平台SVN客户端)
  11. TwinCAT 软件安装级别的简要介绍,倍福FTP
  12. cmd命令查询电脑序列号_什么命令可以查电脑型号、序列号
  13. web 打开pdf文件
  14. 微信小程序云数据库增删改查
  15. iOS10-iOS13全系统越狱来了,A5-A11芯片全部能越狱工具来了
  16. 远程桌面连接(远程控制另一电脑)的详细步骤
  17. 一本书读懂大数据 读书笔记(1)
  18. android webView 全屏播放网络视频
  19. 怎么更换vscode背景图,放入自己喜欢的图片
  20. Win10 易升更新 安装wls2 部署docker

热门文章

  1. 学习笔记14--其他自动驾驶开发平台
  2. 移动学习——当代E-Learning的新领域
  3. Learn day2 运算/循环/字符串操作
  4. android 编译WVGA
  5. 自定义控件从入门到轻生之---来个结晶
  6. 【C4D】DNA螺旋
  7. 助记符表示指令功能的计算机语言,计算机语言分类.doc
  8. 记录:解决firefox不同电脑上不能同步的问题
  9. 2021年中国环保产业相关政策法规及行业标准分析[图]
  10. oracle 被锁问题集及解决方案