首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

彻底开源、十倍性能的背后:TDengine 核心技术首度公开

物联网传感器采集的数据都是符合时间顺序的,针对这一特性,TDengine 创新地改变了数据模型,引入“一个采集点一张”的模式和分块连续存储,从而简化了单点的数据添加操作,加快了数据插入和查询速度。...陶老师的分享之后,涛思数据联合创始人关胜亮介绍了 TDengine 2.0 集群的设计思想与工作机制。 TDengine 2.0 的关键特性是采用了 FQDN(完全限定域名)来区分物理和数据节点。...数据在不同节点有多个副本,通过主从选举的方式选出主节点。在不同节点之间的数据复制默认为异步,以显著提升复制速度。但平台也针对安全性需求较高的场景提供了同步复制选项。...出现数据不同步的问题,平台还提供了数据恢复的机制。 TDengine数据分片是基于虚拟节点(Vnode)的,每个只进入一个虚拟节点,每个虚拟节点则包含多个。...新建虚拟节点,系统会自动选择负载较低的物理机器创建节点。每个虚拟节点大约维持在一万左右以实现最佳性能。管理节点则根据各虚拟节点的负载状况进行实时打分,并根据打分情况实施负载均衡。

1.3K20

时序数据库:TDengine整体架构

一旦得到插入成功的回复,taosc 会缓存 master 节点的信息。 上述是插入数据的流程,查询、计算的流程也完全一致。...但写内存与 WAL 是完全一样的。 3.主从选择 Vnode 会保持一个数据版本号(version),对内存数据进行持久化存储,对该版本号也进行持久化存储。...4.同步复制 对于数据一致性要求更高的场景,异步数据复制无法满足要求,因为有极小的概率丢失数据,因此 TDengine 提供同步复制的机制供用户选择。...TDengine 的查询处理需要客户端、vnode、mnode 节点协同完成。 1.单查询 SQL 语句的解析和校验工作在客户端完成。...对多个具有相同数据类型的数据采集点进行聚合操作TDengine 会先把满足标签过滤条件的从超级中找出来,然后再扫描这些的时序数据,进行聚合操作,这样需要扫描的数据集会大幅减少,从而显著提高聚合计算的性能

79110
您找到你想要的搜索结果了吗?
是的
没有找到

TDengine的开源说起技术选型

但是如果仔细分析一下需求,你可能省略了需求背后的一些前提条件,比如真实的需求可能是这样的:“需要一个能够处理百万规模的并发(只是理论峰值,平均情况小于10万并发)读写操作(读写比例1:9,只有追加写,...举个例子,可以在每个数据块上预存储该数据块上某个字段所有记录的最大值/最小值,查询结果包含该块,只需要读取这个预先算好的最值即可而不需要扫描整块数据。..., TDengine要求新插入的记录的时间戳大于中的最后一条记录,否则记录被丢弃。...TDengine所有以时间戳为主键,这个的意思即要求记录以主键序顺序插入。该要求使得Insert操作可以通过追加写最后一个数据块的方式高效完成,而不需要考虑乱序插入时的排序与数据块合并等问题。...考虑车联网的场景,一辆车停在无网络的地下车库一段时间没有上报数据车辆再次联网后开始上报数据,我们期望车辆先将最新时刻的状态数据上报上来,以便用户可以及时的了解车辆的最新实时状态及故障警报,而后再将断网期间没有上报的历史数据补发上传

3K30

tdengine入门详解

TDengine 采用传统的关系型数据库模型管理数据,需要先创建库,然后创建,之后才能插入或查询数据。...一次插入多行数据,不要把首列的时间戳的值都写 NOW。否则会导致语句中的多条记录使用相同的时间戳,于是就可能出现相互覆盖以致这些数据无法全部被正确保存。...其原因在于,NOW 函数在执行中会被解析为所在 SQL 语句的客户端执行时间,出现在同一语句中的多个 NOW 标记也就会被替换为完全相同的时间戳取值。...允许插入的最老记录的时间戳=now - KEEP 值,超过该范围无法插入 json格式,目前版本json只支持tag,不支持其他数据列 长度调整,只支持调大,不支持调小 同一条sql写入...vnode,彼此间执行结果不影响 这是因为多个子表可能分布在不同的 VNODE 上,客户端将 INSERT 语句完整解析后,将数据发往各个涉及的 VNODE 上,每个 VNODE 独立进行写入操作。

1.5K11

分布式数据库如何平衡一致性和读写延迟?

那是代表返回写入请求多副本已经达到完全一致了吗?熟悉 Raft 的朋友会立即指出,不一定,Raft 就只需要在 quorum 中(超过半数)副本达成一致即可返回写入成功。...但是,我们还需要考虑异常情况,消息延迟,Raft 可能出现短暂的双主;若出现网络分区,可能持续处于多主状态。...让 leader 在与客户端交互,完成读操作前发送一个 no-op 并至少得到半数回应,由于少数派分区的 leader 无法得到半数回应,因此无法提供读服务。...在 TDengine 中,为了降低写入数据的延迟、提高吞吐量,我们为元数据数据的标签数据)提供强一致性,为时序数据提供最终一致性与强一致性两种可选的一致性级别。...集群中存在网络分区、或节点连续宕机等异常情况下,TDengine 中可能无法保证严格的强一致性,因此,在即将到来的 3.0 版本中,我们将以 Raft 算法为基础重构选主、强一致复制等一系列流程,同时

