[转帖]9.1 TiDB HTAP 的特点

tidb,htap,特点 · 浏览次数 : 0

小编点评

**HTAP 数据库简介** HTAP (Hybrid Transactional/Analytical Processing) 是一个混合模式数据库,它可以同时承担交易处理和分析处理的功能。HTAP 数据库的独特设计可以简化数据平台的建设,并让用户可以使用更新鲜的数据进行分析。 **HTAP 数据库的主要优势包括:** * 可更新列式存储引擎 Delta Tree:Delta Tree 允许对列数据进行实时更新,并提供高效的批量读取性能。 * 实时且一致的复制体系 TiFlash:TiFlash 通过 RaftLEAR 进行数据复制,并提供极轻量的校对以确保数据一致性。 * 完整的业务隔离:TiFlash 可单独使用与 TiKV 不同的另一组节点存放列存数据,并支持在线扩容缩容。 * 智能的行列混合模式:该模式允许用户在同一套系统中同时满足不同特型的业务需求。 **HTAP 数据库的几个关键技术包括:** * TiKV:TiDB 的列式存储引擎。 * Delta Tree:一个用于列数据更新的列式存储引擎。 * ClickHouse:TiDB 的矢量化计算引擎。 * RaftLEAR:用于复制数据的 Raft 协议。

正文

 

HTAP 是 Hybrid Transactional / Analytical Processing 的缩写。这个词汇在 2014 年由 Gartner 提出。传统意义上,数据库往往专为交易或者分析场景设计,因而数据平台往往需要被切分为 TP 和 AP 两个部分,而数据需要从交易库复制到分析型数据库以便快速响应分析查询。而新型的 HTAP 数据库则可以同时承担交易和分析两种智能,这大大简化了数据平台的建设,也能让用户使用更新鲜的数据进行分析。

作为一款优秀的 HTAP 数据数据库,TiDB 除了优异的交易处理能力,也具备了良好的分析能力。

1. 数据库设计上的矛盾点

传统交易数据库在处理混合负载时有如下两个核心矛盾无法解决:

  • 行存对于分析场景不友好
  • 无法做到业务负载隔离

为了解决上述两个核心矛盾,作为 TiKV 扩展的列存储方案 TiFlash 应运而生,它有如下优势:

  • 可更新列式存储设计,在提供高速更新能力的同时,提供高效的批量读取性能
  • 配合源于 ClickHouse 的极致向量化计算引擎,更少的废指令,SIMD 加速
  • 不影响 TiKV 稳定运行的前提下,提供一致性的读取保证,以及实时查询业务数据的能力
  • TiDB 可以智能选择使用行存或者列存

2. 可更新列式存储引擎 Delta Tree

TiFlash 配备了可更新的列式存储引擎。列存更新的主流设计是 Delta Main 方式,基本思想是,由于列存块本身更新消耗大,因此往往设计上使用缓冲层容纳新写入的数据。然后再逐渐和主列存区进行合并。TiFlash 也使用了类似的 Delta Main 设计,从这个意义而言,LSM 也可用于列存更新。具体来说,Delta Tree 利用树状结构和双层 LSM 结合的方式处理更新,以规避单纯使用 LSM 设计时需要进行的多路归并。通过这种方式,TiFlash 在支持更新的同时也具备高速的读性能。

delta.jpg

3. 实时且一致的复制体系

TiFlash 无缝融入整个 TiDB 的 Multi-Raft 体系。它通过 Raft Learner 进行数据复制,通过这种方式 TiFlash 的稳定性并不会对 TiKV 产生影响。例如 TiFlash 节点宕机或者网络延迟,TiKV 仍然可以继续运行无碍且不会因此产生抖动。于此同时,该复制协议允许在读时进行极轻量的校对以确保数据一致性。另外,TiFlash 可以与 TiKV 一样的方式进行在线扩容缩容,且能自动容错以及负载均衡。

raft.jpg

4. 完整的业务隔离

由于 TiFlash 的列存复制设计,用户可以选择单独使用与 TiKV 不同的另一组节点存放列存数据。另外不论是 TiDB 还是 TiSpark,计算层都可以强制选择行存或者列存,这样用户可以毫无干扰地查询在线业务数据,为实时 BI 类应用提供强力支持。

智能的行列混合模式

如果不使用上述隔离模式进行查询,TiDB 也可经由优化器自主选择行列。这套选择的逻辑与选择索引类似:优化器根据统计信息估算读取数据的规模,并对比选择列存与行存访问开销,做出最优选择。通过这种模式,用户可以在同一套系统方便地同时满足不同特型的业务需求。例如一套物流系统需要同时支持点查某订单信息,也需要进行大规模聚合统计某一时间段内货物派送和分发的汇总信息,利用 TiDB 的行列混合体系可以很简单实现,且完全无需担心不同系统间数据复制带来的不一致。

