在物联网的场景下,大量设备以固定频率发送数据,比如一个监控工厂会每秒钟上报环境监控的数据,如果一共有100座工厂,每个工厂有1万个采集点,每年会产生158亿数据点,15PB级的数据存储量。
而传统的关系型的数据库架构,显然已经不适应物联网场景下,数据「高并发写入的需求」。传统的联合查询的方式,无法实现秒级返回亿级数据点的聚合结果,对业务的发展造成很大的瓶颈。如果采用开源时序数据库的方案,刨除优劣势分析,仅维护成本高、无SLA保证、无法保证交付质量,已经让人望而却步。
百度云时序数据库(TSDB)通过「高性能读写」、「低成本存储」、「支持15种数据聚合函数」、「支持Hardoop/Spark等大数据处理平台」、「接多种可视化工具」、「支持SQL」等优势,解决物联网场景下时序数据的存储问题。
时序数据库(Time Series Database,简称TSDB)是存储和管理时间序列数据的高性能数据库,为时间序列数据提供高性能读写、低成本存储、稳定可靠的数据库服务。
作为专门处理时间序列数据的数据库,TSDB对时间序列数据有特定的格式定义,学习和使用这些数据接口的用法就产生了学习成本。
那有没有一种更符合传统DBA的使用习惯的操作方法呢?
答案就是SQL生态:通过SQL的强大能力,用户即可以熟悉方便地对数据进行操作,也可以充分利用SQL函数的计算能力,挖掘数据价值。
举个栗子。一个智能电表监控的物联网集成方案,采集了智能电表的各个监控点的数据。在TSDB中如下图这样组织的,metric表示TSDB存的是智能电表的数据,每个电表有power和voltage两个域(监控项),用两个tag,meterID和city,来代表每个数据点来自哪个电表ID和城市。电表每5s中上传一次功率值和电流值。
应用场景一:要过滤功率值大于400、电流值小于5,电表ID为2345HDYE的数据
select timestamp, power, current, MeterID, City from SmartMeter where power > 400 and current
得到数据如下:
应用场景二:电表ID为2345HDYE中,返回每10秒的功率平均值
select time_bucket(timestamp, ’5 seconds‘) as TIME, avg(power) as AVG_POWER, current, City from SmartMeter group by time_bucket(timestamp, '5 seconds') order by time_bucket(timestamp, '5 seconds')
得到数据如下:
TSDB支持标准ANSI SQL语义,查询数据的体验与传统的SQL体验一样简洁明了,还可以利用SQL强大的计算函数能力。
领取专属 10元无门槛券
私享最新 技术干货