KaiwuDB 征文

容器赋能KaiwuDB:探索浪潮数据库KWDB2.2.0 实战指南

转载Caro图懒惰2026-04-14
0

本文转载自【KWDB创作者计划】征文大赛优秀作品

文章链接:【KWDB创作者计划】容器赋能KaiwuDB:探索浪潮数据库KWDB2.2.0 实战指南_ITPUB博客
作者:ShunWah

作者自述:在运维管理领域,我拥有多年深厚的专业积累,兼具坚实的理论基础与广泛的实践经验。精通运维自动化流程,对于OceanBase、MySQL等多种数据库的部署与运维,具备从初始部署到后期维护的全链条管理能力。拥有OceanBase的OBCA和OBCP认证、OpenGauss社区认证结业证书,以及崖山DBCA、亚信AntDBCA、翰高-HDCA、GBase 8a | 8c | 8s、Galaxybase的GBCA、Neo4j的Graph Data Science Certification、NebulaGraph的NGCI & NGCP、东方通TongTech TCPE等多项权威认证。在OceanBase & 墨天轮的技术征文大赛中,多次荣获一、二、三等奖。同时,在OpenGauss第五届、第六届、第七届技术征文大赛,TiDB社区专栏征文大赛,金仓数据库有奖征文活动,以及YashanDB「产品体验官」征文等活动中,我也屡获殊荣。此外,我还活跃于墨天轮、CSDN、ITPUB等技术平台,经常发布原创技术文章,并多次被首页推荐。

引言

浪潮数据库 KWDB 2.2.0:探索分布式多模数据库的创新之旅

在这个春暖花开的季节里,我有幸踏入了KWDB开源社区的怀抱,与一群有热情、有理想的开发者们共同探索分布式多模数据库的创新之道。作为开源数据库社区的新人,我深感荣幸能够试用 KWDB 2.2.0数据库,并通过这次试用与KWDB结缘,共同构建技术与创新的桥梁。

初识 KWDB:开源的力量

KWDB 是由开放原子开源基金会孵化及运营的开源项目,是一款面向 AIoT 场景的分布式多模数据库产品,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。

KWDB 为不同角色开发者提供以下支持(包括但不限于):

为开发者提供通用连接接口,具备高速写入、极速查询、SQL 支持、随需压缩、数据生命周期管理、集群部署等特性,与第三方工具无缝集成,降低开发及学习难度,提升开发使用效率。为运维管理人员提供快速安装部署、升级、迁移、监控等能力,降低数据库运维管理。

部署准备

为了更深入地了解 KWDB2.2.0,我迫不及待地从 Gitee 上查看了最新版的源码,并通过 docker 获取kwdb/kwdb:2.2.0 镜像开始了我的探索之旅。在用 docker 安装与配置 kwdb:2.2.0 的过程中,我深刻体会到了KWDB的易用性。通过简单的几步操作,我就能够成功部署一个KWDB实例,并开始进行各种数据库操作。
CPU 和内存 单节点配置建议不低于 4 核 8G。对于数据量大、复杂的工作负载、高并发和高性能场景,建议配置更高的 CPU 和内存资源以确保系统的高效运行。
本文以 x86 架构的 CentOS Linux 7.4 镜像作为环境介绍如何使用 obd 图形化界面部署 OceanBase 数据库。

[root@worker3 ob4-3]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@worker3 ob4-3]# free -h              total        used        free      shared  buff/cache   availableMem:            27G        676M         18G         41M        8.6G         26GSwap:          8.0G          0B        8.0G[root@worker3 ob4-3]#


# 一、单节点容器部署

本文介绍如何使用 YAML 文件或 KaiwuDB 容器安装包在单个节点上部署 KaiwuDB。使用 YAML(.yml)文件进行部署时,仅支持非安全模式,登录 KaiwuDB 数据库时需使用非安全连接模式。容器安装包部署支持安全模式和非安全模式。
如果目标机器尚未安装 Docker,请提前安装适合您操作系统的 Docker 容器。更多信息,参见 Docker 安装文档。

1.准备容器环境

1.1 检查docker
[root@worker3 ~]# docker versionClient: Docker Engine - Community Version:           19.03.8 API version:       1.40 Go version:        go1.12.17 Git commit:        afacb8b7f0 Built:             Wed Mar 11 01:22:56 2020 OS/Arch:           linux/amd64 Experimental:      falseServer: Docker Engine - Community Engine:  Version:          19.03.8  API version:      1.40 (minimum version 1.12)  Go version:       go1.12.17  Git commit:       afacb8b7f0  Built:            Wed Mar 11 01:30:32 2020  OS/Arch:          linux/amd64  Experimental:     false containerd:  Version:          v1.2.13  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429 runc:  Version:          1.0.0-rc10  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init:  Version:          0.18.0  GitCommit:        fec3683[root@worker3 ~]#


如果目标机器无法联网且未安装 Docker-compose,请采用二进制包安装 Docker-compose 。更多信息,参见 Docker-compose 安装文档和安装后说明。

1.2 检查docker-compose
[root@worker3 soft]# docker-compose versiondocker-compose version 1.28.6, build 5db8d86fdocker-py version: 4.4.4CPython version: 3.7.10OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019[root@worker3 soft]#

2. 获取容器镜像

KWDB 支持通过以下方式获取容器镜像:Docker 命令:执行 docker pull kwdb/kwdb:2.2.0 获取镜像。

2.1 docker pull 下载失败
[root@worker3 soft]# docker pull kwdb/kwdb:2.2.0Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

2.2 配置 Docker/DockerHub 国内镜像源/加速
[root@worker3 soft]# vim /etc/docker/daemon.json[root@worker3 soft]# {    "registry-mirrors": [        "https://docker.1ms.run",        "https://docker.xuanyuan.me"    ]}
2.3 重启docker
[root@worker3 soft]# systemctl daemon-reload[root@worker3 soft]# systemctl restart docker[root@worker3 soft]#

2.4 docker pull 再次拉取kwDB镜像
[root@worker3 soft]# docker pull kwdb/kwdb:2.2.02.2.0: Pulling from kwdb/kwdb9b857f539cb1: Pull complete 24fd278016bd: Pull complete e915a1b38e6a: Pull complete Digest: sha256:9dda946922a69557e20be9f1d99c504c467fba6351bb8af0a34fe42711cde73fStatus: Downloaded newer image for kwdb/kwdb:2.2.0docker.io/kwdb/kwdb:2.2.0[root@worker3 soft]#

3. 拉取成功后,查看镜像

[root@worker3 soft]# docker imagesREPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZEkwdb/kwdb                                                  2.2.0               54712e6a5f83        11 days ago         259MBcym1102/nginxwebui                                         latest              84ed89f8ea1b        8 months ago        163MBoceanbase/oceanbase-ce                                     latest              21865b1446f4        11 months ago       662MBmysql                                                      8.0.36              f5f171121fa3        12 months ago       603MBregistry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui   latest              5b57dac52b1a        22 months ago       146MBoceanbase/oceanbase-ce                                     <none>              13aacde96f5b        2 years ago         505MBjc21/nginx-proxy-manager                                   latest              1d0ce4696d69        3 years ago         868MBredis                                                      latest              7614ae9453d1        3 years ago         113MBportainer/portainer-ce                                     latest              0df02179156a        3 years ago         273MBmongo                                                      5.0.2               0bcbeb494bed        3 years ago         684MBprogrium/consul                                            latest              09ea64205e55        9 years ago         69.4MB[root@worker3 soft]#

4. docker-compose 部署 KWDB

部署 KWDB 时,系统将对配置文件、运行环境、硬件配置和软件依赖进行检查。如果相应硬件未能满足要求,系统将继续安装,并提示硬件规格不满足要求。如果软件依赖未能满足要求,系统将中止安装,并提供相应的提示信息。
在部署过程中,系统会自动生成相关日志。如果部署时出现错误,用户可以通过查看终端输出或 KWDB 安装目录中 log 目录里的日志文件,获取详细的错误信息。

4.1 使用 YAML 文件部署 KWDB

创建 docker-compose.yml 配置文件。

[root@worker3 data]# mkdir kaiwudb[root@worker3 data]# cd kaiwudb/[root@worker3 kaiwudb]# vim docker-compose.yml[root@worker3 kaiwudb]#


image 参数的取值必须是导入 KaiwuDB.tar 文件后获取的镜像名或拉取的镜像名。
配置文件示例:

version: '3.3'services:  kaiwudb-container:    image: "kwdb/kwdb:2.2.0"    container_name: kaiwudb-experience    hostname: kaiwudb-experience    ports:      - 8080:8080      - 26257:26257    ulimits:      memlock: -1    volumes:      - /dev:/dev    networks:       - default    restart: on-failure    ipc: shareable    privileged: true    environment:      - LD_LIBRARY_PATH=/kaiwudb/lib    tty: true    working_dir: /kaiwudb/bin    command:       - /bin/bash      - -c      - |        /kaiwudb/bin/kwbase start-single-node --insecure --listen-addr=0.0.0.0:26257 --advertise-addr=127.0.0.1:26257 --http-addr=0.0.0.0:8080 --store=/kaiwudb/deploy/kaiwudb

4.2 启动KWDB

初次docker-compose up带日志启动

[root@worker3 kaiwudb]# docker-compose up Creating network "kaiwudb_default" with the default driverCreating kaiwudb-experience ... doneAttaching to kaiwudb-experiencekaiwudb-experience   | *kaiwudb-experience   | * WARNING: RUNNING IN INSECURE MODE!kaiwudb-experience   | * kaiwudb-experience   | * - Your cluster is open for any client that can access 0.0.0.0.kaiwudb-experience   | * - Any user, even root, can log in without providing a password.kaiwudb-experience   | * - Any user, connecting as root, can read or write any data in your cluster.kaiwudb-experience   | * - There is no network encryption nor authentication, and thus no confidentiality.kaiwudb-experience   | * kaiwudb-experience   | * Check out how to secure your cluster on KWDB websitekaiwudb-experience   | *kaiwudb-experience   | *kaiwudb-experience   | * INFO: Replication was disabled for this cluster.kaiwudb-experience   | * When/if adding nodes in the future, update zone configurations to increase the replication factor.kaiwudb-experience   | *kaiwudb-experience   | KWDB node starting at 2025-04-11 08:25:30.345632043 +0000 UTC (took 0.3s)kaiwudb-experience   | build:                2.2.0 @ 2025/03/31 07:20:02 (go1.16.15)kaiwudb-experience   | sql:                 postgresql://root@127.0.0.1:26257?sslmode=disablekaiwudb-experience   | RPC client flags:    /kaiwudb/bin/kwbase <client cmd> --host=127.0.0.1:26257 --insecurekaiwudb-experience   | logs:                /kaiwudb/deploy/kaiwudb/logskaiwudb-experience   | temp dir:            /kaiwudb/deploy/kaiwudb/kwbase-temp064723318kaiwudb-experience   | external I/O path:   /kaiwudb/deploy/kaiwudb/externkaiwudb-experience   | store[0]:            path=/kaiwudb/deploy/kaiwudbkaiwudb-experience   | storage engine:      rocksdbkaiwudb-experience   | status:              initialized new clusterkaiwudb-experience   | clusterID:           b565096e-c243-4399-8aa0-6ec3ea6b77a5kaiwudb-experience   | nodeID:              1


运行以下命令,快速启动 KWDB 不带日志启动。docker-compose up -d

