当前位置: 首页 > news >正文

【KWDB创作者计划】容器赋能KaiwuDB:探索浪潮数据库KWDB2.2.0 实战指南

作者: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.png

引言

浪潮数据库KWDB2.2.0:探索分布式多模数据库的创新之旅

在这个春暖花开的季节里,我有幸踏入了KWDB开源社区的怀抱,与一群有热情、有理想的开发者们共同探索分布式多模数据库的创新之道。作为开源数据库社区的新人,我深感荣幸能够试用 KWDB2.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   available
Mem:            27G        676M         18G         41M        8.6G         26G
Swap:          8.0G          0B        8.0G
[root@worker3 ob4-3]# 

image.png

一、单节点容器部署

本文介绍如何使用 YAML 文件或 KaiwuDB 容器安装包在单个节点上部署 KaiwuDB。使用 YAML(.yml)文件进行部署时,仅支持非安全模式,登录 KaiwuDB 数据库时需使用非安全连接模式。容器安装包部署支持安全模式和非安全模式。

如果目标机器尚未安装 Docker,请提前安装适合您操作系统的 Docker 容器。更多信息,参见 Docker 安装文档。

1.准备容器环境
1.1 检查docker
[root@worker3 ~]# docker version
Client: 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:      false

Server: 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 ~]# 

image.png

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

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

image.png

2. 获取容器镜像

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

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

image.png

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]# 

image.png

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

image.png

3. 拉取成功后,查看镜像
[root@worker3 soft]# docker images
REPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZE
kwdb/kwdb                                                  2.2.0               54712e6a5f83        11 days ago         259MB
cym1102/nginxwebui                                         latest              84ed89f8ea1b        8 months ago        163MB
oceanbase/oceanbase-ce                                     latest              21865b1446f4        11 months ago       662MB
mysql                                                      8.0.36              f5f171121fa3        12 months ago       603MB
registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui   latest              5b57dac52b1a        22 months ago       146MB
oceanbase/oceanbase-ce                                     <none>              13aacde96f5b        2 years ago         505MB
jc21/nginx-proxy-manager                                   latest              1d0ce4696d69        3 years ago         868MB
redis                                                      latest              7614ae9453d1        3 years ago         113MB
portainer/portainer-ce                                     latest              0df02179156a        3 years ago         273MB
mongo                                                      5.0.2               0bcbeb494bed        3 years ago         684MB
progrium/consul                                            latest              09ea64205e55        9 years ago         69.4MB
[root@worker3 soft]# 

image.png

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.png

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

image.png

4.2 启动KWDB

初次docker-compose up带日志启动

[root@worker3 kaiwudb]# docker-compose up 
Creating network "kaiwudb_default" with the default driver
Creating kaiwudb-experience ... done
Attaching to kaiwudb-experience
kaiwudb-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 website
kaiwudb-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=disable
kaiwudb-experience   | RPC client flags:    /kaiwudb/bin/kwbase <client cmd> --host=127.0.0.1:26257 --insecure
kaiwudb-experience   | logs:                /kaiwudb/deploy/kaiwudb/logs
kaiwudb-experience   | temp dir:            /kaiwudb/deploy/kaiwudb/kwbase-temp064723318
kaiwudb-experience   | external I/O path:   /kaiwudb/deploy/kaiwudb/extern
kaiwudb-experience   | store[0]:            path=/kaiwudb/deploy/kaiwudb
kaiwudb-experience   | storage engine:      rocksdb
kaiwudb-experience   | status:              initialized new cluster
kaiwudb-experience   | clusterID:           b565096e-c243-4399-8aa0-6ec3ea6b77a5
kaiwudb-experience   | nodeID:              1

image.png

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

4.3 查看容器
[root@worker3 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
40305e626095        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-experience
596eb2a88f53        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 ~]# 

image.png

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

image.png

二、使用 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> 

image.png

2. 创建普通用户。
root@127.0.0.1:26257/defaultdb> CREATE USER user1;
CREATE USER

Time: 9.914786ms

root@127.0.0.1:26257/defaultdb> 

image.png

root 用户退出登录。

3. 新用户连接 KaiwuDB。

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

root@127.0.0.1:26257/defaultdb> exit
root@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> 

image.png

三、时序数据库管理

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

1. 创建数据库
root@127.0.0.1:26257/defaultdb> CREATE DATABASE my_tsdb;
CREATE DATABASE

Time: 8.038233ms

root@127.0.0.1:26257/defaultdb> 

image.png

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.146362ms

root@127.0.0.1:26257/defaultdb> 

image.png

3. 切换到目标数据库
root@127.0.0.1:26257/defaultdb> USE my_tsdb;
SET

Time: 635.856µs

root@127.0.0.1:26257/my_tsdb> 

image.png

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 TABLE

Time: 6.631034ms

root@127.0.0.1:26257/my_tsdb> 

image.png

5. 为时间列创建索引
root@127.0.0.1:26257/my_tsdb> CREATE INDEX idx_my_ts_table_time ON my_ts_table (time);
CREATE INDEX