rowcol.jpg

5. 更快的业务接入速度

同时兼备行存和列存的优势,让用户能更容易地接入业务。利用传统手段,用户往往需要将在线数据导出到分析平台才能进行分析,而这中间涉及了复杂的 ETL 或者数据传输管道维护,另外不同系统之间数据如何保持一致,如何进行格式转换也是很费思量的事情。因此,整个业务接入过程往往要花费数天甚至数周。而使用 TiDB 则可以帮助你大大简化这个过程。

6. 未来规划

TiFlash 在未来计划支持不依赖 TiKV 的直接写入,当做 TiKV 的冷备存储等功能,这样 TiDB HTAP 体系将变得更加完整。

与[转帖]9.1 TiDB HTAP 的特点相似的内容:

[转帖]9.1 TiDB HTAP 的特点

HTAP 是 Hybrid Transactional / Analytical Processing 的缩写。这个词汇在 2014 年由 Gartner 提出。传统意义上,数据库往往专为交易或者分析场景设计,因而数据平台往往需要被切分为 TP 和 AP 两个部分,而数据需要从交易库复制到分析型数据

[转帖]如何使用 minio 进行 BR 备份

https://tidb.net/blog/ada69456#5.%20%E4%BD%BF%E7%94%A8%20minio%20%E8%BF%9B%E8%A1%8C%20BR%20%E5%A4%87%E4%BB%BD%E7%9A%84%E6%9D%83%E9%99%90%E8%AF%B4%E6%9

[转帖]命令行非明文密码连接 TiDB

https://tidb.net/blog/6794a34b#%E6%96%B9%E5%BC%8F%E4%B8%80%EF%BC%9A%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BE%93%E5%85%A5%E6%96%B9%E5%BC%8F 方式一:命令行输入方式 [root@i

[转帖]通过拓扑 label 进行副本调度

https://docs.pingcap.com/zh/tidb/stable/schedule-replicas-by-topology-labels#%E5%9F%BA%E4%BA%8E%E6%8B%93%E6%89%91-label-%E7%9A%84-pd-%E8%B0%83%E5%BA%A

[转帖]带你重走 TiDB TPS 提升 1000 倍的性能优化之旅

https://tidb.net/blog/29074d86#TiDB%20%E6%80%A7%E8%83%BD%E5%92%8C%E7%A8%B3%E5%AE%9A%E6%80%A7%E7%9A%84%E6%8C%91%E6%88%98 今天我们来聊一下数据库的性能优化,第一部分简单介绍一下性能优

[转帖]9.Nginx实践之使用MaxMind的GeoIP2实现处理不同国家或城市的访问最佳实践指南

https://cloud.tencent.com/developer/article/2129901?areaSource=105001.14&traceId=OFI4ayMl5Z9FSNINaESjJ 0x00 前言简述 描述: 为了实现根据访问者访问我们的网站时根据其IP显示其所属地,也为获取

[转帖]9.2 TiFlash 架构与原理

9.2 TiFlash 架构与原理 相比于行存,TiFlash 根据强 Schema 按列式存储结构化数据,借助 ClickHouse 的向量化计算引擎,带来读取和计算双重性能优势。相较于普通列存,TiFlash 则具有实时更新、分布式自动扩展、SI(Snapshot Isolation)隔离级别读

[转帖]使用yum install和reposync下载rpm安装包以及wget和curl下载文件

记录:311 场景:在CentOS 7.9操作系统,使用yum install --downloadonly命令下载rpm安装包和依赖包;使用reposync命令下载远程yum源镜像仓库;使用wget命令下载指定文件;使用curl下载指定文件。 版本: 操作系统:CentOS 7.9 1.基础环境

[转帖]RabbitMQ 消费者回执和发布确认

为了保证数据安全,消费者和生产者的回执(ack)都是非常重要的。 由于我们无法保证消息都能像我们期望的那样,正常到达另一端或者被 Consumer 消费成功。因此,publisher 和 consumer 都需要一种机制,来确保消息投递成功了和消息消费成功了。 在 AMQP 0-9-1 中,消费者处

[转帖]nginx 反向代理中proxy_set_header的含义

https://www.jianshu.com/p/cd813d68ed25 0.1212020.10.23 09:29:53字数 284阅读 9,939 1.proxy_set_header设置的请求头是传递给后端服务器的 2.ngixn反向代理中proxy_set_header的设置: prox