写点什么

【KWDB 2025 创作者计划】_ 一文带你了解 KWDB 数据库

作者:KaiwuDB
  • 2025-06-27
    重庆
  • 本文字数:5633 字

    阅读完需:约 18 分钟

【KWDB 2025 创作者计划】_一文带你了解 KWDB 数据库

作者:少安事务所


原文链接:https://blog.itpub.net/31492144/viewspace-3086394/


在国产数据库蓬勃发展的浪潮中,KWDB 作为一款开源分布式多模数据库,凭借其出色的技术特性和广泛应用场景,逐渐崭露头角。今天,我将深入剖析 KWDB v2.2.0 的产品新特性以及实际应用体验,带你领略这款数据库的非凡魅力。


01 KWDB 介绍


1.1 KWDB 诞生


KWDB 是基于浪潮 KaiwuDB 2.0 开源的面向 AIoT 物联网场景的分布式多模数据库项目,目前由开放原子开源基金会孵化及运营。KWDB 支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。典型应用场景包括但不限于物联网、能源电力、交通车联网等,旨在为各行业领域提供一站式数据存储、管理与分析的基座,助力企业数智化建设,以更低的成本挖掘更大的数据价值。



1.2 KWDB 社区


KWDB 社区是一个开放、平等的数据库开源社区。KWDB 开源以来,先后获得“2024 OSCAR 尖峰开源项目及社区”、 “GVP — Gitee 最有价值开源项目”、“2024 年度数据库领域国内活跃开源项目”等荣誉,是《2024 中国开源年度报告》中唯一入选 “2024 全球新势力项目 OpenRank 排行榜 Top 10” 的中国项目。



1.3 KWDB 版本迭代


2024 年 8 月基于 KaiwuDB 2.0 开源,采用 MulanPSL2 许可证,至今已发布多个版本。


2024 年 11 月,KWDB v2.1.0 发版。新增分布式架构,支持单副本集群。支持在关系引擎下创建物化视图。新增支持 ThinkPHP、R2DBC、hsweb、ADO.NET 等多个框架协议。


2025 年 3 月,KWDB v2.2.0 发版。时序引擎的时间戳数据类型新增对微秒、纳秒级精度的支持。关系引擎新增对可重复读(Repeatable Read,RR)、读已提交(Read Committed,RC)隔离级别的支持。使用无模式写入方式创建库、表时,自动区分大小写。支持按照 OpenTSDB 的 telnet 行协议及 JSON 格式协议进行数据写入。



1.4 KWDB 核心能力


KWDB 提供 多模数据管理能力,支持不同数据模型的统一存储,助力企业跨部门、跨业务统一管理数据,实现多业务数据融合,支撑多样化的应用服务。KWDB 采用 行列混存架构,支持多种存储设备,并通过 Shared Nothing 架构及 Raft 协议实现高可用、多副本的数据存储,具备数据均衡与容错能力。融合多种数据计算引擎,根据不同数据特征选择存储与计算模式,提供统一接口及多种分析计算能力,提升查询效率。 自适应时序引擎支持复杂查询与多维聚合,查询性能优于传统关系数据库,且有 5-30 倍压缩能力,数据压缩后可直接使用。 事务处理引擎支持分布式事务和 MVCC,具备多种数据库功能。



KWDB 提供多种管理方式,配备可视化工具– KaiwuDB 开发者中心,兼容 EMQX、Kafka、Telegraf 等第三方工具。


02 KWDB 快速体验


KWDB 支持单节点裸机部署、单节点容器部署、单副本集群、多副本集群等多种部署形态。接下来,我将以单节点容器部署为例,带你快速上手体验 KWDB v2.2.0。



2.1 环境准备


准备实验环境,操作系统为 Rocky Linux 9。


[shawnyan@kwdb ~]$ hostnamectl Static hostname: kwdb.shawnyan.cnOperating System: Rocky Linux 9.5 (Blue Onyx)                 Kernel: Linux 5.14.0-503.34.1.el9_5.x86_64    Architecture: x86-64[shawnyan@kwdb ~]$
复制代码


从国内镜像站拉取 KWDB v2.2.0 容器镜像。


podman pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kwdb/kwdb:2.2.0
复制代码


查看镜像信息。


[shawnyan@kwdb ~]$ podman imagesREPOSITORY                                                    TAG         IMAGE ID      CREATED       SIZEswr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kwdb/kwdb  2.2.0       54712e6a5f83  2 months ago  264 MB
复制代码


2.2 安全模式部署


如需以安全模式部署 KWDB,需要先使用以下命令创建数据库证书颁发机构、 root 用户的客户端证书以及节点服务器证书。


podman run --rm --privileged \  -v /home/shawnyan/kaiwudb/certs:/kaiwudb/certs \  -w /kaiwudb/bin \  54712e6a5f83 \  bash -c './kwbase cert create-ca --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \            ./kwbase cert create-client root --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \            ./kwbase cert create-node 127.0.0.1 localhost 192.168.40.90 0.0.0.0 --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key'
复制代码


查看生成的证书。


[shawnyan@kwdb certs]$ lsca.crt  ca.key  client.root.crt  client.root.key  node.crt  node.key
复制代码