45610

FreeSWITCH TDengine模块

但琐事繁忙却一直没有动手,不过却一直关注TDengine的发展。 期间也分析过TDengine,即使有一万种好也必然有几处不好。它有它适用的场景,从关系数据库世界来的人就得换脑子去理解它。...TDengine是一个时序数据库,因此所有数据必须有一个时间戳,相同的时间戳是无法插入的。这跟关系数据库天然的不同。在关系数据库中,话单使用一张,直接将数据插入就OK了。...但在TDengine中,可能会并行插入很多话单,时间戳就有可能重复,导致无法插入。解决办法是将话单分拆。但是,怎么拆?...本方案可以解决以下问题: 针对不同的本地用户计费 本方案有以下遗留问题: 同时有同号码的并发呼叫,T中时间戳可能重复 同终端并发有多个呼叫,A/B也可能有重复,进一步拆分?...由于终端通话话单不需要更细的拆分粒度,但是TDengine底层需要,TDengine有没有方法解决时间戳冲突的插入问题(不能丢话单!)。 我们将与TDengine工程师团队深入交流解决这些问题。

1.1K40

在SpringBoot项目中集成TDengine,并通过SQL对数据进行增删改查

用户在创建数据采集点)指定STable(采集类型)外,还可以指定标签的值,也可事后增加或修改。 超级STable解决什么 TDengine要求每个数据采集点单独建。...独立建的模式能够避免写入过程中的同步加锁,因此能够极大地提升数据插入/查询性能。但是独立建表意味着系统中表的数量与采集点的数量在同一个量级。...试了一种方式,就是打开update参数开关。 建库如果不指定 update 参数,则 update 默认为0,表示数据不可修改。 所以,我们删除库,重新来。...本来是想着是不是插入一个10年前的数据,会自动就变成删除,结果发现,时间戳是keep时间以前的,无法插入数据库中。...,但是删除数据还是不行,只能设置keep的时间,让TDengine自动清除数据

3.7K30

时序数据库:TDengine简介

不仅支持连续查询,还支持事件驱动的流式计算,这样在处理时序数据就无需 Flink 或 Spark 这样流式计算组件 数据订阅,应用程序可以订阅一张或一组数据,提供与 Kafka 相同的...需要指出的是,TDengine 是针对时序数据场景设计的专用数据库和专用大数据处理工具,因其充分利用了时序大数据的特点,它无法用来处理网络爬虫、微博、微信、电商、ERP、CRM 等通用型数据。...要求高速处理数据TDengine 专门为 IoT 优化的存储和数据处理设计,一般可以让系统得到超出同类产品多倍数的处理速度提升。...要求快速处理小粒度数据 √ 这方面 TDengine 性能可以完全对标关系型和 NoSQL 型数据处理系统。...简单使用 在TDengine终端中,用户可以通过SQL命令来创建/删除数据库、等,并进行插入查询操作。

