之前的章节中已介绍过 人大金仓 更名为 电科金仓,如果你对金仓数据库还不太了解,可以先看这篇文章,一文带你了解 KING BASE 金仓数据库

近日,在金仓社区中发布了一则声明,在后续新版本的产品文档中将启用公司新名称,年底将发布新版本。1

1: https://bbs.kingbase.com.cn/forumDetail?articleId=2d7e8a10411...

  • KingbaseES V9:版本号为V009R001C003
  • KingbaseES V8:版本号为V008R006C010
  • KADB:版本号为V003R002C002

金仓数据库 KingbaseES V009R001C001B0030 单机版安装指南

金仓数据库 KingbaseES V009R001C001B0030 版本的发布,不仅带来了一系列新特性,还进一步增强了与主流数据库的兼容性,为用户提供了更加高效、灵活的数据管理解决方案。本文将详细介绍如何在 OpenCloudOS 8.10 操作系统上安装KingbaseES V9,并探索其新特性。

环境准备

在开始安装之前,我们需要确保系统环境满足安装要求。

检查系统的基本信息:

[shawnyan@oc8 ~]$ hostnamectl
   Static hostname: oc8.shawnyan.cn
  Operating System: OpenCloudOS 8.10
            Kernel: Linux 5.4.119-20.0009.34
      Architecture: x86-64
[shawnyan@oc8 ~]$

检查磁盘空间,确保 /tmp 目录至少有10G的可用空间。

[shawnyan@oc8 ~]$ df -h /tmp
文件系统                          容量  已用  可用 已用% 挂载点
/dev/mapper/opencloudos_oc8-root   45G   15G   31G   32% /

如果空间不足,需要先释放足够的磁盘空间。

安装介质 💍

我们从金仓数据库的官方网站下载了 KingbaseES V9 的安装介质,下载地址为:

https://www.kingbase.com.cn/xzzx/index.htm

下载的安装文件为 KingbaseES_V009R001C001B0030_Lin64_install.iso,我们通过 MD5 校验确保文件的完整性:

[shawnyan@oc8 tmp]$ md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso
3adf56122ea7d407bc43138ab8b11f84  KingbaseES_V009R001C001B0030_Lin64_install.iso

创建挂载点,挂载镜像

[shawnyan@oc8 ~]$ sudo mkdir /mnt/cdrom
[shawnyan@oc8 ~]$ sudo mount -r KingbaseES_V009R001C001B0030_Lin64_install.iso /mnt/cdrom/

创建安装路径

[shawnyan@oc8 ~]$ sudo mkdir -p /opt/Kingbase/ES/V9
[shawnyan@oc8 ~]$ sudo chown -R shawnyan.shawnyan /opt/Kingbase/

安装 KES V9 单机版

进入挂载路径,执行安装脚本开始安装过程。

安装过程中,我们选择安装目录、数据文件夹、数据库端口、数据库管理员用户名、服务端字符集编码、区域和数据库兼容模式。

[shawnyan@oc8 ~]$ cd /mnt/cdrom/
[shawnyan@oc8 cdrom]$ ll
总用量 6
dr-xr-xr-x 2 root root 2048 5月  21 21:44 setup
-r-xr-xr-x 1 root root 3932 5月  21 21:44 setup.sh
[shawnyan@oc8 cdrom]$ ./setup.sh
Now launch installer...
Preparing to install
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
          Verifying JVM........
Launching installer...


Graphical installers are not supported by the VM. The console mode should be used instead...

===============================================================================
KingbaseES V9                                           (使用 InstallAnywhere 创建)
-------------------------------------------------------------------------------

正在准备控制台模式安装...
...
本安装程序将指导您完成 KingbaseES V9 的安装。

建议您在继续本次安装前,退出所有程序。
如果要回到前一屏幕进行更改,可输入“back”。

如果要取消本次安装,可随时输入“quit”。

KingbaseES Version: V9
Kingbase Type:BMJ-NO
Installer Version: V009R001C001B0030
Install DATE:202410181147

Kingbase Inc.
        http://www.kingbase.com.cn
...
选择安装目录
------

请选择一个安装目录。

您想在哪一位置安装?

  缺省安装文件夹: /opt/Kingbase/ES/V9
...
预安装摘要
-----

在继续执行前请检查以下信息:

产品名:
    KingbaseES V9

安装文件夹:
    /opt/Kingbase/ES/V9

产品功能部件:
    数据库服务器,
    接口,
    数据库部署工具,
    高可用组件,
    数据库开发管理工具,
    数据迁移工具

安装空间磁盘信息
    所需磁盘空间: 5378 MB           空闲磁盘空间: 34156 MB
...
选择存储数据的文件夹
----------

请选择一个文件夹,该文件夹必须为空。

Data folder (默认﹕ /opt/Kingbase/ES/V9/data):
...
数据库端口
-----

请输入数据库服务监听端口,默认54321。

端口 (默认﹕ 54321):
...
数据库管理员
------

请输入数据库管理员用户名。

