之前对国产的时序大数据存储引擎 TDengine 感兴趣,因为号称比Hadoop快十倍,一直很好奇怎么实现的,所以最近抽空看了下白皮书设计文档

如果用一句话总结,就是 TDengine 是为特定的工业物联网领域而生,为时序数据做了针对性的优化也有一些限制,所以能比 Hadoop 快。而 Hadoop 运用于工业物联网的时序数据的场景下,也是有点不合时宜。因为它是为了Map Reduce而生,想解决的是一次写入、多次读取,需要高数据吞吐的场景。

要想理解一个产品的设计,首先要理解它所面对的场景,比如TDengine面对的是工业物联网。

工业物联网大数据的特点

工业物联网中,采集的数据都是传感器等采集设备汇报的数值型数据,比如温度、电流、电压,经纬度等。这些数据有如下特点:

  1. 数据高度结构化,数据Schema是实现能确定的。不像互联网,存储的是图片、语音、视频等非结构化数据。
  2. 数据极少有更新或删除操作。采集的目的是记录,后续会进行分析。这个跟互联网公司的系统监控数据类似,不会有更新老数据或者删除某一条数据的场景。
  3. 无需传统数据库的事务处理。不需要保证几个操作要么完成,要么失败,比如需要从A转账给B。
  4. 写多读少,写入数据都带时间戳。反之写少读多的场景类似 Hadoop/GFS。GFS论文里提到了,一份爬虫拉取的TB级别的网页数据,会被很多业务线消费。
  5. 写入流量平稳。根据设备数量和采集频次,可以预测。比如有100个设备,每30s采集一次数据,那写入最高是3000次每秒。不会像互联网的To C 流量,会受营销的影响。
  6. 用户关注的是一段时间的趋势,而不是某一特定时间点的值。用户会在时序数据上进行一些聚合运算,比如求最近10分钟内某个速度传感器上的平均速度。
  7. 数据使用特点是最近的数据最常使用。比如展示最近的10条数据,或者最近的10分钟里的最大值。
  8. 数据的查询分析一定是基于时间段和空间区域;因为产生的数据都是时序数据。
  9. 产生的数据量很大。比如有1万台设备,每个设备每30s上传一次数据,那一天产生2800万条数据。

TDengine 的设计取舍

关系型数据库模型

上文说了采集的数据都是结构化数据,为了降低上手门槛,采用传统的关系型数据库模型管理数据。用户先创建库、表,然后才能插入或查询数据。它底层采用结构化存储,而不需要像 NoSQL这类Schemeless的key-value存储。

一个数据采集点一张表

比如是智能电表采集数据,那有多少设备,就需要建多少张表。所以每个表只有一个写入者,好处是:

  1. 一张表的写入操作不会并发,不需要加锁。
  2. 写入者写入的数据是时序且单调增加的,所以可以使用追加方式写入内存,相当于顺序写入,效率自然高。类似 GFS 论文里提到的,这样就不需要HDD硬盘做随机寻址然后写入的操作了。
  3. 一个表(一个采集点)的数据在硬盘上以固定大小的块为单位连续存储。所以按时间戳读取的速度会非常快,读取都是顺序读取,对计算机缓存友好。

写入高效,原因:

  1. 每个采集点独占表,所以无并发写入,所以不需要加锁
  2. 跟 Kafka 类似,先写入内存,再定期写入硬盘

读取高效,原因:

  1. 数据分块存储,读取最多两次磁盘就能拿到指定时间段数据
  2. 都是顺序读取磁盘

总的来说,TDengine是通过vnode以及时间两个维度,对大数据进行切分,便于并行高效的管理,实现水平扩展。

TDengine CEO写的整体架构设计思路

留一个小问题,既然 TDegnine 是为时序数据库而生,那它是否可以用来代替 Prometheus 呢?

欢迎关注我的微信公众账号,会在第一时间更新,博客园上只有部分文章会发布

