【经验分享搭建基于 openGauss 的 Java 开发环境

2023年 11月 21日 50.2k 0

最近我们团队在新的项目中选择了开源数据库 openGauss 取代原来的 MySQL,经过一段时间的开发和使用,对于 openGauss 这个新一代开源数据库的优势有了更加深入的了解和认识。

关于openGauss的介绍:openGauss由华为发起开源,具有出色的性能、高可用、易管理和安全保障等优势。openGauss关系型数据库开启数据管理新纪元,SQL语句可以直接输入执行,也可以嵌入到其他语言的代码中调用,还可以通过API的方式使用。SQL语法规范保障跨平台兼容性,SQL从1986年的第一版标准发展至今,已形成完善的语法规范体系。是各大数据库厂商可以实现跨平台和语言环境的兼容性的基础。openGauss通过使用通用的SQL语言降低了编程门槛,完全兼容主流的SQL标准,助力用户轻松管理数据。

openGauss作为一款开源软件,可以免费使用,代码对所有人开放。用户可以根据需要下载并应用到实际场景, 而无需支付任何费用,用户可以自由访问openGauss的源代码,来研究其技术实现,或基于自己的需求进行修改优化。openGauss选择开源,就是为了让更多人受益,也为了建立一个可持续发展的开源数据库生态。我觉得这展现了openGauss“开源共生”的发展理念。在开源基石上,openGauss也一直为他的用户无私地提供着优质的服务。比如市场上的GBase 8c就是基于openGauss 3.0内核的多模多态分布式数据库,取得了良好的商业效果。openGauss 内核为上层数据库产品提供了极大的发挥空间,最新的openGauss更是升级到了5.1.0的版本。下面是我在开发使用过程中的一点心得:

一、经济实惠,安装便捷