24610

干货 | Trip.com APP QUIC应用和优化实践

同时客户端可以缓存服务的公钥(以SCFG的方式),用于下次建立链接使用,这个就是达成0-RTT握手的关键。客户端可以选择内存缓存或者磁盘缓存SCFG。...header做第一次压缩,主要是用静态进行替换,并将某些数据插入动态。...压缩后的header传到服务端,服务端找到解析header需要的最大的动态index,目前是d3,如果比当前的动态最大index还要大,说明动态插入请求还没收到,这是UDP传输的无序性导致的,...等待期间Request B, C 的请求也到了,他们的header是一致的,但是都没法解析,因为requestA的动态插入请求还没收到,于是出现了头部阻塞。...上图是目前Trip.com 客户端的网络框架,APP启动或网络变化时会通过一定的权重计算,选择最优的协议(TCP或QUIC)进行使用,并且进一步选择最优的Server IP预建立链接池,有业务请求需要发送

1K50

等不及,冲滴滴去了!

server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是域名做主。 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。...本地 DNS 再将 IP 地址返回客户端客户端和目标建立连接。 至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程画成了一个图。 域名解析的工作流程 DNS域名解析使用的什么协议?...如果我们使用自增主键,那么每次插入的新数据就会按顺序添加到当前索引节点的位置,不需要移动已有的数据页面写满,就会自动开辟一个新页面。...如果我们使用非自增主键,由于每次插入主键的索引值都是随机的,因此每次插入新的数据,就可能会插入到现有数据页中间的某个位置,这将不得不移动其它数据来满足新数据插入,甚至需要从一个页面复制数据到另外一个页面...方法调用结束,栈中的对象会自动释放,无法在方法之外访问。如果需要在方法之外继续使用对象,就无法将其放置在栈中。 空间限制:栈的大小是有限的,并且在编译就确定了。

13710

一篇文章让你全面了解TDengine

研究完物联网数据的特点后,TDengine做了两个技术创新点, “一台设备一张”的数据模型来极大提高单台设备的数据插入和查询效率 给每张打静态标签,将静态标签数据与采集的动态数据完全分开存储,来解决多表聚合查询问题...TDengine的适用场景 TDengine作为一个基础性的软件,应用范围及其广泛,原则上,所有使用机器、设备、传感器采集数据的地方都可以用上。...而一张只有一个写入者的时候,自然不用需要在锁机制上浪费资源。要知道,传统关系型数据库的写入操作一定是要有锁保护的。 Tdengine采用无锁方式写,会节省很多资源,加速写入速度。...但是如设备地址编号等信息,是没必要写入磁盘的。所以他们把很多表放到一起变成了一个超级,然后查询的时候直接用地址编号等信息来做筛选就行了 4.列式压缩 TDengine采用的是列存储。...在创建超级,可以对这类指定标签,在查询的时候通过标签来对数据库中的进行过滤,这样即使数据库中有非常多的,也可以实现快速的多表聚合。 安装包非常小,安装使用简单。

1.6K10

不愧是字节,面个实习也满头大汗!

域名和ip地址如何对映的? 主要通过DNS域名解析来完成的。...如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。...server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是域名做主。 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。...本地 DNS 再将 IP 地址返回客户端客户端和目标建立连接。 至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程画成了一个图。 域名解析的工作流程 get和post的区别?...应答报文,表示客户端的 SYN 报文已被服务端成功接收,那服务端发送「初始序列号」给客户端的时候,依然也要得到客户端的应答回应,这样一来一回,才能确保双方的初始序列号能被可靠的同步。

19210

明星开源产品实践历程,从技术构建到营销革命