4.3 查看容器
[root@worker3 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES40305e626095        kwdb/kwdb:2.2.0     "/bin/bash -c '/kaiw…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:26257->26257/tcp                                 kaiwudb-experience596eb2a88f53        progrium/consul     "/bin/start -server …"   21 months ago       Up 14 minutes       53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp   consul[root@worker3 ~]#

4.4 进入容器
[root@worker3 ~]# docker exec -it kaiwudb-experience bashroot@kaiwudb-experience:/kaiwudb/bin# lsdf.sh  err_inject.sh  kwbase  query_kwbase_status.sh  query_status.sh  setup_cert_file.sh  utils.shroot@kaiwudb-experience:/kaiwudb/bin#

二、使用 kwbase CLI 工具连接 KaiwuDB

kwbase 是 KaiwuDB 提供的内置命令行工具。用户可以通过 kwbase 以安全模式(适用于生产环境)或非安全模式(适用于测试)连接 KaiwuDB,进行数据库操作和维护。

1. root 用户连接 KaiwuDB

root@kaiwudb-experience:/kaiwudb/bin# ./kwbase sql --insecure --host=127.0.0.1## Welcome to the KWDB SQL shell.# All statements must be terminated by a semicolon.# To exit, type: \q.## Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:02, go1.16.15, gcc 11.4.0) (same version as client)# Cluster ID: b565096e-c243-4399-8aa0-6ec3ea6b77a5## Enter \? for a brief introduction.#root@127.0.0.1:26257/defaultdb>

2. 创建普通用户

root@127.0.0.1:26257/defaultdb> CREATE USER user1;CREATE USERTime: 9.914786msroot@127.0.0.1:26257/defaultdb>


root 用户退出登录。

3. 新用户连接 KaiwuDB

./kwbase sql --insecure --host=127.0.0.1 -u user1

root@127.0.0.1:26257/defaultdb> exitroot@kaiwudb-experience:/kaiwudb/bin# ./kwbase sql --insecure --host=127.0.0.1 -u user1## Welcome to the KWDB SQL shell.# All statements must be terminated by a semicolon.# To exit, type: \q.## Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:02, go1.16.15, gcc 11.4.0) (same version as client)# Cluster ID: b565096e-c243-4399-8aa0-6ec3ea6b77a5## Enter \? for a brief introduction.#user1@127.0.0.1:26257/defaultdb>

三、时序数据库管理

在实操过程中,我尝试了各种数据库操作命令,包括创建数据库、表、索引,插入数据、查询数据等。其中,让我印象深刻的是KWDB对时序数据的处理能力。通过以下几个命令,我能够轻松地实现时序数据的存储与查询:

1. 创建数据库

root@127.0.0.1:26257/defaultdb> CREATE DATABASE my_tsdb;CREATE DATABASETime: 8.038233msroot@127.0.0.1:26257/defaultdb>

2. 查看数据库

root@127.0.0.1:26257/defaultdb> SHOW DATABASES;  database_name | engine_type----------------+--------------  defaultdb     | RELATIONAL  my_tsdb       | RELATIONAL  postgres      | RELATIONAL  system        | RELATIONAL(4 rows)Time: 2.146362msroot@127.0.0.1:26257/defaultdb>

3. 切换到目标数据库

root@127.0.0.1:26257/defaultdb> USE my_tsdb;SETTime: 635.856µsroot@127.0.0.1:26257/my_tsdb>

4. 创建普通表

root@127.0.0.1:26257/my_tsdb> CREATE TABLE my_ts_table (    time TIMESTAMPTZ NOT NULL,    value DOUBLE PRECISION NOT NULL);                           ->     time TIMESTAMPTZ NOT NULL,                           ->     value DOUBLE PRECISION NOT NULL                           -> );CREATE TABLETime: 6.631034msroot@127.0.0.1:26257/my_tsdb>

5. 为时间列创建索引

root@127.0.0.1:26257/my_tsdb> CREATE INDEX idx_my_ts_table_time ON my_ts_table (time);CREATE INDEXTime: 181.039591msroot@127.0.0.1:26257/my_tsdb>

6. 插入数据

INSERT INTO my_ts_table (time, value) VALUES(‘2025-04-01 00:00:00+00’, 10.5),(‘2025-04-01 01:00:00+00’, 11.2),(‘2025-04-01 02:00:00+00’, 12.8),(‘2025-04-02 00:00:00+00’, 13.4),(‘2025-04-02 01:00:00+00’, 14.1);

root@127.0.0.1:26257/my_tsdb> INSERT INTO my_ts_table (time, value) VALUES('2025-04-02 00:00:00+00', 13.4),('2025-04-02 01:00:00+00', 14.1);                           -> ('2025-04-01 00:00:00+00', 10.5),                           -> ('2025-04-01 01:00:00+00', 11.2),                           -> ('2025-04-01 02:00:00+00', 12.8),                           -> ('2025-04-02 00:00:00+00', 13.4),                           -> ('2025-04-02 01:00:00+00', 14.1);INSERT 5Time: 3.357929msroot@127.0.0.1:26257/my_tsdb>

7. 查询特定时间范围的数据

SELECT * FROM my_ts_tableWHERE time >= ‘2025-04-01 00:00:00+00’ AND time < ‘2025-04-02 00:00:00+00’ORDER BY time;

root@127.0.0.1:26257/my_tsdb> root@127.0.0.1:26257/my_tsdb> SELECT * FROM my_ts_tableORDER BY time;                           -> WHERE time >= '2025-04-01 00:00:00+00' AND time < '2025-04-02 00:00:00+00'                           -> ORDER BY time;            time            | value----------------------------+--------  2025-04-01 00:00:00+00:00 |  10.5  2025-04-01 01:00:00+00:00 |  11.2  2025-04-01 02:00:00+00:00 |  12.8(3 rows)Time: 2.196569msroot@127.0.0.1:26257/my_tsdb>

8. 查询时序数据

– 查询所有数据SELECT * FROM my_ts_table ORDER BY time;

root@127.0.0.1:26257/my_tsdb> SELECT * FROM my_ts_table ORDER BY time;            time            | value----------------------------+--------  2025-04-01 00:00:00+00:00 |  10.5  2025-04-01 01:00:00+00:00 |  11.2  2025-04-01 02:00:00+00:00 |  12.8  2025-04-02 00:00:00+00:00 |  13.4  2025-04-02 01:00:00+00:00 |  14.1(5 rows)Time: 1.21612msroot@127.0.0.1:26257/my_tsdb>

9. 查询特定时间范围的数据(例如 2025-04-01 的数据)

root@127.0.0.1:26257/my_tsdb> SELECT * FROM my_ts_tableORDER BY time;                           -> WHERE time >= '2025-04-01 00:00:00+00' AND time < '2025-04-02 00:00:00+00'                           -> ORDER BY time;            time            | value----------------------------+--------  2025-04-01 00:00:00+00:00 |  10.5  2025-04-01 01:00:00+00:00 |  11.2  2025-04-01 02:00:00+00:00 |  12.8(3 rows)Time: 2.196569ms

四、 关系型数据管理

KWDB2.2.0作为分布式多模数据库,支持多种数据模型。为体验这一特性,我创建了一个包含关系型数据的数据库实例。

1. 创建数据库

以下示例创建一个名为  db1 的关系数据库:

root@127.0.0.1:26257/my_tsdb> CREATE DATABASE db1;CREATE DATABASETime: 4.982239msroot@127.0.0.1:26257/my_tsdb>


2. 查看数据库
时序数据库和关系数据库的  engine_type 分别为  TIME SERIES 和  RELATIONAL。使用以下命令查看所有数据库:

root@127.0.0.1:26257/my_tsdb> SHOW DATABASES;  database_name | engine_type----------------+--------------  db1           | RELATIONAL  defaultdb     | RELATIONAL  my_tsdb       | RELATIONAL  postgres      | RELATIONAL  system        | RELATIONAL(5 rows)Time: 2.59214msroot@127.0.0.1:26257/my_tsdb>


3. 查看数据库的建库语句
SHOW CREATE DATABASE 语句用于查看创建数据库的 SQL 语句。目前,关系数据库只支持查看创建数据库时使用的数据库名称。

3.1 创建数据库  reldb1:
root@127.0.0.1:26257/my_tsdb> CREATE DATABASE reldb1 WITH ENCODING = 'UTF8';CREATE DATABASETime: 5.796565msroot@127.0.0.1:26257/my_tsdb>

3.2 查看已创建的  reldb1 数据库:
  root@127.0.0.1:26257/my_tsdb> SHOW CREATE DATABASE reldb1;  database_name |    create_statement----------------+-------------------------  reldb1        | CREATE DATABASE reldb1(1 row)Time: 2.150319msroot@127.0.0.1:26257/my_tsdb>


4. 切换数据库
以下示例将  db1 数据库设置为当前数据库:

root@127.0.0.1:26257/my_tsdb> USE db1;SETTime: 1.272966msroot@127.0.0.1:26257/db1>


5.修改数据库
KaiwuDB 支持修改数据库名称以及修改数据库区域配置。修改数据库名称:以下示例将  reldb1 数据库重命名为  relationaldb:

5.1 查看所有数据库:
root@127.0.0.1:26257/db1> SHOW DATABASES;  database_name | engine_type----------------+--------------  db1           | RELATIONAL  defaultdb     | RELATIONAL  my_tsdb       | RELATIONAL  postgres      | RELATIONAL  reldb1        | RELATIONAL  system        | RELATIONAL(6 rows)Time: 2.37597msroot@127.0.0.1:26257/db1>

5.2 重命名数据库:
root@127.0.0.1:26257/db1> ALTER DATABASE reldb1 RENAME TO relationaldb;RENAME DATABASETime: 5.403811msroot@127.0.0.1:26257/db1>

