概述
当清晨的第一缕阳光穿透云层,城市开始苏醒。地铁闸机吞吐着千万张面孔,共享单车在街头划出流动的轨迹,手机屏幕亮起的瞬间,外卖订单已精准抵达骑手终端。这些看似独立的场景背后,是每秒数亿次的数据交互在支撑着现代社会的运转,但是这些数据藏在背后,需要挖掘才能体现它的价值,而数据可视化就是其中展现价值的一种,数据可视化将数据转换为图表等图形表示,以便更快地理解复杂信息,这有助于分析和利益相关者识别趋势、异常值和模式,从而做出明智的决策并获得洞察。KaiwuDB通过其创新的多模架构,实现了对时序数据和关系型数据的统一存储与高效融合处理,为数据可视化提供了强大的底层支持
本次实战目标:
一是打通KaiwuDB多模数据的访问通道,统一数据可视化入口;二是构建设备运行实时监控仪表盘,支撑运维人员快速定位异常;三是生成设备运维效率分析报表,为管理决策提供数据支撑。
KaiwuDB
作为一款面向AIoT物联网场景的专业数据库产品,KaiwuDB的核心竞争力源于对场景需求的精准适配与技术创新。其采用分布式架构设计,实现多模数据融合处理,支持在同一实例中同时创建时序库和关系库,轻松打破不同类型数据的管理壁垒;性能上更是展现出强悍实力,可支撑千万级设备接入、百万级数据秒级写入及亿级数据秒级读取,完美匹配时序数据的高效处理需求。同时,稳定安全、高可用、易运维的产品特性,让其成为各行业一站式数据存储、管理与分析的可靠基座。而全新升级的KaiwuDB 3.0.0版本更实现全面进化,针对数据库对象管理、数据管理与查询、安全控制、分布式架构、运维监控等核心模块进行深度优化与能力增强,进一步夯实了在AIoT场景下的技术领先优势。

KWDB 适配多种场景,为开发者提供:
- 多种通用连接接口,具备高速写入、极速查询、SQL 支持、随需压缩、数据生命周期管理、集群部署等特性,与第三方工具无缝集成,降低开发及学习难度,提升开发使用效率。
- 快速安装部署、升级、迁移、监控等能力,提升数据库运维效率,降低数据库运维管理成本。
- 数据库可视化管理工具、时序数据库基准测试工具、监控指标模板等多种生态工具。
- MCP Server、AI 智能助手和 AI 智能体等多种 AI 赋能工具,帮助用户更高效、更智能的开发和维护 KWDB。
KaiwuDB 3.0升级特性全景一览

Apache Superset
Apache Superset 是一款由 Apache 软件基金会孵化并开源的企业级数据可视化与探索平台,专注于为数据分析师、业务人员提供便捷的自助式数据探索、可视化报表构建及数据洞察能力,Apache Superset基于Python开发,使用了Flask、Pandas、SQLAlchemy等组件
其核心优势包括:支持对接 MySQL、PostgreSQL、ClickHouse 等主流数据源,兼容多类型数据格式;提供丰富可视化组件(折线图、柱状图、热力图、仪表盘等),支持拖拽式快速搭建报表;具备细粒度权限管控、数据脱敏等企业级特性,适配团队协作场景。
广泛应用于业务监控、数据复盘、决策支撑等场景,凭借开源免费、易部署、高扩展性的特点,成为企业构建数据中台可视化层的热门选择。
可以看到apache superset支持的各种图表

本文通过kwdb的源码安装、Apache Superset安装,通过Apache Superset连接kaiwudb实现数据可视化分析,制作漂亮的图标来展示kaiwudb的数据
一、KaiwuDB安装
编译和安装
KWDB 支持用户根据需求选择二进制安装包、容器和源码安装 KWDB 数据库:
- 二进制安装包:支持单机和集群以及安全和非安全部署模式,更多信息见单节点部署和集群部署。
- 容器镜像:KWDB 提供了多种容器镜像下载渠道,用户可以根据当前网络环境选择合适的镜像,或者直接在 Release 页面下载对应版本的后缀为
-docker.tar.gz的压缩包解压并使用docker load < KaiwuDB.tar命令加载kaiwudb_install/packages中的镜像。- 官方仓库:
kwdb/kwdb - 国内镜像:
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kwdb/kwdb - Github 容器镜像:
ghcr.io/kwdb/kwdb
- 官方仓库:
- 源码:源码编译目前支持单节点非安全模式部署。
编译依赖与运行依赖篇幅问题可以参考官网文档:https://gitee.com/kwdb/kwdb
1、环境准备
本文以 x86 架构的 Ubuntu 22.04.5镜像作为环境,使用 源码编译方式部署 KWDB3.1.0 数据库,目前只有源码安装可以修改版本号后续介绍原因
banjin@banjin:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
banjin@banjin:~$ free -g
total used free shared buff/cache available
Mem: 9 1 0 0 8 8
Swap: 3 0 3
banjin@banjin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 991M 1.6M 990M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 96G 15G 77G 16% /
tmpfs 4.9G 16K 4.9G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 130M 1.7G 8% /boot
tmpfs 991M 4.0K 991M 1% /run/user/1000
banjin@banjin:~$