先介绍一下 TDengine,它是一个开源的高效的物联网大数据平台,专门为物联网、车联网、工业互联网,IT 运维设计优化的大数据平台,除了核心的时序数据库功能之外,还有缓存、数据订阅、流式计算这些功能...物联网时代很多事物都在采集数据,无论是智能电表,水表气,汽车,电梯等等,都在不断采集数据。而传统的方法存在很多问题:例如开发效率低,运行效率差,运维复杂,最后导致推荐应用变慢。...这样一来,整个平台在多种物联网设施中都能得到应用,智能电表、水表、燃气、智慧城市,火车、汽车、出租车、飞机等各种重型设备,电梯、锅炉、机床,包括水温、空气检测等应用,甚至国家地震局地震波检测,煤矿二氧化碳浓度的监测等等...1把核心技术公开:用开源换取竞争力 这个想法直接构成了第三次创业,而 TDengine 就很好地实现了这个想法。我们在技术完成之后,经过深思熟虑还是选择了走开源这条道路。...多数人熟悉的老产品已经相对成熟,新品牌如果影响力不够,就不会被人选择。开源就是为了打响知名度,这是闭源无法达到的效果。 第二是形成开发者社区,构建竞争壁垒。

51610

网络是如何连接的?网络发展简介(四)

客户端与服务器的握手是一个往复确认的过程 客户端:发出确认请求,SYN=1,seq=x,你听得到么,想建立连接(SYN=1),的序号是x(seq=x) 服务器:对请求进行确认,也就是回应,听到了...(ACK=1,ack=x+1),你听得到么(SYN=1),的序号是y(seq=y) 客户端:对服务器的回应进行确认,听到了(ACK=1,ack=y+1),的序号是x+1 IP数据报经过运输层需要分段发送...断开过程 客户端数据发送,请求关闭连接,好了,想断开连接了(FIN=1)的序号是u(u就是之前传送过的所有数据的最后一个字节的序号+1) 此时客户端转变为FIN-WAIT-1状态 服务器收到客户端的消息后...IP层关注的是网际层的传输,但是具体的数据传输必然无法脱离具体的物理线路以及组网环境 IP地址是根据网络的拓扑结构分配的,所以根据IP可以实现高效的路由选择 物理地址跟网络拓扑结构没有任何关系,显然不适合用来路由选择...IP地址,借助于操作系统的路由选择下一跳路由,而路由又是根据各种路由选择协议自学习而来的 得到了下一跳的路由,再根据ARP协议就可以查询得到下一站的物理地址 应用程序借助于操作系统建立Socket连接

3.9K50

18张图让你秒懂数据在网络中到底是如何传输的

01 客户端各层对数据的封装 java实现客户端的代码如下: 应用层会指定发送的服务器的域名(或者IP)和端口号、以及要发送数据的内容,传递给下一层传输层。...注意,目标MAC地址一般不是服务器的MAC地址(如果客户端和服务器端在同一个网段,那么目标MAC地址就是服务器的MAC地址),因为客户端根本就无法得知服务器的MAC地址,所以数据链路层采用下一跳的机制转递数据...下面就要请出ARP协议了,ARP会发出一个广播,告诉全世界:“大家好,的IP地址是192.168.1.6,的MAC地址是00-50-56-C0-88-01” 同一个网段上的主机接收到ARP报文,...路由器有一张路由,路由可以通过网络工程师配置或者从其他路由器学习得到。...04 服务器端各层对数据解析 服务器端收到数据后会逐层进行解析,最后将真正的数据交应用程序进行处理,至此一个数据客户端到服务器端就完成了,服务器端会发送响应报文给客户端,大体的流程类似,但是数据不一定是原路返回的

2.8K20

腾讯有点顶,连环追问我基础细节!

如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。...server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是域名做主。 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。...4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。 5xx 类状态码表示客户端请求报文正确,但是服务器处理内部发生了错误,属于服务器端的错误码。 403代什么含义?...如果主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。...如果数据主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率 MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。

21410

《高性能 MySQL》读书笔记