User (默认﹕ system):
...
数据库服务字符集
--------

请输入服务端字符集编码。

    1- default
  ->2- UTF8
    3- GBK
    4- GB2312
    5- GB18030

输入您选择的号码,或按 <ENTER> 键以接受缺省值:
...
区域
--

请输入数据库区域。

    1- C
  ->2- zh_CN.UTF-8
    3- en_US.UTF-8
输入您选择的号码,或按 <ENTER> 键以接受缺省值: 3
...
数据库兼容模式
-------

请输入数据库兼容模式。

    1- PG
  ->2- ORACLE
    3- MySQL

输入您选择的号码,或按 <ENTER> 键以接受缺省值:
...
字符大小写敏感特性
---------

请输入字符大小写敏感特性。

  ->1- YES
    2- NO

输入您选择的号码,或按 <ENTER> 键以接受缺省值: 2
...
安装完成
----

恭喜!KingbaseES V9 已成功地安装到:

/opt/Kingbase/ES/V9

如果您需要将 KingbaseES V9 注册为系统服务,请运行

    /opt/Kingbase/ES/V9/install/script/root.sh

按 <ENTER> 键以退出安装程序:
Complete.

安装完成后,我们通过运行脚本将 KingbaseES V9 注册为系统服务

[shawnyan@oc8 cdrom]$ sudo /opt/Kingbase/ES/V9/install/script/root.sh
Starting KingbaseES V9:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V9 started successfully
[shawnyan@oc8 cdrom]$

连接 KES 数据库

设定用户环境变量,以便于我们连接到金仓数据库。

export KES_HOME=/opt/Kingbase/ES/V9
export PATH=$KES_HOME/ClientTools/bin:$PATH

连接数据库,查看版本信息,和数据库模式。

[shawnyan@oc8 ~]$ ksql -U system kingbase
Password for user system:
Type "help" for help.

kingbase=# select version();
                                                       version
----------------------------------------------------------------------------------------------------------------------
 KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)

kingbase=# select build_version();
 build_version
---------------
 4d805485349
(1 row)

kingbase=# show database_mode;
 database_mode
---------------
 oracle
(1 row)

kingbase=#

金仓数据库 KingbaseES V9R1C1B30 新增特性(SQL)

该版本持续完善 MySQL/Oracle 模式兼容,注重功能和可用性提升,分别对 MySQL/Oracle 模式下数据类型、函数、语句等方面进行兼容性优化,完善跨平台的数据迁移、操作和开发能力。

Oracle 兼容

  1. 数据类型
  • 完善序列的最值范围(maxvalue,minvalue,start,increment by), 支持取值范围为 -(10^27) ~ 10^28,实现 KingbaseES 序列值与 Oracle 序列值保持一致
  • 新增单精度浮点类型标识符(F或f)、双精度浮点类型标识符(D或d),方便用户操作和处理相关类型数据
  1. 函数
  • 兼容 NLS_UPPER、NLS_LOWER、NLS_INITCAP、TO_BLOB、TO_CLOB、WM_CONCAT、GET_HOST_ADDRESS、GET_HOST_NAME 等函数,减少用户迁移成本和风险
  1. 语句
  • 支持可省略 RECURSIVE 关键字进行递归查询,提高查询的可读性和开发效率
  • 支持物化视图和物化视图日志同时指定 WITH ROWID 来实现增量刷新,减少系统资源损耗,提升增量刷新的性能和效率
  • 为包(package)和 dblink 远程对象增加了创建同义词的功能,提升SQL语句的可读性,与客户应用无缝衔接
  • 完善 Pivot 语句中聚集函数的参数类型,支持表达式类型同Oracle用法一致
  • 新增多表 Join 视图的 DML(Insert、Update、Delete、with read only)操作,支持用户跨多个表的数据操作

Oracle 兼容(栗子)

新特性体验,举个栗子:

kingbase=# SELECT NLS_UPPER('große') "Uppercase", NLS_INITCAP('ijsland') "InitCap";
 Uppercase | InitCap
-----------+---------
 GROßE     | Ijsland
(1 row)

kingbase=# SELECT REPLACE (wm_concat('<br>• ' || 1 || ' ' || 2 || ' : '  || 3 || ' text'), ',', NULL) AS "Team";
        Team
--------------------
 <br>• 1 2 : 3 text
(1 row)

kingbase=# select utl_inaddr.GET_HOST_ADDRESS(), utl_inaddr.GET_HOST_NAME();
 GET_HOST_ADDRESS |  GET_HOST_NAME
------------------+-----------------
 192.168.43.80    | oc8.shawnyan.cn
(1 row)

