写点什么

还在使用NoSQL 数据库?为 IoT 选择 TSDB

发布于: 刚刚
还在使用NoSQL数据库?为IoT选择TSDB

作者: 王鹏飞


IoT 应用程序会生成大量的数据。虽然 PostgreSQL 功能强大,但能应用规模不多。使用 TSDB 可以将应用场景规模放大 20 倍,并应用在 IoT 领域。


我们所说的“物联网”的根本,并不是字面意义上的“物”和“连接”,这些都早在十年内不是痛点了,而“数据”才是当前互联网面临的最大难题。这表示很多数据,在每天有更多的生产业务、食品生产、火车票等系统连接到互联网并实现自动化,创造出越来越多的传感器数据流。这数以百万计的每个设备的数据量将倍数增加,你就会得到一个指数级增长的信息流,这些大数据将被合理的使用,用于做出更好的业务决策,给最终用户提供更好的体验。


大多数从事这些计划的工程团队最终都将所有这些数据存储在多个数据库中:元数据存储在关系数据库中,时间序列数据存储在 NoSQL 中。然而,这些数据库的操作方式不同,运行多个形数据库体系增加了不必要的操作和应用程序复杂性。


其实我们没必要那么做。这里将向您展示如何将所有物联网关系和时间序列数据保存在 PostgreSQL 中,以及这如何带来更简单的操作、更好得关联数据和更好的易用性。我们还将强调 PostgreSQL 与物联网相关的其他强大的功能,包括查询能力、灵活的数据类型、地理空间支持和丰富的生态系统。


如果您觉得 TSDB 是您的物联网项目的理想数据库,那么请联系我们提供帮助。


一,PostgreSQL 能有很好的扩展性


“PostgreSQL 能扩展应用在我的 IoT 数据比率?”经常有人会这么问。PostgreSQL 的扩展性是大家所关注的首要问题。 IoT 的后端需要支持高数据摄取率,而随着数据集的增长,写入 PostgreSQL 将会比较缓慢。



经过我们深入研究,对于时间序列数据,如果数据库的架构方式正确,您可以将 PostgreSQL 扩展到每秒数十万次插入,即使是在单一节点上。所以我的团队滴普科技 FastData 团队开发了 TSDB,这是我们推出的一个新的时间序列数据库。TSDB 通过时间和空间划分数据,同时向用户呈现单个连续表(称为“超表”)实现显著性能改进。最重要的是,TSDB 在这样做时就像一个普通的 PostgreSQL 实例(实际上打包为 PostgreSQL 扩展)。我们通过将 10 亿行数据分别加载到 PostgreSQL 和 TSDB 进行了基准测试。结果如下:



简而言之,在按比例插入数据时,TSDB 快 20 倍以上。在此对比测试中,TSDB 的平均插入速率为 111k 行(1.11M 度量)/秒,而 PostgreSQL 插入性能下降到 5k/秒。但最重要的是,TSDB 可以扩展到 10 亿行。

二,能使用一个数据库,为什么要用两个


我们刚刚看到 TSDB 如何将 PostgreSQL 扩展到大型工作负载,比如在物联网中。现在让我们看看它让我们做什么。


能够存储时间序列数据并存储关系数据是非常强大的。首先,它有一个更简单的堆栈。代替两个数据库(传感器数据的 NoSQL、传感器元数据的关系数据),两者之间包含各种粘合代码,更不用说有两个数据库的操作难题……所以,您只需要一个数据库:

我们拿备份功能来举例。运行两个不同的数据库意味着两个不同的备份过程(以及更长的停机时间)。此外,如果系统是独立备份,则存在数据完整性问题的风险。想象一下这样的情况:你的时间序列数据有上一个小时的备份,但是你的关系数据昨天被备份了,那么您现在的时间序列数据引用了元数据丢失了。


一个数据库简单性设置会有其他优势:更简单的堆栈甚至在边缘很有用,那里运行一个数据库足够困难(由于资源限制),更不用说两个了。只需要一个数据库就能使物联网原型设计更容易,这样还有助于降低大型庞大的物联网项目的复杂性。


三,关于 TSDB 中的 context


一个用于时间序列数据和元数据的单一数据库不仅可以简化堆栈:它还允许您向传感器数据添加上下文。因为如果您不知道您要测量什么,那么收集数据有什么意义?


这是一个例子:我们正在合作的一家公司正在开发一个物联网应用程序来监控制造过程。这个应用程序涉及到仔细检查装配线数据来发现缺陷,确保一个高质量的产品。大多数装配线数据本质上是时间序列:{machine_id、时间戳、测量}。然而,如果没有所有其他的操作元数据,这些数据本身就是毫无意义的:如当时的机器设置、行信息、移位信息等等。他们已经尝试将数据去规范化,但这在每次测量上增加了不合理的数据膨胀。


使用 TSDB 和 PostgreSQL,可以保持元数据标准化,并在查询时添加必要的上下文(通过 SQL 联接)。例如,通过像这样的查询:(按机器显示特定线路上给定类型机器的平均温度,间隔 5 分钟统计)