相比商业闭源数据库,openGauss 完全开源可以大幅降低使用成本。首先是避免了高昂的 License 授权费用,对于许多初创公司和中小企业来说,这笔钱的节约效果非常明显。此外,借助开源社区的力量,也能显著减少软件的维护和运营成本。在安装方面这里以centos7.6版本安装为例子,在华为镜像网站(https://repo.huaweicloud.com/centos/7.6.1810/)下载7.6版本的镜像,为了保障开发环境性能的高可用,这里选择最小化安装,因为是最小化的环境,当然需要开启sshd(service sshd start),和关闭防火墙(systemctl firewall stop)等操作,然后安装openGauss所需要的软件环境,如python3.6等,在配置安装python之前安装下python3的依赖,通过以下命令:

    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc  

    防止后续失败,如果没有wget的话建议也安装下yum -y install wget,这样通过命令下载wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz下载安装包较为方便,然后就是解压编译安装了,这里不做过多的赘述,这里有俩个小细节在安装过程中需注意,就是系统yum可能默认是2.6以下的的版本,这里在通过软连接:

      ln -s usr/local/bin/python3.6 /usr/bin/python

      指向pyhon3.6后,最好通过vi编辑器编辑一下

      /usr/bin/yum和/usr/libexec/urlgrabber-ext-down的第一行代码,将python改为python2,这样输入python就能指向对应版本。希望这个小细节能给开发者一点tips。然后就是按照官方文档说明下载依赖,步骤如下:

      基础环境篇

      1、 yum install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel zlib readline bzip2 lrzsz

      2、setenforce 0

      3、cat>> /etc/profile EOF

      4、source /etc/profile

      5、yum install -y ntp

      6、systemctl enable ntpd

      7、systemctl start ntpd

      8、timedatectl set-timezone Asia/Shanghai

      9、timedatectl set-ntp yes

      10、hwclock --systohc

      11、cd /usr/local

      12、rz openGauss-5.0.0-CentOS-64bit.tar.bz2

      13、tar -jxf openGauss-5.0.0-CentOS-64bit.tar.bz2

      14、tee -a /etc/sysctl.conf net.ipv4.tcp_retries1=5

      > net.ipv4.tcp_syn_retries=5

      > net.ipv4.tcp_synack_retries=5

      > net.ipv4.tcp_fin_timeout=60

      > net.ipv4.ip_local_port_range = 26000 65535

      > net.ipv4.tcp_sack=1

      > net.ipv4.tcp_timestamps=1

      > vm.extfrag_threshold=500

      > vm.overcommit_ratio=90

      > EOF

      15、echo "kernel.sem = 250 32000 100 999" >> /etc/sysctl.conf

      16、sysctl -p

      创建用户篇

      17、建用户 groupadd dbgrp >> useradd -g dbgrp -d /home/omm -m -s /bin/bash omm

      18、 chown omm /usr/local/data/

      chown omm /usr/local/data/single_node/

      19、su omm

      20、Cd /usr/local/simpleInstall

      21、sh install.sh  -w "nrxt@1234xxxx" &&source ~/.bashrc 注:nrxt@1234xxxx替换自己的

      22、如果之前没准备好,或者执行过上面这个命令可能遇到下面报错ERROR: the directory /usr/local/data/single_node must be dir and empty

      23、看英文名称就懂了吧清空一下

      24、在执行21,等待安装完成,行云流水,挥一挥衣袖不带走一片云彩。

      25、Waiting install

      26、最后很友好的提示你Would you like to create a demo database (yes/no)? yes

      Load demoDB [school,finance] success.

      27、看下数据库状态

      gs_ctl query -D /usr/local/data/single_node -Z single_node 

      Navicat和开发环境搭建篇

      28、用Navicat连接数据库,这里和posql一样改两个配置

      29、Vi postgresql.conf 找到下面俩个地方 可以/listen /password 看下,会sed,awk的大神这里忽略。

      listen_addresses = '改成你安装数据库的ip' # what IP address(es) to listen on;

      password_encryption_type = 0 #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only //这里改成0

      30  VI pg_hba.conf 这里加上你数据库主机的ip和要连数据库的主机ip

      # IPv4 local connections:

      host    all             all             127.0.0.1/32            trust

      host    all             all             192.168.229.129/32      md5(数据库服务器)

      host    all             all             192.168.229.1/32        md5(Navicat安装主机)

      31、改完配置文件要重启一下数据库 gs_ctl restart -D /usr/local/data/single_node

      31、gsql -d postgres -p 5432 用gsql连接数据库建个用户,授权

      32、openGauss=# create user nrxt with password "nrxt@1234" 出现以下提示

      NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.

      CREATE ROLE

      33、给用户授权:openGauss=# grant all privileges to nrxt 然后/q离开gsql控制台

      34、打开安装Navicat的主机,选择postgrelsql,

      35、

      36、

      37、这里建的表默认都是在public模式下,也可以通过语句自建模式,CREATE SCHEMA[<模式名>]AUTHORIZATION <用户名>

      38、配置一下maven pom.xml坐标,当然了也可以用官方jdbc的jar,通过

      mvn install:install-file -DgroupId=com.opengauss.XXXXX -DartifactId=opengauss-XXXXX -Dversion=0.4XXXXX -Dpackaging=jar -Dfile=/opengauss.jar 加入本地仓库,也可以直接引用postgresql的坐标,如下所示:

      org.postgresql
      postgresql
      42.2.14

      39、在mybatis配置文件配上你的数据库信息

      40、写个测试类,感受一下

      public class Brand {
      // id 主键
      private Integer id;
      // 品牌名称
      private String brandName;
      // 企业名称
      private String companyName;
      // 排序字段
      private Integer ordered;
      // 描述信息
      private String description;
      // 状态:0:禁用 1:启用
      private Integer status;} 实体对象,需加上get,set,toString方法

      41、来个BrandMapper 接口根据id查询

      public interface BrandMapper {

      /*** 查看详情:根据Id查询
      */
      Brand selectById(int id);

      }

      42、再来个BrandMapper.xml

      select *
      from brand
      where id =
      #{id};

      43、开始测试写个测试类

      public class openGaussTest {

      @Test
      public void testSelectById() throws IOException {
      //接收参数
      int id = 2;
      //1. 获取SqlSessionFactory
      String resource = "mybatis-config.xml";
      InputStream inputStream = Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      //2. 获取SqlSession对象
      SqlSession sqlSession = sqlSessionFactory.openSession();
      //3. 获取Mapper接口的代理对象
      BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
      //4. 执行方法
      Brand brand = brandMapper.selectById(id);
      System.out.println(brand);
      //5. 释放资源
      sqlSession.close();

      }
      }

      44、查看控制台输出

      [DEBUG] [main] o.a.i.t.j.JdbcTransaction - Setting autocommit to false on JDBC Connection [org.postgresql.jdbc.PgConnection@636be97c]
      [DEBUG] [main] c.i.m.B.selectById - ==> Preparing: select * from brand where id = ?;
      [DEBUG] [main] c.i.m.B.selectById - ==> Parameters: 2(Integer)
      [DEBUG] [main] c.i.m.B.selectById -

      相关文章

      Oracle如何使用授予和撤销权限的语法和示例
      Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
      下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
      社区版oceanbase安装
      Oracle 导出CSV工具-sqluldr2
      ETL数据集成丨快速将MySQL数据迁移至Doris数据库

      发布评论