2、R-Tree(空间数据索引),MyISAM支持空间索引,可以用作地理数据存储。 3、独立的列无法使用索引,独立的列是指索引列为表达式的一部分或者函数的参数。...有聚簇索引,它的数据行实际上存放在索引的叶子页(LEAF PAGE)中,聚簇表示数据行和相邻的键值紧凑地存储在一起。...9、在INNODB中最好使用自增作为主键,而使用UUID等随机的聚簇索引会对I/O密集型应用造成很坏性能,它使得聚簇索引的插入变得完全随机。 10、要查询的字段的值在索引中,就称该索引为覆盖索引。...比如多列索引中有sex列,但是用户查询没有选择sex,则使用IN(‘M’,’F’)来满足使用索引的条件。...索引项和实际数据行的排序完全一样。 一个只能有一个聚簇索引。但是该列能包含多个列,就像电话簿使用姓氏和名字同时进行排序。

1.5K20

DNS故障对TDW影响评估及改进方案探索

客户端来上传数据,client 和 master 互联也是采用 DNS 域名解析方式。...另外, Hive 的元数据保存各个数据的路径,这些路径是由域名域名的相对路径组成。 目前, Hive 的容灾方式是采用 DNS 方式,提供多点服务,它消除单点和负载不均衡问题。...DNS 解析顺序 DNS 解析顺序有两种,从上往下进行依次查询,如果查询到马上返回,如果最后一个也没有查询到则返回无法解析域名错误。...对于 Namenode 和 JobTracker 在启动对 DNS 依赖较大,但是再启动后即使出现 DNS 故障,也不会影响它的正常工作和任务调度。...Tasktracker 启动、task 的执行 出现 DNS 故障后完全不能工作 Hive 通过 MR 进行的查询、数据插入 没重启前因为存在 DNS 缓存,数据库和数据的增加、删除能正常工作,但是插入数据和查询

2.4K00

面实习满头大汗?不存在的好叭~

域名服务器是最高层次的服务器,虽然不直接进行域名解析,但它可以指示一个路径。...根域名服务器收到本地DNS服务器的请求后,发现后置是".com",于是告诉本地DNS服务器:"www.server.com"这个域名归".com"区域管理,给你".com"顶级域名服务器的地址,你去问问它吧...权威DNS服务器是域名解析结果的原始来源,它拥有该域名解析权。权威DNS服务器查询后将对应的IP地址(X.X.X.X)告诉本地DNS服务器。...为了保证序列号的可靠同步,客户端发送携带初始序列号的SYN报文,服务端需要回复一个ACK应答报文来确认接收到客户端的SYN报文。同样地,服务端发送初始序列号给客户端,也需要得到客户端的应答。...如果需要频繁进行随机访问操作,而对插入和删除操作要求不高,可以选择ArrayList。如果需要频繁进行插入和删除操作,而对随机访问操作要求不高,可以选择LinkedList。

11900

WebView性能、体验分析与优化

【参考东软专利 - 加载网页的方法及装置 CN106250434A】 客户端代理数据请求 方法: 在客户端初始化WebView的同时,直接由native开始网络请求数据页面初始化完成后,向native...静态资源同理,最好与客户端的资源域名保持一致。 同步渲染采用chunk编码 同步渲染如果后端请求时间过长,可以考虑采用chunk编码,将数据放在最后,并优先将静态内容flush。...测试得到的时间耗费如下: 1 阶段 时间 大小 备注 DOM下载 58ms 29.5 KB 4G网络 DOM解析 12.5ms 198 KB 根据估算,在手机上慢2~5倍不等 CSS请求+下载...对于2,我们可以发现一个问题 一般来说HTML在开始接收到返回数据的时候就开始解析HTML并构建DOM树。如果没有JS(JavaScript)阻塞的话一般会相继完成。...CSS的加载会在HTML解析到CSS的标签开始,所以CSS的标签要尽量靠前。 但是,CSS链接下面不能有任何的JS标签(包括很简单的内联JS),否则会阻塞HTML的解析

4.9K141
领券