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

引入

事务隔离级别 || 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.mzph.cn/news/10327.shtml

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

相关文章

Ubuntu--科研工具系列

翻译系列 pot-desktop github链接: https://github.com/pot-app/pot-desktop 下载deb Releases pot-app/pot-desktop GitHub 安装过程 在下载好的deb目录下打开终端(自动安装依赖) sudo apt install "XXX.deb" &#xff08;后面可以直接托文件到终端&#…

d3dx9_42.dll丢失怎么解决?这三个方法亲测可修复

最近我在使用计算机时遇到了一个问题&#xff0c;就是d3dx9_42.dll文件丢失的错误提示。初时我对这个错误一无所知&#xff0c;不知道该如何解决。但是经过一番搜索和学习&#xff0c;我终于找到了修复这个问题的方法。d3dx9_42.dll是一个与DirectX相关的动态链接库文件&#x…

网络:TCP/IP协议

1. OSI七层参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2. TCP/IP模型 应用层 传输层 网络层 数据链路层 物理层 3. 各链路层对应的名称 应用层对应的是协议数据单元 传输层对应的是数据段 网络层对应的是数据包 链路层对应的是数据帧 物理层对应的是比特…

Elasticsearch API(二)

文章目录 前言一、Elasticsearch指标ES支持的搜索类型ES的能力ES的写入实时性ES不支持事务 二、Elasticsearch名词节点&#xff08;Node&#xff09;角色&#xff08;Roles&#xff09;索引&#xff08;index&#xff09;文档&#xff08;document&#xff09; 三、Elasticsear…

fastadmin 项目gitee管理

gitee创建一个仓库使用sourcetree等工具拉取代码使用phpstorm远程同步代码到本地设置忽略代码文件 注意&#xff1a;如果是直接把远程代码同步到本地&#xff0c;默认是你在 .gitignore中设置是无效的&#xff0c;代码一样会提交&#xff0c;需要先使用上面的截图去掉缓存&…

VM虚拟机网络配置桥接模式方法步骤

VM虚拟机配置桥接模式&#xff0c;可以让虚拟机和物理主机一样存在于局域网中&#xff0c;可以和主机相通&#xff0c;和互联网相通&#xff0c;和局域网中其它主机相通。 vmware为我们提供了三种网络工作模式&#xff0c;它们分别是&#xff1a;Bridged&#xff08;桥接模式&…

Linux相关

0.需要安装的软件 0.1.VMware&#xff08;虚拟机&#xff09; 0.2.XShell&#xff08;强大的安全终端模拟软件&#xff09; 0.3.XFTP&#xff08;是一个功能强大的SFTP、FTP 文件传输软件&#xff09; 0.4.CentOS XShell和XFTP文件压缩包所在路径 D:\CentOS7 xftp安装默认…

Windows用户如何安装新版本cpolar内网穿透

在科学技术高度发达的今天&#xff0c;我们身边充斥着各种电子产品&#xff0c;这些电子产品不仅为我们的工作带来极大的便利&#xff0c;也让生活变得丰富多彩。我们可以使用便携的电子设备&#xff0c;记录下生活中精彩和有趣的瞬间&#xff0c;并通过互联网方便的与大家分享…

【雕爷学编程】Arduino动手做(172)---WeMos D1开发板模块4

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Linux-DHCP安装配置流程

DHCP 介绍 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络协议&#xff0c;用于在局域网(LAN)中自动分配IP地址和其他网络配置信息给计算机设备。DHCP旨在简化网络管理&#xff0c;允许设备自动获取IP地址&#xff0c;无需手动配置&#xff0c;…

19.主题时钟

主题时钟 html部分 <div class"btn">黑色</div><div class"clock-container"><div class"time">21</div><div class"date">21</div><div class"clock"><div class&qu…

Linux系统MySQL数据库的备份及应用

本节主要学习了MySQL数据库的备份&#xff1a;概念&#xff0c;数据备份的重要性&#xff0c;造成数据丢失的原因&#xff0c;备份的类型&#xff0c;常见的备份方法&#xff0c;实例与应用等。 目录 一、概述 二、数据备份的重要性 三、造成数据丢失的原因 四、备份类型 …

小程序如何上传商品

​小程序作为一种便捷的电商平台&#xff0c;上传商品是非常重要的一步。本文将为你提供一个完整的小程序上传商品教程&#xff0c;帮助你轻松上架自己的商品。 一、进入商品管理页面 在个人中心点击管理入口&#xff0c;然后找到“商品管理”菜单并点击。 2. 点击“添加商品…

MySQL数据库期末项目 图书馆管理系统

1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理&#xff0c;其中每天的业务和操作流程非常繁琐复杂&#xff0c;纸质版的登记信息耗费了大量的人力物力。因此图书馆管理系统应运而生&#xff0c;该系统采用智能化设计&#…

分布式文件存储与数据缓存 FastDFS

一、FastDFS概述 1.1 什么是分布式文件系统 单机时代 初创时期由于时间紧迫&#xff0c;在各种资源有限的情况下&#xff0c;通常就直接在项目目录下建立静态文件夹&#xff0c;用于用户存放项目中的文件资源。如果按不同类型再细分&#xff0c;可以在项目目录下再建立不同的…

C++初阶之一篇文章让你掌握string类(模拟实现)

string类模拟实现 1.为什么要模拟实现string2.string的模拟实现需要注意哪些问题3.经典的string类问题4.写时拷贝5.传统版写法的String类&#xff08;参考&#xff09;6.现代版写法的String类&#xff08;参考&#xff09;7.string类的模拟实现&#xff08;讲解&#xff09;7.1…

Android:RecyclerView封装,打造列表极简加载

前言 mBinding.recycler.linear().divider().set<OrdinaryListBean> {addLayout(R.layout.layout_ordinary_item)}.setList(getList()) 如果我要说&#xff0c;除了数据和布局之外&#xff0c;以上的几行代码&#xff0c;就实现了一个列表加载&#xff0c;有老铁会相信…

在 Windows 中通过 WSL 2 高效使用 Docker

大家好&#xff0c;我是比特桃。平时开发中&#xff0c;不免会使用一些容器来跑中间件。而开发者使用的操作系统&#xff0c;大多是Mac OS 、Windows。Docker 为了兼顾这两个平台的用户&#xff0c;推出了 Docker Desktop 应用。Docker Desktop 中的内核还是采用了 Linux 的内核…

基于规则指导的知识图谱推理协作代理学习(2019)7.27

基于规则指导的知识图谱推理协作代理学习 摘要介绍问题和准备工作问题公式基于符号的方法基于游走的方法 RuleGuider模型架构实体代理策略网络 模型学习奖励设计训练过程 实验实验设置数据集实验结果消融研究人工评估 总结 摘要 基于 行走模型 是通过在提供可解释决策的同时实…

flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

当你在Flutter应用中尝试打开一个非安全连接的网页&#xff08;例如HTTP连接而不是HTTPS连接&#xff09;时&#xff0c;可能会遇到"ERR_CLEARTEXT_NOT_PERMITTED"错误。这是因为默认情况下&#xff0c;Android 9及更高版本禁止应用程序通过非安全的明文HTTP连接进行…