TDengine能比Hadoop快10倍?的更多相关文章

  1. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  2. 比hive快10倍的大数据查询利器presto部署

    目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...

  3. [转帖]推荐一款比 Find 快 10 倍的搜索工具 FD

    推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018 ...

  4. 比传统事务快10倍?一张图读懂阿里云全局事务服务GTS

    近日,阿里云全局事务服务GTS正式上线,为微服务架构中的分布式事务提供一站式解决方案.GTS的原理是将分布式事务与具体业务分离,在平台层面开发通用的事务中间件GTS,由事务中间件协调各服务的调用一致性 ...

  5. 搜索 比MySQL快10倍?这可能是目前AWS Aurora最详解读!

    作者介绍 朱阅岸,中国人民大学博士,现供职于腾讯云数据库团队.研究方向主要为数据库系统理论与实现.新硬件平台下的数据库系统以及TP+AP型混合系统.   编者按 Aurora作为AWS云上的关系数据库 ...

  6. 多伦多大学&NVIDIA最新成果:图像标注速度提升10倍!

    图像标注速度提升10倍! 这是多伦多大学与英伟达联合公布的一项最新研究:Curve-GCN的应用结果. Curve-GCN是一种高效交互式图像标注方法,其性能优于Polygon-RNN++.在自动模式 ...

  7. npm ci命令比npm installer命令快2至10倍

    npm 5.7.1的发布给我们带了一系列新的功能. 其中我最喜欢的就是npm ci命令了. npm ci命令 1.npm ci命令只根据lock-file去下载node_modules. 如果你的pa ...

  8. 使用Apache Spark 对 mysql 调优 查询速度提升10倍以上

    在这篇文章中我们将讨论如何利用 Apache Spark 来提升 MySQL 的查询性能. 介绍 在我的前一篇文章Apache Spark with MySQL 中介绍了如何利用 Apache Spa ...

  9. grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

    这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解 ...

随机推荐

  1. Android监听器无法跳转的可能原因之一。。。

    主菜前的厨师前言: 各位大牛,牛崽崽,这是本牛崽第一次写博客,牛崽崽我初出茅庐,但是我会很用心的写自己的每一份随笔,写的不好的大家见谅. 今天就来说说本牛崽在实现监听器时遇到的问题: 本牛崽因为也是刚 ...

  2. python2.1 if-else条件语句:

    #案例:存款大于100万,买宝马:小于20万自行车! cunkuan=10#if判断条件,else:不满足if执行其他命令if cunkuan>100: print("可以买宝马,好开 ...

  3. 最全总结!聊聊 Python 调用 JS 的几种方式

    1. 前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大 ...

  4. drop blocks

  5. Idea + maven搭建SSM框架

    1.打开idea,新建项目,选择maven骨架,然后填写包名和项目名称,一直下一步. 接着下一步,配置项目的maven环境 创建完成之后,如下图:(上边的项目名字只是例子,具体的以自己搭建的项目名为准 ...

  6. STL函数库的应用第三弹——数据结构(栈)

    Part 1:栈是什么 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表. 这一端被称为栈顶,相对地,把另一端称为栈底. 向一个栈插入新元素又称作进栈.入栈或 ...

  7. API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别

    [原]API.Win32 SDK.Win32项目.MFC.Windows窗体应用程序的区别 首先来看一下每一个术语的定义: API:Application Programming Interface. ...

  8. 图神经网络 PyTorch Geometric 入门教程

    简介 Graph Neural Networks 简称 GNN,称为图神经网络,是深度学习中近年来一个比较受关注的领域.近年来 GNN 在学术界受到的关注越来越多,与之相关的论文数量呈上升趋势,GNN ...

  9. N叉树的前后序遍历和最大深度

    package NTree; import java.util.ArrayList; import java.util.List; /** * N叉树的前后序遍历和最大深度 */ public cla ...

  10. 1.Oracle数据库简介

    Oracle数据库简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracl ...