首页 > 其他分享 >Doris系列1-Doris介绍-数据仓库

Doris系列1-Doris介绍-数据仓库

时间:2023-05-19 18:23:21浏览次数:42  
标签:系列 数据仓库 用户 查询 Key MySQL 数据 Doris

深漂,10年数据库、数据仓库及大数据工作经验,求职中   ​ 目录 收起 一. Doris简介 二. Doris 整体架构 2.1 Doris 整体架构简介 2.2 Doris 数据分布 2.3 Doris 的使用方式 三. Doris关键技术 3.1 数据可靠性 3.2 易运维 3.3 MySQL 兼容性 3.4 支持 MPP 四. Doris 数据模型 4.1 Doris 数据模型特点 4.1.1 键值对存储形式 4.1.2 Key 列全局有序排列 4.2 聚合计算说明 4.2 按列存储 4.4 物化视图 4.5 两层分区与分级存储 4.6 Doris 在 Elasticsearch 的应用 4.7 Kafka 消息队列加载 4.8 Doris 其他特性 参考:

 

一. Doris简介

 

 

Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。

Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!

Apache Doris 核心特性:

 

二. Doris 整体架构

2.1 Doris 整体架构简介

 

 

Doris 的整体架构和 TiDB 类似,借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC以及MySQL 的客户端,都可以直接访问 Doris。Doris 中的模块包括 FE 和 BE 两类:FE 主要负责元数据的管理、存储,以及查询的解析等;一个用户请求经过 FE 解析、规划后,具体的执行计划会发送给 BE,BE 则会完成查询的具体执行。BE 节点主要负责数据的存储、以及查询计划的执行。目前平台的 FE 部分主要使用 Java,BE 部分主要使用 C++。

2.2 Doris 数据分布

如果从表的角度来看数据结构,用户的一张 Table 会拆成多个 Tablet,Tablet 会存成多副本,存储在不同的 BE 中,从而保证数据的高可用和高可靠。

 

 

2.3 Doris 的使用方式

Doris 的使用方式和 MySQL 类似,创建 database,创建 table,导入数据、执行查询等。具体详见下图:

 

三. Doris关键技术

3.1 数据可靠性

  1. 元数据使用 Memory+Checkpoint+Journal ( 分别是什么?),使用 BTBJE ( 类似于 Raft ) 协议实现高可用性和高可靠性。
  2. Doris 内部自行管理数据的多副本和自动修复。保证数据的高可用、高可靠。在服务器宕机的情况下,服务依然可用,数据也不会丢失。

 

 

3.2 易运维

无外部依赖: 1. Doris 部署无外部依赖,只需要部署 BE 和 IBE 即可搭建起一个集群。 2. 支持 Online Schema Change 3. 支持在线更改表模式 ( 加减列,创建 Rollup ),不会影响当前服务,不会阻塞读、写等操作;这种执行是异步的 ( 用户不需要一直盯在那里 )

数据库同步操作和异步操作: 同步,是所有的操作都做完,才返回给用户结果;即写完数据库之后,再响应用户,用户体验不好;

异步,不用等所有操作等做完,就响应用户请求;即先相应用户请求,然后慢慢去写数据库,用户体验较好。缓存机制(也就是消息队列),就是异步操作的一个典型应用。 1. 副本自动均衡 传统数据库的扩(缩)容比较麻烦,有时甚至需要重做数据;而 Doris 数据库只需要一条 SQL ( 无须额外操作 ) 即可实现扩(缩)容。

  1. 内置监控 使用 Prometheus、Grafana 将监控项指标列出。

下图为 Doris 默认配置面板:

 

3.3 MySQL 兼容性

MySQL 的兼容性从两方面体现: 1. 兼容 MySQL 的网络协议 ( MySQL Network Protocol )

  1. 兼容 MySQL 语法,使用 MySQL 语法可对 Doris 数据库进行查询 2.1 关于 MySQL 语法的兼容性,前文已经描述过,这里不再赘述; 2.2 关于 MySQL 的网络协议的兼容性,举个简单的例子:MySQL 的调度服务器 Proxy,可以直接用作 Doris 的 Proxy。

2.3 Doris 的前端展示,可以使用 MySQL 专属展示器 Tableu。下图就是使用 Tableu 将 Doris 数据可视化的一个范例。 2.4 Doris 与 R 语言可以实现无缝对接,用 R 语言可直接操作 Doris 数据库,进行数据分析、数据挖掘等工作。

3.4 支持 MPP

MPP 即 Massively Parallel Processing,大规模并行处理,即海量数据并发查询。以下图为例:

执行语句:

SELECT k1,SUM(v1) FROM A,B WHERE A.k2=B.k2 GROUP BY k1 ORDER BY SUM(v1)