四,使用 SQL 的好处


现在让我们聚焦物联网项目的价值:收集、分析和处理数据,以提高效用/效率,减少停机/浪费,并提供更好的产品和服务。换句话说,您需要的不仅仅是一个数据存储,您还需要一种简单的方法来从数据中获取更有效的信息来提供一些方案的决策。


这就是 SQL 的作用所在。虽然在过去几年中 NoSQL 相当流行,但事实是 SQL 相当强大,正在开始回归(这就是“NoSQL”现在被理解为“不仅是 SQL”的原因之一)。


SQL 包括相当多的有用的功能:例如,谓词(由辅助索引支持);多个聚合和排序;窗口函数、数学和统计函数库;等等。举个例子,以线性和对数尺度绘制天花板传感器的温度变化统计如下:



TSDB 通过添加时间序列分析所需的新函数来增加 SQL,例如,如上面一个例子的 time_bucket 和最后一个查询。


SQL 还有另一个优势。您不需要培训工程师学习新的专门查询语言(或雇佣懂新的查询语言工程师),非技术用户也不需要严重依赖工程(和工程发布周期)来处理数据问题。换句话说,通过利用 SQL,您可以将时间序列数据民主化,让组织中有更多的人员访问它。


五,TSDB 支持灵活的数据类型(包括 JSON)


还在羡慕 MongoDB 支持在关系数据库中扩展 JSON?当您开始构建物联网产品时,您可能不知道您将关心哪些数据,也不考虑到特定的数据模式。或者以后您可能需要非常特定的数据结构(例如,数组)。

PostgreSQL 支持广泛的数据类型。它允许半结构化数据(通过 JSON/JSONB 支持),但也允许各种其他数据类型,包括许多数字类型、几何类型、数组、范围类型和日期/时间类型。我们的一些物联网客户在 JSONB 中存储传感器数据,而且还允许建立索引,如下图



六,TSDB 在地理空间方面的优势


目前很多系统的数据中通常有一个地理空间组件,表示物理东西存在于特定的空间中。特别是当事物在移动时,地理空间信息就很重要了。我们经常看到的一个物联网用例是资产跟踪:例如,跟踪用于车队管理的车辆,优化路线,减少破坏等。


TSDB 被打包为 PostgreSQL 扩展,这意味着您可以同时运行许多其他 PostgreSQL 扩展。一个强大的扩展是 PostGIS,它给 PostgreSQL 增加了丰富的地理空间支持(包括新的数据类型、功能等)。通过结合 PostGIS 与 TSDB,您可以结合地理空间和时间序列数据创建一个可扩展的时空数据库。下图是纽约的出租车在一个时间段内的时空数据在 grafana 的展现。



七,基于 PostgreSQL 的 TSDB 是一个真实的生态系统


时间序列数据库不会单独运行。它们需要连接器,比如 kafka 这样的数据总线、Spark 这样的流处理引擎,或者 Sableau 这样的 BI 工具。大多数时间序列数据库都相对较新,而且没有足够的时间围绕它们开发生态系统。另一方面,PostgreSQL 已经存在了 20 多年了,社区已经围绕着它建立了一个广阔的生态系统。就像 PostgreSQL 一样,TSDB 与最流行的数据总线、流处理器、数据可视化和 BI 工具(如下面所示的工具)配合一起使用。


八,基于 PostgreSQL 的 TSDB 具有很好的可靠性


你为物联网选择的数据库需要可靠的(而不会在凌晨 3 点叫醒你)。与网站或移动应用程序不同,物联网应用程序从一开始就通常部署在高价值的场景中。如果使用数据库监视生产线,则该数据库将不能出现停止或者关闭的情况。


这就是我们选择在 PostgreSQL 基础上扩展 TSDB。在过去的 20 多年中,PostgreSQL 已经在不同行业的各种关键任务应用程序中进行了验证和应用。还有另一个管理工具的生态系统,可以使可靠性更容易实现:包括流媒体复制、热待机等等。TSDB 继承了这个相同级别的可靠性和生态系统。


九,选择 PostgreSQL,选择 TSDB


现在物联网的世界里有很多声音,很难决定为你的物联网项目使用什么数据库。但无疑最好的选择就是 PostgreSQL,因为 TSDB 最终扩展到理物联网各个领域并优化时间序列数据优化 SQL。


如果您正在构建一个新的物联网项目或当前正在与复杂的物联网之中难以抉择,请选择 PostgreSQL 并使用 TSDB。


如果你对以上内容感兴趣且需要帮助的话,可以登录https://www.deepexi.com/product-new/27了解更多 TSDB 产品详情。

发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2020.12.22 加入

滴普科技2048实验室致力于探索科技未知,以点滴努力,普惠科技为驱动力,立足于数据智能、创新性技术和应用技术的研究院。

评论

发布
暂无评论
还在使用NoSQL数据库?为IoT选择TSDB