国产化环境下开发流程

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 人大金仓数据库、中科方德操作系统

前言


随着我国计算机技术的发展,国产服务器、数据库产品也逐渐趋于成熟,作为政府行业,采用国内自主研发的服务器和数据库意义重大。北京市委已经率先采用国产化系统,相信不久的未来,政府行业将逐渐普及国产化系统和数据库。


然而,对于熟悉了Linux、MySQL或者Oracle的开发者或者运维来说,可能并不能很快的上手国产环境。而且关于国产系统和数据库的生态圈还不完善,有一些问题网上也查不到。本片文章就国内比较成熟的操作系统和数据库展开说明,以快速了解和上手国产化开发,并减少大家后续在国产化开发中的困难。下面会介绍中科方德操作系统人大金仓数据库


正文


中科方德操作系统

1.png

界面大概如上图,国产化环境开发的难点,一方面就是在于这个操作系统


整体命令行操作类似CentOS。为了安全起见,该系统做了很多方面的限制:


  • 由于禁止接入外网,所以安装部署只能通过RPM包或者Docker镜像的方式进行安装
  • 该系统需要通过光盘刻录的方式,进行上传RPM或者Docker镜像,为了信息安全,也就是只能往机器上拷贝文件而不能把文件拷贝下来
  • 不能通过命令后直接安装RPM软件,必须要通过类似软件管理图形化界面的方式进行安装,安装前必须填写软件的签名信息(比如联系人电话等信息、软件安装包本身的信息)
  • 不能直接在机器上执行直接拷贝进来的外来可执行文件。例如通过光盘拷贝的shell脚本、以及免安装的软件、以及通过编译安装的软件等都没有权限执行
  • 安装软件(例如数据库)等过程会缺少一些依赖库(C语言、C++的)。这些库文件一般也需要自行下载RPM包进行光盘刻录
  • Docker必须使用厂商提供的安装软件,制作镜像推荐使用CentOS8,否者启动容器会没有权限


中科方德最佳实践


对于环境的部署,直接通过RPM或者Docker镜像的方式


对于 MySQL、Redis、Nginx、Zookeeper、ElasticSearch 等软件、官网有提供对应的RPM包,推荐直接通过软件管理器RPM的方式进行安装


找不到RPM包,推荐使用Docker部署


Docker部署注意事项


需要找一台CentOS8系统的服务器,用来制作镜像


制作好的镜像,通过 docker save命令保存,并通过光盘刻录到中科方德机器,再通过load命令安装镜像

2.png

以上就是中科方德操作系统需要注意的点,剩下的就是要求使用者熟练掌握Linux


人大金仓数据库


人大金仓(KingbaseES)是北京人大金仓信息技术股份有限公司自主研制开发的关系型数据库。下面重点介绍一下人大金仓的常用的运维和开发技巧


1. 安装人大金仓


1.1. 人大金仓安装必须通过普通用户安装,这里创建了一个kingbase用户


useradd kingbase
passwd kingbase


1.2. 使用kingbase用户上传安装包,并进行解压


tar -zxvf KingbaseES_V008R003C002B0140_Lin64_install.tar.gz


1.3 执行setup.sh进行安装

3.png

1.4 选择安装集


默认是完全安装,即server和client全部安装


1.5 选择授权文件


安装过程必须指定厂商提供的授权文件,当然也可以自行到官网下载一个月试用版


1.6 选择安装文件夹


这里注意推荐使用默认文件夹,因为后面厂商提供的压测工具默认指定的是默认文件夹


1.7 大小写敏感


一般选择大小写不敏感,因为我们已有系统采用的数据大多是大小写不敏感的,根据自己目前的数据库进行选择


安装后的目录如下

4.png

进入Server文件夹,执行root.sh脚本即可启动数据库


2. 人大金仓操作


2.1. 启动与停止


systemctl start kingbase8d
systemctl stop kingbase8d


2.2. 登录


进入Server/bin目录下

5.png

执行如下命令登录


  • 其中SYSTEM为用户名
  • 密码为123456
  • TEST为数据库名


./ksql -USYSTEM-W123456-p54321 TEST


TEST为默认数据库,用于管理其他数据库


例如想查看当前机器kingbase总连接数,可以用以上命令进入TEST,执行


select connections(); //查看连接数
select * from SYS_STAT_ACTIVITY; //查看连接客户端


3. 开发方式


3.1 可以在安装目录下的Jdbc文件夹找到驱动jar包

6.png

3.2 然后在工程中集成jar包,测试连接


importjava.sql.Connection;
importjava.sql.DatabaseMetaData;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassTestConnection {
publicstaticvoidmain(String[] args) throwsSQLException, ClassNotFoundException {
Connectioncon;
Class.forName("com.kingbase8.Driver");
Stringurl="jdbc:kingbase8://127.0.0.1:54321/MYDB";
con=DriverManager.getConnection("jdbc:kingbase8://127.0.0.1:54321/TEST","SYSTEM","123456");
System.out.println(con.getClientInfo());
DatabaseMetaDatametaData=con.getMetaData();
StringdriverVersion=metaData.getDriverVersion();
System.out.println(driverVersion);
    }
}


3.3 图形化客户端使用


windows推荐使用官方工具,可以直接到官网下载安装,直接可以使用。操作跟Navicat差不多,官方工具支持很多功能如下:


  • SQL语句到导入导出
  • 数据迁移,将MySQL数据库迁移到人大金仓(需要使用人大金仓数据转换工具,同时连接MySQL,进行数据迁移操作)
  • 建表操作,推荐使用官方图形化工具


mac推荐使用DataGrip,需要手动集成驱动

7.png

3.4 SQL适配


已有MySQL系统,迁移到人大金仓SQL语句需要一些改造


  • 主要是函数适配
  • 剔除不支持的特殊符号
  • group by字段要跟查找字段保持一致


4. 人大金仓性能压测


4.1 定制化的sysbench使用


为了检测数据库性能,我们在中科方德机器上部署人大金仓和MySQL,并使用Sysbench进行数据库对比基准测试。


该sysbench由厂商定制,使用方式如下


//配置sysbench路径
exportPATH=`pwd`:$PATH//配置数据库lib路径
exportLD_LIBRARY_PATH=/home/v8.3-build/kliao/v8.2_with_history/postgres/release/lib
//生成数据
sysbench oltp_common --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000 prepare
//执行read_only
sysbench oltp_read_only  --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000--time=10--threads=8 run
//执行oltp_write_only
sysbench oltp_write_only  --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000--time=10--threads=8 run


4.2 压测指标与结果分析


我们在16核心 64G的中科方德机器上进行压测。使用sysbench分别生成5000w数据,分别对这两个库表进行只读压测。线程数设置为10、50、60、70、80、90、100、150、200、300、500、600、700、800等,每个并发压测三次,每次并发测试的时长为180S,同一并发压测结果取平均值进行分析


可以看到如下结果


  • 线程数在100以内,两者各项指标相当
  • 线程数大于100,且继续增加线程的过程中,相比MySQL,人大金仓TPS、QPS均有明显下降


8.png9.png10.png11.png

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 算法 安全
国密算法及简单使用
国密算法,即国家密码局认定的国产密码算法,主要用于保护国家关键信息基础设施和商业领域的加密通信和数据安全。根据 2019年10月26日第十三届全国人民代表大会常务委员会第十四次会议通过的《中华人民共和国密码法》,国家对密码实行分类管理,密码分为核心密码、普通密码和商用密码
2330 4
|
存储 SQL 安全
加密后的数据如何进行模糊查询?
在数据安全和隐私保护日益重要的今天,加密技术成为保护敏感数据的重要手段。然而,加密后的数据在存储和传输过程中虽然安全性得到了提升,但如何对这些数据进行高效查询,尤其是模糊查询,成为了一个挑战。本文将深入探讨如何在保证数据安全的前提下,实现加密数据的模糊查询功能。
2486 0
|
12月前
|
存储 人工智能 监控
一键部署 Dify + MCP Server,高效开发 AI 智能体应用
本文将着重介绍如何通过 SAE 快速搭建 Dify AI 研发平台,依托 Serverless 架构提供全托管、免运维的解决方案,高效开发 AI 智能体应用。
7036 65
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
人工智能 自然语言处理 API
Dify 接入通义万象指南
Dify Pipeline集成通义万象, 实现自动化图像生成流程,包含基础流程和完整代码实现。
3818 63
|
搜索推荐 关系型数据库 MySQL
基于自己的数据库构建基于LLM的专属知识库
基于自己的数据库构建基于LLM的专属知识库
795 2
|
12月前
|
机器学习/深度学习 JSON 监控
国内最大的MCP中文社区来了,4000多个服务等你体验
国内最大的MCP中文社区MCPServers来了!平台汇聚4000多个服务资源,涵盖娱乐、监控、云平台等多个领域,为开发者提供一站式技术支持。不仅有丰富的中文学习资料,还有详细的实战教程,如一键接入MCP天气服务等。MCPServers专注模块稳定性和实用性,经过99.99% SLA认证,是高效开发的理想选择。立即访问mcpservers.cn,开启你的开发之旅!
14025 16
|
Unix Linux 虚拟化
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
55350 16
VMware Workstation 17.6.2 发布下载,现在完全免费无论个人还是商业用途
|
人工智能 并行计算 程序员
【AI系统】SIMD & SIMT 与芯片架构
本文深入解析了SIMD(单指令多数据)与SIMT(单指令多线程)的计算本质及其在AI芯片中的应用,特别是NVIDIA CUDA如何实现这两种计算模式。SIMD通过单指令对多个数据进行操作,提高数据并行处理能力;而SIMT则在GPU上实现了多线程并行,每个线程独立执行相同指令,增强了灵活性和性能。文章详细探讨了两者的硬件结构、编程模型及硬件执行模型的区别与联系,为理解现代AI计算架构提供了理论基础。
3258 12