该语句包含了合并、聚合计算、排序等多种操作;在执行计划的时候,MPP 将其拆分成多份,分布到每台机器执行,最后再将结果汇总。假如有10台机器,在大数据量下,这种查询执行方式可以使得查询性能达到10倍的提升。

 

 

四. Doris 数据模型

4.1 Doris 数据模型特点

4.1.1 键值对存储形式

类似于字典搜索查询的键值对格式,Doris 中所有数据分成两列:Key 列和 Value 列。如下图所示,Time、Id、Country 列共同组成 Key 列,Clicks、Cost 列为 Value 列。Key 列有序可进行快速查找,Value 列可以按照具体聚合类型内部完成数据聚合。

 

4.1.2 Key 列全局有序排列

Key 列全局有序排列,查询时方便快速定位查找。

Doris 数据模型的一个显著特点是 Key 列全局唯一,因此存在相同 Key 值的不同 Value,则后面的数据与前面的数据自动做 ( SUM,MIN,MAX,REPLACE ) 等聚合处理。例如,下图中绿色方框中的两行,相同的 Key 值对应不同的 Value;因此,新的 Value 到达后,与前数据作 SUM 处理,得到最新的数据,不仅提升效率,还可提高数据处理的准确性。

 

 

4.2 聚合计算说明

本部分具体描述相同 Key 值下 Value 值的聚合。

数据的导入是分版本的(例如下图右侧91,92版本),每一个版本之间 Key 相同的数据汇总到中间表中,通过聚合处理最终输出为左侧的 base。

 

4.2 按列存储

  1. Doris 的数据是按列存储的,每一列单独存放。
  2. 查询时,只访问查询涉及的列,大量降低 I/O。
  3. 数据类型一致,方便压缩。
  4. 数据包建索引,数据即索引。
  5. 利用原始过滤条件以及 min、max 和 sum 等智能索引技术,将数据集查询范围尽可能地缩小,大大减少 I/O,提升查询效率。

4.4 物化视图

物化视图是提取某些维度的组合建立对用户透明的却有真实数据的视图表格。Doris 的物化视图可以保证用户在更新时,直接更新原始表,Doris 会保证原表、物化视图原子生效。在查询的时候用户也只需指定原始表,Doris 会根据查询的具体条件,选择适合的物化视图完成查询。

通常用户可以通过物化视图功能完成以下两种功能。 1. 更换索引列进行重排列 2. 针对指定列做聚合查询

 

4.5 两层分区与分级存储

两层分区: 1. 方便新旧数据分离,使用不同的存储介质(例如新数据使用 SSD,历史数据 SATA) 2. 分区减少了大量历史数据不必要的重复 BE/CE,节省了大量的 IO 和 CPU 开销 3. 两层分区的方法简化了表的扩容,便于 shard 调整(例如,前期不必建立过多 shard,后期随着业务增长客随时调整 shard 数)

分级存储: 用户可以指定数据放到 SSD 上或者 SATA 盘上,也支持根据 TTL 将冷数据从 SSD 迁移到 SATA 上,高效利用 SSD 提高查询性能。

 

4.6 Doris 在 Elasticsearch 的应用

简介: 1. ES 的优点是索引,可支持多列索引,甚至可支持全文语义索引(如 term,match,fuzzy 等);然而其缺点是没有分布式计算引擎,不支持 join 等操作

  1. 与 ES 相反,Palo 具备丰富的 SQL 计算能力,以及分布式查询能力;然而其索引性能较低,不支持全文索引。
  2. Doris 在 ES 开发的过程中,分别借鉴 ES 和 Palo 的长处,支持了 Elasticsearch 多表 Join 操作,同时引入 Elasticsearch 的语义搜索功能,扩充了 Doris 的查询能力。

使用方式: 第一步:建立一张 ES 的外部表。

 

第二步:在 ES 外部表中导入一些数据:

 

第三步:使用和 ES 一样的搜索语句,进行全文检索查询:

 

类似于上图这样的搜索语句,在 SQL 中比较难以表达,但是在 ES 中较容易实现。

4.7 Kafka 消息队列加载

  1. Doris 内部支持订阅 Kafka 数据流,实现直接对接 Kafka:

 

  1. 用户数据源经 Kafka 消息队列收集后,可以依次进入到 Doris 中,通过 Doris 做报表展示和决策分析等工作。

 

  1. 优点 3.1 无需额外组件,用户可直接通过命令实现 Kafka 消息订阅。 3.2 精确传输,秒级延迟。 3.3 Doris 可自动感知 Kafka 中 partition 变化,合理调度并发导入。 3.4 在数据导入这一过程中,支持对 Kafka 原始数据做二次处理(如转换,过滤等)。