以 TLS 安全模式启动数据库实例。


podman run -d --privileged --name kwdb1 \-p 26257:26257 \-p 8080:8080 \-v /home/shawnyan/kaiwudb/certs:/kaiwudb/certs \-w /kaiwudb/bin \54712e6a5f83 \./kwbase start-single-node \  --certs-dir=/kaiwudb/certs \  --listen-addr=0.0.0.0:26257 \  --http-addr=0.0.0.0:8080 \  --store=/kaiwudb/deploy/kaiwudb-container
复制代码


查看容器状态,确认数据库已正常启动。


[shawnyan@kwdb ~]$ podman psCONTAINER ID  IMAGE                                                               COMMAND               CREATED        STATUS        PORTS                                             NAMESf1671a4653d3  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kwdb/kwdb:2.2.0  ./kwbase start-si...  2 minutes ago  Up 2 minutes  0.0.0.0:8080->8080/tcp, 0.0.0.0:26257->26257/tcp  kwdb1
复制代码


查看容器日志,确认数据库已成功初始化。


[shawnyan@kwdb ~]$ podman logs -f kwdb1** INFO: Replication was disabled for this cluster.* When/if adding nodes in the future, update zone configurations to increase the replication factor.*KWDB node starting at 2025-05-30 13:44:01.329674321 +0000 UTC (took 0.4s)build:                2.2.0 @ 2025/03/31 07:20:02 (go1.16.15)sql:                 postgresql://root@0.0.0.0:26257?sslcert=%2Fkaiwudb%2Fcerts%2Fclient.root.crt&sslkey=%2Fkaiwudb%2Fcerts%2Fclient.root.key&sslmode=verify-full&sslrootcert=%2Fkaiwudb%2Fcerts%2Fca.crtRPC client flags:    ./kwbase <client cmd> --host=0.0.0.0:26257 --certs-dir=/kaiwudb/certslogs:                /kaiwudb/deploy/kaiwudb-container/logstemp dir:            /kaiwudb/deploy/kaiwudb-container/kwbase-temp566787153external I/O path:   /kaiwudb/deploy/kaiwudb-container/externstore[0]:            path=/kaiwudb/deploy/kaiwudb-containerstorage engine:      rocksdbstatus:              initialized new clusterclusterID:           87eb4778-e0f4-4c89-8280-d87af3781218nodeID:              1
复制代码


连接数据库,创建数据库用户并赋予管理员权限。


[shawnyan@kwdb certs]$ podman exec -it kwdb1 ./kwbase sql --host=0.0.0.0:26257 --certs-dir=/kaiwudb/certs## 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: 87eb4778-e0f4-4c89-8280-d87af3781218## Enter \? for a brief introduction.#root@0.0.0.0:26257/defaultdb> create user shawnyan with password 'Kwdb@2025';CREATE USERTime: 75.764002msroot@0.0.0.0:26257/defaultdb> grant admin to shawnyan with admin option;GRANTTime: 57.586902ms
复制代码


2.3 可视化工具


KaiuwDB 开发者中心(KDC)是 KWDB 官方量身定制的可视化管理工具,用户可通过该工具更加直观地管理数据库,提升数据库运维的便利性和效率。


下载、安装 KDC,并使用该图形化工具连接到 KWDB。



03 KWDB v2.2.0 新特性品鉴


3.1 纳秒级精度的时间戳


KWDB 时序引擎的时间戳数据类型有 TIMESTAMP 和 TIMESTAMPTZ 两种,从 KWDB v2.2.0 版本开始,支持微秒、纳秒级精度。


创建带有数据类型为 TIMESTAMP(9) 的时序表。


CREATE TABLE t_time_series(ts TIMESTAMP(9) NOT NULL, -- 精度为纳秒value FLOAT) TAGS (sensor_id INT NOT NULL) PRIMARY TAGS (sensor_id);
复制代码


写入并查询数据。



time_bucket 函数可帮助你对任意时间段内的数据进行聚合计算。通常,它会与 GROUP BY 一起使用来实现这一目的。


SELECT time_bucket(ts, '1ns') AS bucketFROM t_time_seriesGROUP BY bucketORDER BY bucket ASC;
复制代码



3.2 无模式写入


无模式写入(Schemaless Writing) 是一种灵活的数据库写入方式,允许用户在未预定义数据结构或模式的情况下,直接将数据写入数据库。数据库会根据写入数据的格式和内容自动解析数据,在没有表的情况下自动建表并写入数据。


KWDB v2.2.0 新增支持按照 OpenTSDB 的 telnet 行协议及 JSON 格式协议进行数据写入;使用无模式写入方式创建库、表时,自动区分大小写。OpenTSDB Telnet 或 JSON 接口是 KWDB 开发的特殊 RESTful API 接口,用于将 OpenTSDB Telnet 或 JSON 格式的数据通过 HTTP 请求写入 KWDB 数据库。


下面使用 Postman 以 OpenTSDB Telnet 格式的数据向 KWDB 发送 POST 请求来完成数据写入。


http://192.168.40.90:8080/restapi/opentsdbtelnet?db=mytsdb请求体。


