物联网存储功能介绍
随着物联网技术的快速发展,物联网已广泛应用于制造业、能源、建筑、医疗、交通、物流仓储等多个领域,物联网的应用能够有效节约资源、提高效率、保障安全以及降低成本,帮助各行业实现可持续发展目标。
在物联网场景中根据数据特点进行分类,数据主要包括设备元数据、设备消息数据和设备时序数据三种类型,不同类型数据的存储需求不同。物联网场景中不同类型数据的存储核心需求如下:
-
设备元数据:主要数据为设备的标识、属性和状态数据,具有高频更新、查询能力要求高等特点,可用于设备管理、设备圈选、设备状态查询,需要支持高并发低延迟的数据更新、多维度检索、地理空间检索以及数据实时计算与分析。
-
设备消息数据:主要数据为设备事件上报消息、平台控制指令下发消息和消息推送,具有消息有序性、消息队列多等特点,需要使用消息队列模型存储,并且支持消息保序、大量队列数以及低成本海量数据存储。
-
设备时序数据:主要数据为传感器采集数据、设备监控数据和设备轨迹数据,具有极少更新、数据规模大等特点,需要使用时序模型存储,并且支持高并发写入、低成本海量数据存储以及灵活的查询分析能力。
针对海量的设备消息,时序数据等场景,为了进一步降低用户的存储成本,提升数据分析能力,我们全面升级我们的物联网存储,支持分析存储能力!
分析存储介绍
低成本分析存储介绍
分析存储是独立的低成本存储引擎,存储引擎是针对时序场景定制和优化。分析存储可以实现低成本高压缩率存储之外,还能提供丰富的查询和分析能力。分析存储是独立于主存储存在的,可以和主存储有着不同的生命周期 TTL。分析存储的查询不会影响线上主存储的读写。下面我们就重点介绍下分析存储的技术原理和架构。
分析存储的技术原理和架构
列存储介绍
在现代数据库中,存储引擎通常有两种选项,一种是行存储,另一种则是列存储。这两种存储引擎都有自己擅长的场景,其主要区别在于数据的存储和检索方式不同。
行存储是指将一整行数据作为一个单元存储,包括行内所有的列。当需要进行查询或者分析时,需要读取整行数据,然后再根据需要的列进行筛选、排序等操作。这种存储方式适用于交易型系统和事务型数据库,例如:电子商务网站、银行系统、ERP系统等等。
列存储则是将每一个列的数据分别存储在不同的物理位置中,每个列单独进行压缩和编码。当需要进行查询或者分析时,可以只读取需要的列,避免了读取不必要的数据,从而提高了查询效率和数据处理速度。这种存储方式适用于时序分析场景,例如自动驾驶汽车车联网,云服务数据监控与分析等。
相比于传统的行存储方式,在时序场景采用列存储方式有以下两点优势:
-
高效的数据压缩:时序数据通常由机器产生,数据量远大于非时序场景,对数据压缩性能要求高。相比于行存储,列存储可以更好地利用数据重复性,结合 RLE、DICTIONARY、DELTA、BIT-PACKING等方法进行压缩编码 ,将数据进行压缩,存储空间利用率高,相比于行存储极大节省了存储成本。
-
快速的数据聚合计算分析: 时序数据的分析和聚合计算通常需要对一段连续时间内的一列或多列数据进行操作,在采用传统的行存储方式时,需要读取每一行数据并按列筛选需要的数据,当数据表的列很多但实际读取的列较少时,会产生很大的额外开销。相比之下,采用列存储方式只需要按列读取需要的数据,读取数据量少,从而减少了IO开销。同时,列存储方式可以批量读取数据,减少了火山模型中虚函数调用的次数,提高了数据局部性和cache命中率,进一步提升了性能。此外,列存储方式还可以结合CPU向量化技术,进行高效的向量化计算,从而更加有效地提高计算性能。综上,采用列存储方式可以显著提高时序数据的分析和聚合计算效率,尤其是在时序场景下,更加具有优势。
分析存储的功能
海量数据的实时分析
介绍了分析存储的一些基础知识后,我们来看一下 Tablestore 是如何实现分析存储的。
-
冷热数据分层存储,采用不同的存储格式
-
针对时序的热数据,我们复用了表格存储之前的行列混合的宽表存储。可以提供海量数据的实时自增写,覆盖和查询。
-
针对时序全量历史数据,我们采用列存储,并可以提供不同存储介质的存储包括 SSD,HDD 和 OSS。
-
独立的面向海量冷数据存储优化的 AP 分析执行引擎。
-
灵活分层的 TTL 设置,在同一个表上,主存储和分析存储可以采用不同的生命周期。
如下图,深橙标出的就是我们针对分析存储新添加的存储和查询分析模块。
有了分析存储和分布式的计算引擎,物联网分析存储可以提供单 SQL 百亿数据的实时分析能力!
低成本的数据存储
以车联网时序场景数据为例,数据每行大约 200 byte,包括车辆ID、里程、速度、温度、发动机状态参数等采集指标。
原始数据生成 500w 行,大小为 975 MB,大约 1 GB。分别采用 Apache Avro和 IotStore 分析存储两种列存储格式进行存储,其中 Avro 大小为 265 MB,相比原始优化 3.7 倍,IotStore 分析存储大小为 46MB,相比原始优化 21 倍。
可以看到针对时序场景,列存储存储压缩效率显著优于行存储。
灵活的数据冷热分层
公测阶段,分析存储不会收费,在商业化后,我们也会本着设计的初衷。采用极低的定价,成为用户物联网,时序场景的低成本长期存储的首选解决方案。我们会采用三种存储介质方便用户根据不同的时间范围定义存储介质,并通过高压缩率实现最终的极低成本存储。分析存储的存储介质包括:SSD 和 HDD 混合,全HDD,以及 OSS 存储。不同的存储介质可以提供相应的查询 QPS 和分析时延。
如果对公测分析存储有任何问题欢迎加钉钉群,在技术群里和我们交流。