MySQL 兼容

  1. 数据类型
  • 兼容二进制串 bit 类型,方便高效存储和处理二进制数据,节省存储空间,特定场景下,可提高数据库性能
  • 完善了 JSON 类型操作符,提升JSON文档数据导航和提取的灵活性
  • 完善自增列类型,新增 tinyint、smallint、mediumint、int 和 bigint 5 种整型自增列及 float 和 double 2 种浮点型自增列,简化插入操作,提升查询性能,增强了数据迁移和转换能力,支持用户无需修改数据类型,可无缝迁移现有数据库到 KingbaseES
  1. 函数
  • 新增函数 CHAR、DEFAULT、FIELD,完善 ANY_VALUE、CONVERT、GROUP_CONCAT、IFNULL、LAST_INSERT_ID、SUBSTR、SUBSTRING、VALUES 等相关函数,支持用户在不同的数据库平台上使用相同函数进行数据处理,提供跨平台的可移植性和一致性
  • 新增 JSON 相关函数,包括 JSON_VALUE、JSON_ARRAY、JSON_ARRAYAGG、JSON_OBJECT、JSON_OBJECTAGG、JSON_TABLE,简化 JSON 数据处理和查询,方便开发人员高效处理 JSON 数据
  1. 语法
  • 查询语句 order by 排序方式与 MySQL 一致,正序 NULL 值在前,倒序 NULL 值在后,方便进行数据处理和筛选
  • 支持多表关联删除语法,可同时对多个表中关联数据做删除操作,便于维护数据完整性,提升查询的性能和效率
  • 完善 CREATE TABLE LIKE 语句,支持将原表上所有的列名、数据类型以及非空约束复制到新表上,简化表的创建过程,避免重复定义表结构,提升了数据完整性和引用一致性
  • 支持 SELECT 语句中字段别名使用单引号,同时支持字段值/列名和别名之间省略 AS,提高了查询语句的兼容性
  • CREATE TABLE 语句中支持表内创建索引,同时表级索引支持 using 子句,简化查询语句,提高了查询性能
  • 查询语句中新增非注释型强制索引语法 USE/FORCE/IGNORE INDEX,通过在 SQL 查询中指定表扫描所采用的索引的方式,提高 SQL 查询的执行效率

MySQL 兼容(栗子)

重新安装 KES V9,兼容模式选择 MySQL。

数据库兼容模式
-------

请输入数据库兼容模式。

    1- PG
  ->2- ORACLE
    3- MySQL

输入您选择的号码,或按 <ENTER> 键以接受缺省值: 3

连接数据库查看数据库模式。

kingbase=# show database_mode;
 database_mode
---------------
 mysql
(1 row)

体验新特性,做一些测试。

kingbase=# create table t (a bigint auto_increment primary key, b bit, c char(1));
CREATE TABLE
kingbase=# \d t
                          Table "public.t"
 Column |       Type        | Collation | Nullable |    Default
--------+-------------------+-----------+----------+----------------
 a      | bigint            |           | not null | auto_increment
 b      | bit(1)            |           |          |
 c      | character(1 char) |           |          |
Indexes:
    "t_pkey" PRIMARY KEY, btree (a NULLS FIRST)

kingbase=# insert into t (a, c) values (1, 'a'), (2, 'b'), (3, null);
INSERT 0 3
kingbase=# table t;
 a | b | c
---+---+---
 1 |   | a
 2 |   | b
 3 |   |
(3 rows)

kingbase=# select * from t order by c;
 a | b | c
---+---+---
 3 |   |
 1 |   | a
 2 |   | b
(3 rows)

kingbase=# select * from t order by c desc;
 a | b | c
---+---+---
 2 |   | b
 1 |   | a
 3 |   |
(3 rows)

kingbase=# create table tt like t;
CREATE TABLE
kingbase=# \d+ t
                                              Table "public.t"
 Column |       Type        | Collation | Nullable |    Default     | Storage  | Stats target | Description
--------+-------------------+-----------+----------+----------------+----------+--------------+-------------
 a      | bigint            |           | not null | auto_increment | plain    |              |
 b      | bit(1)            |           |          |                | extended |              |
 c      | character(1 char) |           |          |                | extended |              |
Indexes:
    "t_pkey" PRIMARY KEY, btree (a NULLS FIRST)
Access method: heap

kingbase=# \d+ tt
                                             Table "public.tt"
 Column |       Type        | Collation | Nullable |    Default     | Storage  | Stats target | Description
--------+-------------------+-----------+----------+----------------+----------+--------------+-------------
 a      | bigint            |           | not null | auto_increment | plain    |              |
 b      | bit(1)            |           |          |                | extended |              |
 c      | character(1 char) |           |          |                | extended |              |
Indexes:
    "tt_pkey" PRIMARY KEY, btree (a NULLS FIRST)
Access method: heap

kingbase=#

通过这些测试,我们可以看到 KingbaseES V9R1C1B30 版本在提升兼容性和功能性方面所做的努力,为用户提供了更加强大的数据库管理系统。

活动推荐:金仓数据库产品体验官

https://bbs.kingbase.com.cn/forumDetail?articleId=e00b420939c...

Have a nice day ~


🌻 往期精彩 ▼


-- / END / --

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。

关注微信公众号:少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由mdnice多平台发布


  1. 1

严少安
6 声望3 粉丝

DBA