t_ts_postman 1748610835587000000 33 gid=333
复制代码



从 KDC 查看表数据。



下面使用 Postman 以 OpenTSDB JSON 格式的数据向 KWDB 发送 POST 请求来完成多行数据写入。


http://192.168.40.90:8080/restapi/opentsdbjson?db=mytsdb请求体。


[    {        "metric": "sys.cpu.nice",        "timestamp": 1346846400,        "value": 18,        "tags": {           "host": "web01",           "dc": "lga"        }    },    {        "metric": "sys.cpu.nice",        "timestamp": 1346846400,        "value": 9,        "tags": {           "host": "web02",           "dc": "lga"        }    }]
复制代码



从 KDC 查看表数据,确认数据已成功提交。



3.3 关系引擎事务隔离级别


在 KWDB 之前的版本中,关系引擎的事务隔离级别为序列化。从 KWDB v2.2.0 开始,新增支持可重复读(Repeatable Read,RR)、读已提交(Read Committed,RC)。用户可在 KDC 中进行修改集群配置。



应用修改后,在 SQL 编辑器执行语句 SHOW transaction_isolation; 验证。也可以在 KDC 的菜单中调整当前会话的事务隔离级别。



04 KWDB 跨模查询


KWDB 的跨模查询功能是其核心亮点之一,支持在时序数据和关系型数据之间进行联合查询与分析,无需数据迁移或转换即可实现多模数据的融合处理。KWDB 跨模查询支持对关系表和时序表进行关联查询、嵌套查询、联合查询。需要注意的是,时序数据不支持事务,因此,跨模查询也不支持语句的事务完整性。



4.1 典型应用场景


IoT 设备监控:关联设备元数据(关系表)与实时传感器数据(时序表),生成带设备属性的监控报表。


金融风控:结合交易记录(关系表)与市场行情(时序数据),分析异常交易模式。


能源管理:统计不同区域(关系表)的用电量(时序表),优化资源分配。


4.2 实践演示


KWDB 研发团队前段时间开源了一个示例项目 SampleDB,内附“智能电表模型”场景的样例数据,我们使用该数据集演示跨模查询。


分别导入关系库 rdb 数据和时序库 tsdb 数据。


[shawnyan@kwdb smart-meter]$ podman exec -it kwdb1 ./kwbase sql --host=0.0.0.0:26257 --certs-dir=/kaiwudb/certs  -e 'import database csv data ("nodelocal://1/rdb");'        job_id        |  status   | fraction_completed | rows | abandon_rows | reject_rows | note----------------------+-----------+--------------------+------+--------------+-------------+-------  1076606972086812673 | succeeded |                  1 |  305 | 0            | 0           | None(1 row)Time: 251.881287ms[shawnyan@kwdb smart-meter]$ podman exec -it kwdb1 ./kwbase sql --host=0.0.0.0:26257 --certs-dir=/kaiwudb/certs  -e 'import database csv data ("nodelocal://1/tsdb");'  job_id |  status   | fraction_completed | rows  | abandon_rows | reject_rows | note---------+-----------+--------------------+-------+--------------+-------------+-------  -      | succeeded |                  1 | 10100 | 0            | 0           | None(1 row)Time: 171.470089ms
复制代码


将电表基础信息表(普通表)、区域信息表(普通表)与实时用电数据表(时序表)关联查询。


select    a.area_name,    sum(md.energy) as total_energyfrom    tsdb.meter_data mdjoin rdb.meter_info mi on    md.meter_id = mi.meter_idjoin rdb.area_info a on    mi.area_id = a.area_idgroup by    a.area_nameorder by    total_energy desclimit 10;
复制代码


在 KDC 中运行该语句,并查看执行计划。



从 KWDB v2.2.0 开始, INSERT INTO SELECT 语句支持将跨模查询的结果写入时序表。



总结


KWDB 作为一款国产开源分布式多模数据库,在物联网、能源电力、交通车联网等 AIoT 场景中展现出巨大的应用潜力。其多模数据管理能力、行列混存架构、自适应时序引擎以及事务处理引擎等核心优势,为各行业提供了高效的数据存储、管理和分析解决方案。通过快速体验和新特性品鉴,我们了解到 KWDB 的易用性和灵活性,而跨模查询功能更是为复杂的数据分析场景提供了有力支持。随着国产基础软件的不断发展,KWDB 有望在数据库领域中占据更重要的地位,为企业的数智化转型、工业 4.0 提供坚实的支撑。


参考阅读 KaiwuDB 入选全球新势力榜单

如何编译安装 KWDB v2.0.4 数据库


发布于: 2025-06-27阅读数: 2
用户头像

KaiwuDB

关注

还未添加个人签名 2021-04-29 加入

KaiwuDB 是浪潮集团控股的数据库企业,公司汇聚了全球顶尖的数据库人才,以多模数据库为核心产品,面向工业物联网、数字能源、交通车联网、智慧产业等各大行业领域,提供领先创新的数据服务软件。

评论

发布
暂无评论
【KWDB 2025 创作者计划】_一文带你了解 KWDB 数据库_KaiwuDB_InfoQ写作社区