时间序列数据和GridDB

时间序列数据是带有时间信息(时间戳)的一系列值,通常以固定的时间间隔记录。 时间序列数据的具体示例包括每设定的分钟数记录的温度或每个交易日结束时股票的收盘价。

物联网(IoT)应用中,从各种传感器(例如每隔一分钟记录一次的温度传感器,电压传感器,照度传感器或图像传感器)获取大量的时间序列数据,一秒,甚至不到一秒。

数据库不是绝对必要的,但是通常需要以下功能:

  • 存储大量流数据。
  • 处理频繁的数据丢失和参考数据不一致的情况。
  • 可以使用时间戳或范围来检索数据。
  • 能够使用传感器ID作为关键字来查询数据。

如果提供了这些功能,则可以将水平轴作为时间实时绘制传感器数据,并将其用于监视目的。 在一定时间内,各种传感器值的相关性也可以用各种分析方法或可视化方法进行检查。

时间序列数据示例(来自蟹状星云的X射线信号)
资料来源:美国国家航空航天局(NASA)Rossi X射线计时资源管理器学习中心

2.存储时间序列数据

根据上述存储时间序列的要求,可以使用三种实用方法:

  • 平面文件
  • 关系数据库(RDB)
  • NoSQL数据库

仅将数据保存为文件时的主要好处是写入性能。 与直接写入文件相比,使用的任何数据库都会产生开销,从而导致吞吐量降低。 因此,如果数据速率足够大以至于数据库无法跟上,则可以将数据直接作为文件写入。 其他优点包括对如何处理数据没有限制; 可以灵活处理任何可放入文件中的内容,无论是图像数据还是数字数据。 另一方面,也有缺点:必须手动管理数据记录,组织数据很复杂,并且很难有效地创建复杂的查询。

使用关系数据库保存数据时,最大的好处就是可以确保事务中的ACID特性(原子性,一致性,隔离性,耐久性)。 另外,在处理获取的数据时,可以使用标准SQL语句轻松执行复杂的查询。 RDB的缺点是由于严格的处理和索引以及一致性问题,数据库很难进行横向扩展。 由于数据的内部索引是基于先前的定义的,因此有必要事先确定架构(数据库的结构),如果需求不断变化,则很难更改该架构。 换句话说,从长期来看,从各种传感器中保存大量数据通常是不合适的。

顾名思义,NoSQL代表“不仅仅是SQL”,它是一个克服基于SQL的RDB限制的数据库。 最简单的NoSQL数据库称为键/值存储,每个“键”存储一个“值”。 它不像写入文件那么简单,但是具有快速写入和读取的功能。 与RDB不同,可以在不同的键具有不同类型的数据的情况下处理“非结构化数据”。 性能和灵活性已得到改善,但RDB的某些功能丢失了。 根据数据库,不支持类似SQL的语句,或者对函数有限制。 NoSQL通常不支持具有ACID特征的严格事务。 这是为了使数据库更容易横向扩展,但是某些NoSQL数据库符合ACID,但有一些限制。

尽管严格的数据管理和高速操作之间的关系是这三种数据存储方法之间的权衡,但是从IoT应用程序获取时间序列数据具有高速写入/读取性能,即使该功能并非如此。大型的NoSQL数据库最好具有一定程度的数据检索/检索方法。

3.为什么选择GridDB?

GridDB是NoSQL数据库的一种,但它具有独特的功能,使其非常适用于其他NoSQL数据库中找不到的IoT应用程序和时间序列数据。 这些功能将在下面详细说明。

密钥容器类型

不同的NoSQL数据库具有不同的数据模型,例如键值类型(Riak),面向列的类型(Cassandra)和面向文档的类型(MongoDB)。

但是,考虑到从大量传感器设备获取时间序列数据的用例,对现有数据模型不满意。 例如,键值类型太简单,很难管理诸如设备单元或传感器单元之类的管理组中的一致数据。 GridDB采用密钥容器类型作为新的数据模型。 键所引用的容器管理表中的数据,表中的数据可以定义架构,并且您可以在列上设置索引。 换句话说,容器本身可以像常规RDB一样进行处理,并且您可以使用类似SQL的查询(TQL)来执行具有保证的ACID特性的事务处理。

时间值作为关键

GridDB具有专门用于存储时间序列数据的特殊“时间序列容器”。 使用此容器,您可以使用键运行查询,划定时间间隔或自动删除超过一定期限的数据,以及其他特殊的API调用。

超高速内存架构

处理速度是NoSQL数据库的最大优势,而GridDB是最快的NoSQL数据库之一。 GridDB高性能的秘诀是“在内存中处理尽可能多的操作”的设计理念。 如果数据仅存储在内存中,则内存数据库很简单,但是为了处理大量数据,它们还必须能够访问磁盘上的数据。 应用程序访问的数据已本地化,以尽可能减少磁盘访问。 为了本地化数据访问,GridDB提供了将相关数据放置在同一块中的功能。 通过提供有关数据的提示信息,GridDB将根据提示聚合数据块,从而减少了内存访问丢失,从而进一步提高了性能。

GridDB的密钥容器类型数据模型,高性能和专门的时间函数被设计和实现为“有效地处理大量时间序列数据”。 在以后的博客文章中,我们将提供有关如何有效使用GridDB的TimeSeries的更多背景知识,但是在此之前,请尝试使用GridDB并查看它如何改善现有或新应用程序。 Community Edition是Apache许可的产品,可用于所有大小的项目。