4.8 Doris 其他特性

  1. 原子性——即一批数据要么都生效,要么都不生效。
  2. 支持单机多盘
  3. 向量化执行
  4. UDF ( User Defined Function 用户自定义函数 )
  5. 内置 HLL 类型,快速计算 UV

标签:系列,数据仓库,用户,查询,Key,MySQL,数据,Doris
From: https://www.cnblogs.com/gaoyanbing/p/17415987.html

相关文章

  • 第十四篇——如何用通达信绘图函数画线?(从零起步编写通达信指标公式系列)
    内容提要:本文主要介绍了通达信指标公式常用绘图函数的第一种类型——画线函数,讲解了DRAWNULL、NODRAW、PLOYLINE、DRAWSL这四个画线函数的具体用法。 在上一篇文章中,给大家简单介绍了通达信指标公式绘图函数的三种类型,接下来将详细讲解这些函数的具体用法。说到绘图函数,就不......
  • 【ThinkPHP6系列学习-3】模板渲染
    视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎(主要用于内置的异常页面输出),如果需要使用其它的模板引擎需要单独安装相应的模板引擎扩展。视图相关的配置在配置目录的view.php配置文件中进行定义。通常可以直接使用think\faca......
  • 【ThinkPHP6系列学习-1】下载并部署ThinkPHP6
    一、下载ThinkPHP6在指定目录(www目录)下打开cmd,使用composer下载thinkphp6,命令后面的thinkphp6就是下载的目录名,可以随意修改。composercreate-projecttopthink/thinkthinkphp6二、目录结构下载后,查看目录结构,tp6的目录结构和tp5不同,默认是单应用(只有一个模块),如果需要多应......
  • java正确开发系列:使用hutool计算出时间段范围内的每一天
    背景:前端入参分别有startDate和endDate,类型为字符串,格式为:2023-01-01、2023-05-01,需要后端计算出1月到5月的每一天 代码如下:StringstartDateStr=res.getStartDate();StringendDateStr=res.getEndDate();DateTimestartDate=DateUtil.pars......
  • JFrog Artifactory 系列4 --- Maven的配置与集成
    一、概览1.承上启下JFrogArtifactory系列1---安装与配置JFrogArtifactory系列2---HttpsJFrogArtifactory系列3---仓库与配置二、Maven的配置1.仓库解析配置(用于获取Jar包)(1) 进入Application->Artifactory->Artifacts->[选中一个虚拟仓库],点击"SetMeUp"......
  • 软件测试系列:移动端安卓APP测试必备之ADB命令 (二)
    adb常见命令1、查看日志adblogcat-vtime表示打印时间adblogcat-vcolor表示使用不同的颜色来显示每个优先级adblogcat-f<filename>表示将日志输出到文件(文件存在手机上),例如,adblogcat-f/sdcard/log.logadblogcat>log.log表示保存日志到PC上adblogca......
  • 车载测试系列:CANoe中环境变量和系统变量的区别
    环境变量和系统变量相同点:都可以作为ECU、面板和CAPL程序相连接的媒介。例如,在CAPL程序中,通过改变或监控某一环境变量的值可以触发特定的动作,同样,环境变量的值也可以与面板上控制控件或显示控件相关联。历史原因:1、CANoeV6.0版本之前,只能采用环境变量传输软件仿真过程中的数据......
  • 车载测试系列:汽车ECU通信之时间同步测试验证
    时钟同步功能给车载系统提供统一的时间基准,在高级别智能驾驶、视音频时钟同步、数据上传分析等场景中发挥着越来越重要的作用。目前以太网时钟同步协议中,使用最多的为精准时钟同步协议(GeneralizedPrecisionTimeProtocol,gPTP),遵循IEEE802.1AS标准。在AUTOSAR中也有对应的......
  • 【淘宝拼多多抖音】订单详情API接口系列
    订单详情接口主要是获取订单的详细信息,包括但不限于订单号、下单时间、支付状态、发货状态、收货人信息、商品信息、金额、物流信息、退货/换货信息等。这些数据可以用于订单管理和追踪订单状态,以提供更好的客户服务。搜索当前会话用户作为卖家已卖出的交易数据(只能获取到三个月......
  • “前端”工匠系列(二):合格的工匠,怎么做好价值落地
    一、"技术鄙视链?"如果你是一个技术人,相信都知道技术圈有个相互的鄙视链,这个链条从技术人自己认知的角度在以业务价值为中心嵌套的一层一层的环,就像洋葱,具体的描述这里不赘述了。出门左拐随便抓住一个人问一下。这种偏自嘲类的观点,有点类似"程序员的穿着必须是格子衫"、"你们只会......