国产化 | 走近人大金仓-KingbaseES数据库

news2024/11/17 11:47:29

引入

事务隔离级别 || KingbaseES数据库

image.png

开篇

1、KingbaseES数据库

百度百科:金仓数据库的最新版本为KingbaseES V8, KingbaseES V8在系统的可靠性、可用性、性能和兼容性等方面进行了重大改进,支持多种操作系统和硬件平台支持Unix、Linux和Windows等数十个操作系统产品版本;支持X86、X86_64及国产龙芯、飞腾、申威等CPU硬件体系结构。并具备与这些版本服务器和管理工具之间的无缝互操作能力。

实战

这里,我们来记录一次在Linux操作系统上,进行KingbaseES数据库事务隔离级别实践总结:

1、版本选取

image.png

2、基本操作

首先,我们进入数据库ksql命令行界面,测试数据库连接是否正常

ksql test system

image.png

查看进程

ps -ef | grep kingbase

image.png

查看数据库系统的数据库列表

\l

image.png

从上面,我们可以看到databases,分别有security、template0、template1、test…

登录数据库实例,我们也可以执行

ksql -h ip -p 54321 -U user TEST || ksql 'hostaddr=ip port=54321 user=user dbname=TEST' || ksql kingbase://user@ip:54321/TEST

查看表空间列表

\db

image.png

创建表

CREATE TABLE t01(id int,name text); 

image.png

插入数据

INSERT INTO t01 values (1,'a'),(2,'b'),(3,'c'); 

image.png

查看关联列表

\dt

image.png

查询插入的数据

select * from t01;

image.png

从上可知,我们对ksql命令行工具也有所了解,接下来,让我们一起走近KingbaseES的事务隔离级别><

数据库事务的概念

a) 事务是一组原子性的SQL操作。

b) 事务由事务开始与事务结束之间执行的全部数据库操作组成,具有ACID(原子性、一致性、隔离性、持久性)四大基本特征。

没有事务隔离技术并发事务间可能会出现的情况

a)幻读(表现在数量前后变化

i)第一种情况

image.png

ii)第二种情况

image.png

b)脏读(表现在未提交事务产生的中间数据

image.png

c)不可重复读

image.png

查看数据库默认隔离级别

show default_transaction_isolation;

image.png

指定常用隔离级别对应上述可能存在情况:

a)read committed 隔离级别 -> 避免脏读

开启 会话1、会话2

image.png

b)read committed 隔离级别 -> 会出现不可重复读

开启 会话1、会话2

image.png

(注:会话2中未明确开启事务,默认为read committed级别)

c)read committed 隔离级别 -> 会出现幻读

开启 会话1、会话2

image.png

d)repeatable read 隔离级别 -> 避免脏读

开启 会话1、会话2

image.png

e)repeatable read 隔离级别 -> 支持重复读

开启 会话1、会话2

image.png

f) repeatable read 隔离级别 -> 避免幻读

开启 会话1、会话2

image.png

image.png

(注:对每一次操作的案例进行事务提交,结束或回滚,则能相应地看到数据是否正常插入、显示、回滚)

3、适配改造

最后,我们在项目工程中去替换传统数据库Oracle/MySql/SqlServer,实现国产化数据库平滑替代:

image.png

// 驱动-连接地址-账号-密码等信息
String driverClassName = "com.kingbase8.Driver";
String url = "jdbc:kingbase8://ip:port/db";
String username = "rdjc";
String password = "rdjc@123";
// 加载驱动
Class.forName(driverClassName);
// 获取数据库连接对象
Connection con = (Connection) DriverManager.getConnection(url,username,password);
// 获取数据库操作对象
PreparesStatement ps = con.preparesStatement("SELECT COUNT(*) FROM RDJC_KNOW;");
// 执行sql
ResultSet rs= ps.executeQuery();
// 数据库产品名称
DatabaseMetaData metaData = (DatabaseMetaData) con.getMetaData();
// 这里为国产数据库-适配,在xml指定国产数据库的databaseId奠定基础
System.out.println("数据库产品名称:" + metaData.getDatabaseProductName());
最后需关闭连接close,释放资源->rs-ps-con. 

【我和KingbaseES的故事】记一次国产化数据库适配 | SQL Server 迁移适配人大金仓

总结

全面适配工作改造下来,这也确实给了DBA以及研发工程师对数据库SQL方言语句书写的一些约束规范