Time: 181.039591ms

root@127.0.0.1:26257/my_tsdb> 

image.png

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 5

Time: 3.357929ms

root@127.0.0.1:26257/my_tsdb> 

image.png

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

SELECT * FROM my_ts_table
WHERE 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_table
ORDER 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

root@127.0.0.1:26257/my_tsdb> 

image.png

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.21612ms

root@127.0.0.1:26257/my_tsdb> 

image.png

9. 查询特定时间范围的数据(例如 2025-04-01 的数据)
root@127.0.0.1:26257/my_tsdb> SELECT * FROM my_ts_table
ORDER 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

image.png

四、 关系型数据管理

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

1. 创建数据库

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

 

root@127.0.0.1:26257/my_tsdb> CREATE DATABASE db1; CREATE DATABASE Time: 4.982239ms root@127.0.0.1:26257/my_tsdb>

image.png

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.59214ms root@127.0.0.1:26257/my_tsdb>

image.png

3. 查看数据库的建库语句

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

3.1 创建数据库 reldb1
 

root@127.0.0.1:26257/my_tsdb> CREATE DATABASE reldb1 WITH ENCODING = 'UTF8'; CREATE DATABASE Time: 5.796565ms root@127.0.0.1:26257/my_tsdb>

image.png

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.150319ms root@127.0.0.1:26257/my_tsdb>

image.png

4. 切换数据库

以下示例将 db1 数据库设置为当前数据库:

 

root@127.0.0.1:26257/my_tsdb> USE db1; SET Time: 1.272966ms root@127.0.0.1:26257/db1>

image.png

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.37597ms root@127.0.0.1:26257/db1>

image.png

5.2 重命名数据库:
 

root@127.0.0.1:26257/db1> ALTER DATABASE reldb1 RENAME TO relationaldb; RENAME DATABASE Time: 5.403811ms root@127.0.0.1:26257/db1>

image.png

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.712377ms root@127.0.0.1:26257/db1>

image.png

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 1 Time: 7.818099ms root@127.0.0.1:26257/db1>

image.png

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.896908ms root@127.0.0.1:26257/db1>

image.png

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.263235ms root@127.0.0.1:26257/db1>

image.png

7.2 删除 my_tsdb 数据库及其级联对象:
 

root@127.0.0.1:26257/db1> DROP DATABASE my_tsdb CASCADE; DROP DATABASE Time: 63.143052ms root@127.0.0.1:26257/db1>

image.png

7.3 再次尝试查看 my_tsdb 数据库中的关系表:
 

root@127.0.0.1:26257/db1> SHOW TABLES FROM my_tsdb; ERROR: target database or schema does not exist SQLSTATE: 3F000 root@127.0.0.1:26257/db1>

image.png

输出错误信息:

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 TABLE

Time: 6.237899ms

root@127.0.0.1:26257/db1> 

image.png

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

Time: 7.91633ms

root@127.0.0.1:26257/db1> 

image.png

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.053667ms root@127.0.0.1:26257/db1>

image.png

8.4 尝试删除 db1 数据库:
 

root@127.0.0.1:26257/db1> DROP DATABASE db1 RESTRICT; ERROR: database "db1" is not empty and RESTRICT was specified SQLSTATE: 2BP01 root@127.0.0.1:26257/db1>

输出错误信息:

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

image.png


总结

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

---

—— 仅供参考。如果有更多具体的问题或需要进一步的帮助,请随时告知。

相关文章:

  • LLM做逻辑推理题-确定他们的民族
  • JS—大文件上传
  • AI与无人驾驶汽车:如何通过机器学习提升自动驾驶系统的安全性?
  • vs code Cline 编程接入Claude 3.7的经济方案,且保持原生接口能力
  • css 练习01
  • [dp12_回文子串] 最长回文子串 | 分割回文串 IV
  • Kotlin作用域函数
  • MyBatis-Plus笔记(下)
  • 龙虎榜——20250414
  • TLS协议四次握手原理详解,密钥套件采用DH密钥交换算法
  • Video Encoder:多模态大模型如何看懂视频
  • 【HFP】蓝牙 HFP 协议状态通知机制研究
  • 数据结构初阶:双向链表
  • 常见的 14 个 HTTP 状态码详解
  • MySQL函数
  • 鸿蒙开发-布局
  • CTF-SQL注入
  • Go:接口
  • 大风频繁,疾风气象大模型竞速:AI如何提前10天预测极端天气?
  • Spark SQL
  • 全国首家由司法行政部门赋码登记的商事调解组织落户上海
  • 对话地铁读书人|来自法学教授的科普:读书日也是版权日
  • 从高铁到住房:“富足议程”能否拯救美国的进步主义?
  • 工信部:加快推进6G技术研发等,前瞻布局和培育面向6G的应用产业生态
  • 中央宣传部原副部长张建春被提起公诉
  • 白宫称没接到中方电话,美媒:高估了关税对中国的影响力