2022全新Vue.js2.5+cube-ui重构饿了么App(经典再升级)

#1

download:2022全新Vue.js2.5+cube-ui重构饿了么App(经典再升级)

为什么TDengine时间序列数据库在海量数据下不会卡死?

TDengine是一个高性能、分布式和SQL支持的时间序列数据库。

学习新知识无非是了解他是什么,他能解决什么痛点,如何快速上手。

功能介绍

他是一个高性能、分布式、支持SQL的时序数据库,这是他的功能。
此外,它还支持缓存、订阅和流式计算。有没有感觉到TDengine=Mysql+Redis+MQ+Stream?

使用场景

TDengine作为一个时序数据库,他的场景一定是针对那种时序场景的。说到计时,对应的就是我们的物联网设备。设备的数据上报是实时的,在物联网系统中少读多写。其中只有读写,基本没有删除和更新操作。比如我们在上报电表数据的时候,只会随着时间的增加,以叠加的方式推送数据。不可能说他需要修改一分钟前推送的数据。作为一个点米设备,他也不支持这个功能。
所以TDengine的使用场景是针对物联网、车联网、工业互联等场景的。或者是持续数据输出的场景,比如我们互联网系统中的日志管理。

目前我们公司的系统采集医院的数据,以采集设备的数据为基础,做出数据汇总报告。
我们有电表测量电流、电压、相位等数据;有水表测量水压、用水量等数据;还有空调采集设备测量空调出风口等数据;
而且在每一类设备中,会针对不同的地方设置多个设备分别进行测量。在TDengine中,每种类型对应一个稳定的表。同类型的设备,每个设备对应一个单独的表下稳定。

DeviceId对应于我们实际采集点之一的采集设备。时间戳是由TDengine指定的必填字段。
电流、电压、相位是设备测量的数据,分别表示电流、电压、相位等数据。
Location和groupId是设备的静态属性数据。location可以表示设备的工厂地址,groupId可以表示分组批次。简而言之,tag属性可以作为设备的描述功能。
TDengine为什么要这样设计?每个设备对应一个表。这样做的好处是每个设备的数据是连贯的,不受干扰的。
还有一点就是设备的采集频率是固定的,或者说设备的采集频率是一个定值,存放一段时间后可以预测。也方便我们汇总一段时间的数据统计。TDengine还提供了一些函数来帮助我们统计一段时间间隔(1S,500a)内的数据,从500ms开始。

为什么设备对应表?

在TDengine中,有几个关键术语【收藏数量】【标签】【收藏点】
所谓采集点就是我们的采集设备。一个物理设备可以配备多个采集设备。也很好理解。比如我们的空调设备,可能有收集电的收集装置,有收集风的收集装置。这些通过采集功能区分的采集设备TDengine可以理解为[采集点]
我们已经知道一个采集点实际上对应一个表,所以可以保证这个表只有一个写入口,所以TDengine不需要考虑事情。单入口性能大幅提升。
没有必要在一个收集点只收集一个数据。上面的电表采集电流、电压、相位三个数据,我们称之为【采集量】。
关于采集点,除了采集量是一个随着时间的推移而不断变化的属性,还有一些针对装备描述的属性是不会变化的。这些对应于TDegine中的[标签]。
因为另一个设备对应一个表,数据都是时效的,所以写数据的时候只需要追加就可以了。从这个角度也可以看出,TDengine的写性能会很高。
正如mysql是按页存储一样,TDengine是按块存储和读取的。因为物联网的特性,我们也关注一段时间内的数据。所以分块阅读也可以提高我们的命中率。比如用电量,我们不关注某个时刻用了多少分。我们更关心一天用了多少,一月用了多少。

这么彻底的分裂,那聚合呢?

大数据时代,数据库和表的划分是一种趋势。目前,数据库和表的划分技术正在不断迭代改进。TDengine的分表策略正好满足了数据库和分表的需求。结合TDengine的分布式特点。这是一种分库分表的做法。关于子数据库和子表,这里就不赘述了。
既然是一种子数据库、子表,那么查询时需要关联的时候应该怎么做?你不能让我加入。

医院的不同楼层有一套独立的采集设备。e代表电表。这时,如果我想看到医院一天的总用电量,我需要把e1-e3电表测得的所有数据汇总起来。

从e1选择*
联合所有
从e2选择*

复制代码

显然,这不是最好的办法。要知道这种代码是写在程序里的,一旦部署,就是静态代码。如果医院的电表坏了,有一天被换掉了,那么他的DeviceId就不一样了。对于我们的程序,新电表的查询记录丢失了。
那么如何解决呢?TDengine向我介绍了超级表的概念。超级表是针对同类型设备的描述性表结构。当我们添加新的子表时,我们也可以直接从模板中添加它们。

根据模板创建表格时,我们只需要填写标签数据。

使用米标签创建表TTT(" Nanjing . Lihe ",2);
复制代码
固定

好了,我们之前已经介绍了一些TDengine的理论上的东西,下面就来实践一下吧。我们必须安装它,然后才能操作它。官网推荐了当码头工人的方式。我这里也推荐用Docker安装,但是Docker真的没话说。在这里,我将演示安装包。
点击我下载。

sudo dpkg-I TD engine-server-2 . 4 . 0 . 18-Linux-x64 . deb
复制代码

请注意安装。如果是集群安装,需要一致地填写FQDN。

Suddpkg-r TD引擎#卸载
复制代码

我们关心的是cfg目录下TDengine的配置,这需要我们在安装时配置FQDN。如果设置好了后悔了,可以在cfg里找配置。
此外,数据文件夹存储数据表的信息和数据。
TDengine以系统的方式启动。关于服务的管理,我们需要以下命令。