尤其是在通过人大金仓数据库认证专家-KCP后,对国产化数据库这些基础软件底层感触颇深,大批量的应用系统建立在国产化数据库基础之上,平稳运行,这无不象征着国产化数据库正在一步步走向各行各业。

对于国产数据库发展对策建议

1、不断加强合作与交流,不断增强产学研用合作,加大开源生态建设的力度,核心技术攻关,推动国产化数据库在不同领域的深入应用。

2、不断提升标准化水平,构建数据库标准体系,持续加强国产化数据库相关检测认证,推动标准落地实施,统一规范屏蔽不同异构数据库并存应用规范,降低应用的难度和成本。

3、不断持续加强国产化数据库战略引导作用,通过相关法律法规来完善健全数据库软件供应链安全评估体系,风险扫描,提供供应链各环节的管理安全评估、等保评估等。

4、不断加强数据库人才培养体系的建设。加强数据库技术认证,拟定人才激励政策,吸引更多高层次人才进入数据库行业,将数据库高级人才纳入高级工程师行列。比如加大高校、科研机构、企业在数据库相关人才培养力度,从政策、待遇等方面吸引和鼓励更多人才进入数据库行业。

当在实际项目工程中,出现厂商中SQL方言函数也覆盖不全的话,则可以@厂商提供,或者通过通用ORM组件的方式去改造SQL,KingbaseES的一些SQL高阶语法参见->KingbaseES SQL语言参考手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django 二、创建Django项目 首先进入要存放项目的目录&#xff0c;再执行创建项目的命令 1 django-admin startproject testplatform 三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├──…

2.03 PageHelper分页工具

步骤1&#xff1a;在application.yml中添加分页配置 # 分页插件配置 pagehelper:helperDialect: mysqlsupportMethodsArguments: true步骤2&#xff1a;在顶级工程pom文件下引入分页插件依赖 <!--5.PageHelper --> <dependency><groupId>com.github.pagehe…

《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)

文章目录 1. 概念1.1 简述1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 简述 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 1.2 角色 Prototype&#xff08;抽象原型类&#xff09;&#xff1a;它是声明克隆方法的接口…

python多进程编程(模式与锁)

multiprocessing的三种模式 fork&#xff0c;【拷贝几乎所有资源】【支持文件对象/线程锁等传参】【unix】【任意位置开始】【快】spawn&#xff0c;【run参数传参必备资源】【不支持文件对象/线程锁等传参】【unix、win】【main代码块开始】【慢】forkserver&#xff0c;【ru…

数据库提供的系统函数及添加外键约束

十八、数据库提供的系统函数 1、数值型函数 2、字符串函数 注意&#xff1a;使用utf8mb4或者utf8汉字都在第三个字节&#xff0c;是Unicode编码&#xff0c;所以一个汉字占3个字节 GBK编码&#xff0c;一个汉字两个字节 char_length()不管编码&#xff0c;中文英文都一个 下标…

Linux下安装RabbitMQ教程

官方安装指南&#xff1a;https://www.rabbitmq.com/install-rpm.html 我们将要安装的RabbitMQ的版本是3.8.2 el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 不需要单独安装Erlang环境。 2. 环境配置&#xff1a; 前提&#xff…

吃透《西瓜书》第三章 线性模型

&#x1f349; 吃瓜系列 教材&#xff1a;《机器学习》 周志华著 &#x1f552;时间&#xff1a;2023/7/25 &#x1f4d3; 参考&#xff1a;周志华《机器学习》西瓜书啃书指导 &#x1f4d3; 参考&#xff1a;第3章-一元线性回归 前言 什么是回归&#xff1f; 回归&#xff1…

echart折线图,调节折线点和y轴的间距(亲测可用)

options代码&#xff1a; options {tooltip: {trigger: axis, //坐标轴触发&#xff0c;主要在柱状图&#xff0c;折线图等会使用类目轴的图表中使用。},xAxis: {type: category,//类目轴&#xff0c;适用于离散的类目数据&#xff0c;为该类型时必须通过 data 设置类目数据。…

申请开通【商家转账到零钱】超时后如何反馈?

前言 在微信开放社区看到很人【商家转账到零钱】超过了7-15个工作日没有回复&#xff0c;还在审核中&#xff0c;遇到这个问题怎么解决呢&#xff1f;我最近正好在申请&#xff0c;这篇文章我就要讲讲我是如何找到客服&#xff0c;并且得到反馈的。 步骤 1.关注【腾讯客服】公…

VBA技术资料MF34:检查Excel自动筛选是否打开

【分享成果&#xff0c;随喜正能量】聪明人&#xff0c;抬人不抬杠&#xff1b;傻子&#xff0c;抬杠不抬人。聪明人&#xff0c;把别人抬得很高&#xff0c;别人高兴、舒服了&#xff0c;看你顺眼了&#xff0c;自然就愿意帮你&#xff01;而傻人呢&#xff1f;不分青红皂白&a…

nsq整体架构及各个部件作用详解

文章目录 前言 nsq的整体架构图 部件&#xff1a;nsqd 部件&#xff1a;nsqlookupd 部件&#xff1a;nsq连接库 部件&#xff1a;nsqadmin 前言 上两篇博客 centos环境搭建nsq单点_YZF_Kevin的博客-CSDN博客 linux环境搭建nsq集群_YZF_Kevin的博客-CSDN博客 我们讲了nsq是…

【Qt】QML-01:使用QtCreator10创建QML工程,并讲解第一个程序:Hello World

1、创建QML工程 1&#xff09;新建工程 打开QtCreator10,依次点击“Create Project” --> “Application(Qt)” --> “Qt Quick Application(compat)” 注意&#xff1a;本人打算使用Qt5.15.2创建工程&#xff0c;而非Qt6,因此选择兼容低于Qt6版本的“Qt Quick Applicat…

深度学习入门教程(2):使用预训练模型来文字生成图片TextToImageGenerationWithNetwork

本深度学习入门教程是在polyu HPCStudio 启发以及资源支持下进行的&#xff0c;在此也感谢polyu以及提供支持的老师。 本文内容&#xff1a;在GoogleColab平台上使用预训练模型来文字生成图片Text To Image Generation With Network &#xff08;1&#xff09;你会学到什么&a…

TEE GP(Global Platform)技术委员会及中国任务小组

TEE之GP(Global Platform)认证汇总 一、TEE GP技术委员会 二、GP中国任务小组 参考&#xff1a; GlobalPlatform Certification - GlobalPlatform

QT: 用定时器完成闹钟的实现

闹钟项目&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QDebug> #include <QTextToSpeech> #include <QMessageBox> #include <QTimer>QT_BEGIN…

十三章:使用图像级监督学习像素级语义关联性的弱监督语义分割

0.摘要 分割标签的不足是野外语义分割的主要障碍之一。为了缓解这个问题&#xff0c;我们提出了一个新颖的框架&#xff0c;根据图像级别的类别标签生成图像的分割标签。在这种弱监督的设置下&#xff0c;已知训练模型更倾向于分割局部有区别的部分&#xff0c;而不是整个物体区…

springMVC--数据验证以及国际化

文章目录 springMVC--数据验证以及国际化概述JSR 303 验证框架Hibernate Validator 扩展注解 应用实例需求说明代码实现引入验证和国际化相关的jar 包修改Monster.java修改MonsterHandler.java测试效果配置国际化文件springDispatcherServlet-servlet.xml创建国际化文件springm…

.NET 8 Preview 5推出!

作者&#xff1a;Jiachen Jiang 排版&#xff1a;Alan Wang 我们很高兴与您分享 .NET 8 Preview 5 中的所有新功能和改进&#xff01;此版本是 Preview 4 版本的后续版本。在每月发布的版本中&#xff0c;您将看到更多新功能。.NET 6 和 7 用户可以密切关注此版本&#xff0c;而…

数据服务:保障数据安全、提升数据价值的利器

04-08把元数据以及在它基础上的五大应用场景&#xff1a;数据发现&#xff08;数据地图&#xff09;、指标管理、模型设计、数据质量、成本优化&#xff0c;全部讲完。这部分内容对应的就是数据中台OneData 方法论。学完这部分内容&#xff0c;你已了解OneData方法论在企业内部…

ctfshow-web3

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 这个题目一看就知道是一个文件包含漏洞 php://input可以访问请求的原始数据的只读流&#xff0c;将post请求的数据当作php代码执行。 GET http://3afc5257-7b7d-4917-a1eb-5ea59fc35d8c.challenge.ctf.show/…