5.3 再次查看所有数据库:
root@127.0.0.1:26257/db1> SHOW DATABASES;  database_name | engine_type----------------+--------------  db1           | RELATIONAL  defaultdb     | RELATIONAL  my_tsdb       | RELATIONAL  postgres      | RELATIONAL  relationaldb  | RELATIONAL  system        | RELATIONAL(6 rows)Time: 2.712377msroot@127.0.0.1:26257/db1>


**6.修改数据库区域配置** 以下示例将  `my_tsdb` 数据库副本数改为 5,并将数据在垃圾回收前保留的时间改为 100000 秒:
6.1 修改数据库区域配置:
root@127.0.0.1:26257/db1> ALTER DATABASE my_tsdb CONFIGURE ZONE USING num_replicas = 5, gc.ttlseconds = 100000;CONFIGURE ZONE 1Time: 7.818099msroot@127.0.0.1:26257/db1>

6.2 查看数据库区域配置:
root@127.0.0.1:26257/db1> SHOW ZONE CONFIGURATION FOR DATABASE my_tsdb;       target      |               raw_config_sql-------------------+----------------------------------------------  DATABASE my_tsdb | ALTER DATABASE my_tsdb CONFIGURE ZONE USING                   |     range_min_bytes = 134217728,                   |     range_max_bytes = 536870912,                   |     gc.ttlseconds = 100000,                   |     num_replicas = 5,                   |     constraints = '[]',                   |     lease_preferences = '[]'(1 row)Time: 1.896908msroot@127.0.0.1:26257/db1>


7.删除数据库
DROP DATABASE 语句用于从 KaiwuDB 中删除数据库及其所有对象。删除成功后,所有用户针对目标数据库及其下全部模式及对象的所有权限均被删除。
示例:

7.1 查看  relationaldb 数据库中的关系表:
root@127.0.0.1:26257/db1> SHOW TABLES FROM my_tsdb;  table_name  | table_type--------------+-------------  my_ts_table | BASE TABLE  users       | BASE TABLE(2 rows)Time: 4.263235msroot@127.0.0.1:26257/db1>

7.2 删除  my_tsdb 数据库及其级联对象:
root@127.0.0.1:26257/db1> DROP DATABASE my_tsdb CASCADE;DROP DATABASETime: 63.143052msroot@127.0.0.1:26257/db1>

7.3 再次尝试查看  my_tsdb 数据库中的关系表:
root@127.0.0.1:26257/db1> SHOW TABLES FROM my_tsdb;ERROR: target database or schema does not existSQLSTATE: 3F000root@127.0.0.1:26257/db1>


输出错误信息:

ERROR: target database or schema does not exist

8. 使用  RESTRICT 关键字阻止删除非空数据库:
以下示例使用  RESTRICT 关键字阻止删除非空数据库  db1:

8.1 创建测试表
root@127.0.0.1:26257/db1> CREATE TABLE test_table (     id INT PRIMARY KEY,     name TEXT );CREATE TABLETime: 6.237899msroot@127.0.0.1:26257/db1>

8.2 插入测试数据
root@127.0.0.1:26257/db1> INSERT INTO test_table (id, name) VALUES (1, 'test');INSERT 1Time: 7.91633msroot@127.0.0.1:26257/db1>

8.3 查看  db1 数据库中的关系表:
root@127.0.0.1:26257/db1> SHOW TABLES FROM db1;  table_name | table_type-------------+-------------  test_table | BASE TABLE(1 row)Time: 4.053667msroot@127.0.0.1:26257/db1>

8.4 尝试删除  db1 数据库:
root@127.0.0.1:26257/db1> DROP DATABASE db1 RESTRICT;ERROR: database "db1" is not empty and RESTRICT was specifiedSQLSTATE: 2BP01root@127.0.0.1:26257/db1>

输出错误信息:

ERROR:  database "db1" is not empty and RESTRICT was specified


# 总结

本文详细介绍了如何在 KaiwuDB 中管理多模数据库,包括创建、查看、切换、修改和删除数据库的操作。通过这些功能,用户可以高效地管理数据库资源并满足不同场景下的需求。需要注意的是,在操作数据库时应谨慎处理,尤其是在删除非空数据库时,避免误删导致数据丢失。建议结合实际业务需求,合理规划数据库的设计与维护工作。

-- 坚持原创,转载请注明出处 --

评论(0)

Me