在制造业数字原生的OT数仓建设的补充章节,提到一个多值的模型,即把IoT数据归集为int,float,bool,string,由4个超级表分开存改为1个超级表统一存。
多超表模式:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE IF NOT EXISTS ot_int(ts timestamp, wts timestamp,v int, counter int,vquality int) TAGS (item binary(128));
CREATE TABLE IF NOT EXISTS ot_float(ts timestamp, wts timestamp,v float, counter int,vquality int) TAGS (item binary(128));
CREATE TABLE IF NOT EXISTS ot_string(ts timestamp, wts timestamp,v binary(128), counter int,vquality int) TAGS (item binary(128));
CREATE TABLE IF NOT EXISTS ot_bool(ts timestamp, wts timestamp,v bool, counter int,vquality int) TAGS (item binary(128));
单超级表模式:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE IF NOT EXISTS ot(ts timestamp, wts timestamp, vint int, vfloat float,vbool bool,vstring binary(128),counter int,vquality int) TAGS (item binary(128),vtype binary(16));
这里给出基于C#的测试的过程:
测试环境:
CentOS Linux release 8.4.2105
TDengine-server-2.4.0.14-Linux-x64
Visual Studio 2022
dotnet-sdk-5.0(CentOS Linux 8 不支持 .NET 6,安装指令:sudo dnf install dotnet-sdk-5.0)
默认参数安装
写入160千万数据(16亿),完成后验证写入情况。
存储占用情况
首先清空Taos
systemctl stop taosd
rm -rf /var/log/taos/*
rm -rf /var/lib/taos/*
systemctl start taosd
创建超级表,写入数据并验证。
通过结果可以看到,在新版的TDengine下,数据字段允许NULL(较早的版本不支持),多几个空的值字段对存储影响可以忽略不计。
代码托管地址:GitHub - PascalMing/PascalMingTaosStorageTest: TDengine存储验证