2、安装依赖
Ubuntu 22.04.5操作系统需要安装如下包可以顺利安装,别的系统或者版本可以参考官网编译依赖
#升级aptsudo apt updatesudo apt-get install dpkg-dev devscripts libssl-dev libprotobuf-dev liblzma-dev libncurses5-dev libprotoc-dev libgflags-dev protobuf-compiler liblz4-dev libtool libgeos-dev #升级libprotobuf-dev到最新版本apt install libprotobuf-dev#安装cmake和gosudo apt install cmakesudo snap install go --classic
3、创建用于存放项目代码的代码目录及设置环境变量
mkdir -p /home/go/src/gitee.comecho 'export GOPATH=/home/go' >> ~/.bashrc echo 'export GO111MODULE=off' >> ~/.bashrc source ~/.bashrc
4、代码下载
git clone https://gitee.com/kwdb/kwdb.git /home/go/src/gitee.com/kwbasedb #请勿修改目录路径中的 src/gitee.com/kwbasedb
cd /home/go/src/gitee.com/kwbasedb
git submodule update --init #适用于首次拉取代码
git submodule update --remote如无异常显示如下
[195214]banjin@banjin:~$ cd /home/banjin/kwdb/src/gitee.com/kwbasedb
[195219]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$ git submodule update --init
[195219]Submodule 'kwbase/c-deps' (https://gitee.com/kwdb/kw-cdeps.git) registered for path 'kwbase/c-deps'
[195219]Submodule 'kwbase/vendor' (https://gitee.com/kwdb/kw-vendor.git) registered for path 'kwbase/vendor'
[195219]Submodule 'kwdbts2/third_party' (https://gitee.com/kwdb/kw-third_party.git) registered for path 'kwdbts2/third_party'
[195219]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwbase/c-deps'...
[195229]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwbase/vendor'...
[195245]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwdbts2/third_party'...
[195254]Submodule path 'kwbase/c-deps': checked out 'b728c17e4840ee4eeb178fae50d1a87593c206fc'
[195255]Submodule path 'kwbase/vendor': checked out 'd63ad876f83bb3a0d561824349834aa8786cb9a9'
[195255]Submodule path 'kwdbts2/third_party': checked out '1a20721eb8e1695d7041a8abd830628f1e217b42'
[195317]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$
[195325]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$ git submodule update --remote
[195326]Submodule path 'kwbase/c-deps': checked out 'ff875020a5fa52b43c2f4290805506a898684634'5、修改数据库显示版本
kwdb虽然默认兼容postgresql,但是使用SQLAlchemy+psycopg2连接报错,获取不了版本号,所以我们修改下源码的版本显示,加上postgresql的兼容版本,如下

vi /home/go/src/gitee.com/kwbasedb/kwbase/pkg/build/info.go修改数据库添加postgres xxx,后面要加上空格

6、编译与安装
vmkdir build && cd build/
cmake ..
make
make install
如无异常显示如下
banjin@banjin:/home/go/src/gitee.com/kwbasedb/build$ make install [ 4%] Built target snappy [ 7%] Built target brpc Consolidate compiler generated dependencies of target kwdbts2 [ 88%] Built target kwdbts2 Consolidate compiler generated dependencies of target common [ 98%] Built target common [ 98%] ====== compile kwbase ====== Running make with -j4 GOPATH set to /home/go Running make with -j4 GOPATH set to /home/go gitee.com/kwbasedb/kwbase/pkg/cmd/kwbase [ 98%] Built target kwbase Consolidate compiler generated dependencies of target gtest [100%] Built target gtest Install the project... -- Install configuration: "Debug" -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/df.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/err_inject.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/query_kwbase_status.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/query_status.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/setup_cert_file.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/utils.sh -- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/kwbase -- Installing: /home/go/src/gitee.com/kwbasedb/install/lib/libcommon.so-- Installing: /home/go/src/gitee.com/kwbasedb/install/lib/libkwdbts2.so
7、启动数据库
#进入脚本所在目录cd /home/go/src/gitee.com/kwbasedb/install/bin#设置共享库的搜索路径。export LD_LIBRARY_PATH=../lib#启动数据库./kwbase start-single-node --insecure --listen-addr=:26257 --background

8、连接数据库查看版本
#在bin目录下连接数据库
./kwbase sql --insecure
可以看到数据库版本信息已有postgresql的兼容信息,这样获取数据库版本信息是就可以取到postgresql的版本信息了

二、数据准备
SampleDB 是一个用于展示示例数据与场景的项目。其核心目标是助力用户快速掌握 KWDB 数据库的使用方法,为用户提供便捷的测试与学习环境,SampleDB数据库模型是一个智能电表项目,包含关系库rdb和时序库tsdb
下载地址:https://gitee.com/kwdb/sampledb/repository/archive/master.zip
#下载
wget https://gitee.com/kwdb/sampledb/repository/archive/master.zip
unzip master.zip
cd sampledb-master/smart-meter/extern
#在数据库数据目录创建extern目录,将rdb.tar.gz和tsdb.tar.gz移动到extern目录下,并解压
mkdir -p /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern
mv rdb.tar.gz tsdb.tar.gz /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern
cd /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern
tar xvf rdb.tar.gz
tar xvf tsdb.tar.gz
导入 数据
/home/go/src/gitee.com/kwbasedb/install/bin/kwbase sql --insecure
#导入关系库 rdb 数据
import database csv data ("nodelocal://1/rdb");
root@:26257/defaultdb> import database csv data ("nodelocal://1/rdb");
job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
----------------------+-----------+--------------------+------+--------------+-------------+-------
1126123866200244225 | succeeded | 1 | 305 | 0 | 0 | None
(1 row)
Time: 188.877678ms#导入时序库 tsdb 数据
root@:26257/rdb> 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: 269.5762ms
三、Apache Superset部署
1、安装基本库依赖
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev libpq-dev python3.10-venv
sudo apt-get install postgresql postgresql-devel python-devel python3-devel python3.10-venv #解决安装psycopg2时报错
2、安装使用python虚拟环境
安装时用虚拟环境进行Superset安装,先下载虚拟环境,然后创建和激活虚拟环境,在虚拟环境中以避免与其他Python版本冲突,一旦激活Python虚拟环境,安装或删除的任何Python包都将保留在该环境中,并且不会影响本地Python设置。
pip install virtualenv -i https://repo.huaweicloud.com/repository/pypi/simple/
python3 -m venv venv
source venv/bin/activate
退出虚拟环境可以使用
deactivate
3、升级虚拟环境pip
在虚拟环境中,pip 是管理 Python 包的重要工具。如果 pip 版本过旧,可能会在处理依赖关系时出现问题,导致依赖项错误。所以,为了确保虚拟环境中的项目能够顺利运行,不出现依赖项相关的错误,我们需要对虚拟环境中的 pip 版本进行升级
pip install --upgrade pip -i https://repo.huaweicloud.com/repository/pypi/simple/
4、安装apache-superset和其他支持库
pip install apache-superset -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install Pillow -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install psycopg2 -i https://repo.huaweicloud.com/repository/pypi/simple/pip install Flask-Limiter==3.1 -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install marshmallow==3.26.1 -i https://repo.huaweicloud.com/repository/pypi/simple/
5、设置FLASK_APP与SUPERSET_SECRET_KEY
为部署 Apache Superset(其 Web 服务基于轻量级 Python Web 框架 Flask 构建),需先配置核心环境变量,设置FLASK_APP与SUPERSET_SECRET_KEY,SECRET_KEY 加密和签名:SECRET_KEY用于对敏感数据(如会话、cookie、CSRF令牌)进行加密和签名,防止数据被篡改,确保应用的安全性,防止跨站请求伪造(CSRF)攻击和会话劫持等安全问题。
#生成 SECRET_KEY
openssl rand -base64 42
#将上面生成的SECRET_KEY填如mysecretkey
export SUPERSET_SECRET_KEY="mysecretkey"
export FLASK_APP=superset
6、superset 初始化
创建一个管理员用户以访问Superset仪表板(使用
admin作为用户名才能加载示例)。superset fab create-admin
#初始化数据库
superset db upgrade
#加载例子数据,(可选)
superset load_examples #国内登录git比较慢,可以在/etc/hosts里添加 151.101.64.133 raw.githubusercontent.com
#初始化
superset init



至此数据库与superset的准备工作全部完成,下面可以开始通过Apache Superset连接kaiwudb实现数据可视化分析实时展示数据了
7、启动Apache Superset
superset run -p 8500 -h 0.0.0.0 --with-threads --reload --debugger
使用管理员凭据访问Superset仪表板:
http://<PUBLICIP>:<PORT>
在浏览器访问然后就可以看到以下主页,输入上面步骤superset 初始化时创建的用户密码

四、Apache Superset连接kaiwudb实现数据可视化分析
1、创建数据库连接
点击右上角的settings然后选择databaseconnectsions,打开创建数据库连接界面

kwdb是兼容pg的,我们连接直接选择postgresql就可以

填入数据库信息,因为源码安装的只支持非安全模式部署,所以密码填写为空即可,输入自定义的连接名称点击connct连接,至此数据库连接创建完成

2、创建datasets
数据集(Dataset)是Superset中连接原始数据与可视化图表的桥梁,它定义了数据的结构、类型及关联关系。在Superset的架构中,数据集管理模块通过清晰的数据模型和灵活的配置选项,支持用户快速接入各类数据源并进行标准化处理。在这里我们使用sql来定义dataset,更好的发挥出kwdb多模的能力
点击sql》sqllab,打开sqllab,类似于一个数据库的查询窗口

选择我们要连接的数据库连接

输入要要展示数据的sql,然后创建,dataset
查询区域用电量TOP10
SELECT a.area_name, SUM(md.energy) AS total_energy FROM tsdb.meter_data md JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id JOIN rdb.area_info a ON mi.area_id = a.area_id GROUP BY a.area_name ORDER BY total_energy DESC LIMIT 10;

保存后选择自己数据展现的方式,想用那种可视化图标更能可视化的贴近的展现


设置好以后点击保存

注意: 即使我们有可用于查询的原始数据,Superset也需要聚合。解决方法是进行无意义的聚合,就像我们上面所做的那样,即SUM(Revenue)。您可以在Stack Overflow上了解更多信息,或访问此Apache Superset GitHub页面。
同理设置区域用电量统计与告警检测查询的datasets
创建区域用电量统计datasets
SELECT a.region, a.area_name, SUM(md.energy) AS total_energy, AVG(md.power) AS avg_power FROM tsdb.meter_data md JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id JOIN rdb.area_info a ON mi.area_id = a.area_id GROUP BY a.region, a.area_name;

创建告警检测查询datasets
SELECT md.meter_id, md.ts, ar.rule_name, md.voltage, md.current, md.power FROM tsdb.meter_data md JOIN rdb.alarm_rules ar ON 1=1 WHERE (ar.metric = 'voltage' AND ((ar.operator = '>' AND md.voltage < ar.threshold) OR (ar.operator = '<' AND md.voltage > ar.threshold))) OR (ar.metric = 'current' AND md.current > ar.threshold) OR (ar.metric = 'power' AND md.power > ar.threshold) ORDER BY md.ts DESC LIMIT 100;

3、创建Dashboards
创建好datasets后接下来创建dashboard来展现图表,在首页点击+dashboard打开新的dashboard创建页面

设置要显示的名称,拖动创建的dataset到dashboard页面,可以拖动调整大小

上面的配置完成后,下面可以看下最终展示了,这里可以看到在Superset与kaiwudb的结合下数据直观起来

至此全部完成,放上一张superset测试数据的图表,在你的业务里Superset与kaiwudb肯定可以碰撞出更多火花

一些总结:
在使用中如果有一些实时的如最近一小时用电量统计,可以直接在sql里添加上动态时间范围,例如SELECT * FROM your_table_name WHERE time > now() - interval '1h';,然后配合上superset定时刷新,自定义双薪间隔可以实时实现数据战舰

问题:
kwdb默认支持postgresql连接方式,支持户通过 Psycopg 2 连接数据库,但是数据库版本号里默认获取不到postgresql版本,倒是superset连接不上,源码编译需要调整版本号,可以修改src/gitee.com/kwbasedb/kwbase/pkg/build/info.go文件,然后在编译安装,建议官方可以提供修改版本号的参数或者方式
五、总结
Apache Superset与KaiwuDB的组合,构建了“高效数据存储-灵活可视化分析”的全链路解决方案:KaiwuDB以分布式多模架构解决AIoT场景的海量数据存储与实时处理难题,Superset以低代码、高灵活的可视化能力让数据洞察更高效。后续可进一步探索两者的深度融合——利用KaiwuDB 3.0.0的原生AI能力进行数据预处理,再通过Superset展示AI分析结果,实现“数据存储-智能分析-可视化呈现”的一体化落地,为工业物联网、数字能源等领域的数智化升级提供更强大的支撑。
作为一款面向AIoT场景的国产分布式多模数据库,KaiwuDB的核心价值从不在于简单的技术堆砌,而在于对行业需求的精准洞察与极致适配。它打破了时序数据与关系数据的管理壁垒,以“一库多用”的创新架构简化技术栈;凭借百万级秒级写入、毫秒级查询的性能表现,征服高并发业务场景;更以云边端协同能力,实现从嵌入式设备到云端集群的全场景覆盖。从某重工集团借助它将设备综合效率提升18%,到智能电网项目依托它筑牢安全运行防线,再到车联网平台通过它实现精准故障预警,KaiwuDB早已不是实验室里的技术概念,而是扎根产业实践、创造真实价值的数字底座。




