引入
openEuler操作系统 + openGauss数据库
1、openEuler欧拉操作系统
百度百科:openEuler是覆盖全场景的创新平台,在引领内核创新,夯实云化基座的基础上,面向计算架构互联总线、存储介质发展新趋势,创新分布式、实时加速引擎和基础服务,结合边缘、嵌入式领域竞争力探索,打造全场景协同的面向数字基础设施的开源操作系统。
2、openGauss数据库
百度百科:openGauss 是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。同时,openGauss也是一个开源、免费的数据库平台,鼓励社区贡献、合作。
开篇
面对传统的数据库Oracle、MySQL、SQLServer,像我们使用数据库管理系统,接触比较多的就是如何安装、部署数据库(至于是在什么样的部署环境下,因具体实际业务场景而定),数据库连接方式(gsql命令行工具连接、数据库客户端连接,项目工程JDBC连接,终端模拟工具连接),数据库的SQL方言写法、SQL函数改造,以及SQL性能监控…
实战
本文,我们基于欧拉操作系统,围绕openGauss数据库基本操作来进行展开。接下来,进入openGauss数据库-DBMS实战环节:
1、版本选取
2、安装部署
【我和openGauss的故事】记一次基于在鲲鹏欧拉操作系统上openGauss实践过程
【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅
3、多方式连接
3.1、gsql命令行
首先,我们进入数据库gsql命令行界面,测试数据库连接是否正常
gsql -d postgres -p port
复制
查看数据库系统的数据库列表
\l
复制
从上面,我们可以看到databases,分别有postgres、template0、template1…
接下来,我们来创建一个普通账户所属下的数据库,用于我们在数据库客户端连接管理工具连接。
切换到我们之前创建的数据库
\c db_tpcc
复制
(注:openGauss安装时创建的管omm用户-可访问初始数据库)
创建用户
CREATE USER yd WITH PASSWORD "DayKnowApply@123";
复制
用户授权
alter user yd sysadmin;
复制
创建数据库
CREATE DATABASE db_know OWNER yd;
复制
退出当前数据库,通过gsql命令行工具-新用户连接到创建的数据库
gsql -d db_know -p 26000 -U yd -W DayKnowApply@123 -r
复制
创建SCHEMA
CREATE SCHEMA yd AUTHORIZATION yd;
复制
创建表
CREATE TABLE know_center (firstcol int);
复制
插入VS查询
INSERT INTO know_center values (1); SELECT * from know_center;
复制
3.2、数据库客户端
若是不擅长使用命令行工具,则可以使用数据库可视化管理工具-数据库连接客户端。那如何在数据库客户端连接工具去可视化管理我们的数据库?
我们可以自定义数据库连接名称,输入数据库信息如下:
点击我们的数据库名字,进入到db_know:
这样,新建连接-输入IP、PORT、DB、USER信息就可以进行可视化管理了,包括我们最常见的SQL增删改查命令,熟悉gsql的命令行工具那也是一样的操作><
当我们需要进行数据库重新启动,则可以重启服务
gs_om -t restart
复制
查看进程
ps ux | grep gaussdb 或 ps -ef | grep gaussdb
复制
3.3、jdbc驱动
url: jdbc:postgresql://ip:port/postgres?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8 username: yd password: DayKnowApply@123
复制
3.4、终端模拟工具
当然,我们也可以通过终端模拟工具去连接服务
从top -c来看,其中st为0,没有cost time去等待真实的cpu资源,这也表明我们的vm得到了所有必要的cpu资源。
(注:当所给机器设备资源配置不足,服务内存较小,过载,可使用Swap交换技术确保服务器稳定运行,若配置了swap分区,当系统的物理内存不够用时,会使用swap分区-虽然可以增大物理内存大小的限制,但若是由于内存不足使用到swap分区,会增加系统的响应时间,从而导致性能变差。因此在物理内存充足或者性能敏感的系统中,关闭swap交换内存swapoff -a,防止把数据库的缓冲区内存淘汰到磁盘上)
最后,我们在项目工程中去替换传统数据库Oracle/MySql/SqlServer,实现国产化数据库平滑替代:
// 驱动-连接地址-账号-密码等信息 String driverClassName = "org.postgresql.Driver"; String url = "jdbc:postgresql://ip:port/postgres"; String username = "yd"; String password = "DayKnowApply@123"; // 加载驱动 Class.forName(driverClassName); // 获取数据库连接对象 Connection con = (Connection) DriverManager.getConnection(url,username,password); // 获取数据库操作对象 PreparesStatement ps = con.preparesStatement("SELECT COUNT(*) FROM KNOW_CENTER;"); // 执行sql ResultSet rs= ps.executeQuery(); // 数据库产品名称 DatabaseMetaData metaData = (DatabaseMetaData) con.getMetaData(); // 这里为国产数据库-适配,在xml指定国产数据库的databaseId奠定基础 System.out.println("数据库产品名称:" + metaData.getDatabaseProductName()); 最后需关闭连接close,释放资源->rs-ps-con.
复制
最后
随着国产化进程的加速,我们的应用系统、国产化数据库、中间件不论是平稳运行在麒麟操作系统之上,还是在鲲鹏欧拉操作系统之上,都象征着国产化操作系统在软、硬件适配等方面取得了一定的成就,国产化数据库系统也在不断为兼容拓展传统数据库SQL方言-迭代升级,开发者生态日趋完善。
当在实际项目工程中,出现厂商中SQL方言函数也覆盖不全的话,则可以@厂商提供,或者通过通用ORM组件的方式去改造SQL,openGauss的一些SQL高阶语法参见->opengauss 3.1.1 SQL特性
附:技术多元化是一个趋势,多语言并存,多数据库适配,多环境兼容,让我们一起为国产化社区贡献一份力量,为开源打call,支持国产><