首页 > 其他分享 >Doris入门

Doris入门

时间:2022-11-29 21:15:19浏览次数:44  
标签:报表 查询 Key Apache 数据 Doris 入门

什么是 Doris?

Apache Doris 是一个基于 MPP(大规模并行处理) 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

Apache Doris 最早是诞生于百度广告报表业务的 Palo 项目,2017 年正式对外开源,2018 年 7 月由百度捐赠给 Apache 基金会进行孵化,之后在 Apache 导师的指导下由孵化器项目管理委员会成员进行孵化和运营。目前 Apache Doris 社区已经聚集了来自不同行业近百家企业的 300 余位贡献者,并且每月活跃贡献者人数也接近 100 位。 2022 年 6 月,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Apache 顶级项目(Top-Level Project,TLP)

适用场景

主要适用于大数据的分析、统计。

  • 报表分析

    • 实时看板
    • 面向企业内部分析师或管理者的报表
    • 面向用户的高并发报表分析。如面向网站主的站点分析、面向广告主的广告报表,并发通常要求成千上万的 QPS ,查询延时要求毫秒级响应。京东在广告报表中使用 Apache Doris ,每天写入 100 亿行数据,查询并发 QPS 上万,99 分位的查询延时 150ms
  • 即时查询

    面向分析师的自助分析,查询模式不固定,要求较高的吞吐

  • 统一数仓构建

    一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈

整体架构

Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程:

  • Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
  • Backend(BE),主要负责数据存储、查询计划的执行。

这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本.

使用接口方面,Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。

存储引擎方面,Doris 采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源

Doris 也支持比较丰富的索引结构,来减少数据的扫描:

  • Sorted Compound Key Index,可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景
  • Z-order Index :使用 Z-order 索引,可以高效对数据模型中的任意字段组合进行范围查询
  • Min/Max :有效过滤数值类型的等值和范围查询
  • Bloom Filter :对高基数列的等值过滤裁剪非常有效
  • Invert Index :能够对任意字段实现快速检索

在存储模型方面,Doris 支持多种存储模型,针对不同的场景做了针对性的优化:

  • Aggregate Key 模型:相同 Key 的 Value 列合并,通过提前聚合大幅提升性能
  • Unique Key 模型:Key 唯一,相同 Key 的数据覆盖,实现行级别数据更新
  • Duplicate Key 模型:明细数据模型,满足事实表的明细存储

Doris 也支持强一致的物化视图,物化视图的更新和选择都在系统内自动进行,不需要用户手动选择,从而大幅减少了物化视图维护的代价。

查询引擎方面,Doris 采用 MPP (大规模并行处理)的模型,节点间和节点内都并行执行,也支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询。

标签:报表,查询,Key,Apache,数据,Doris,入门
From: https://www.cnblogs.com/javammc/p/16936703.html

相关文章

  • Dagger2利器系列一:入门到使用
    商业转载请联系作者获得授权,非商业转载请注明出处。目录​​一 Dagger2​​​​1.1简介:​​​​1.2起源​​​​二Dagger2注解初识​​​​2.1@Inject:​​​​2.2@Mod......
  • Kotlin系列一:基础知识快速入门
    目录​​一概述​​​​二基本类型​​​​2.1 数字​​​​2.2 字符类型​​​​2.3 布尔型​​​​2.4 数组类型​​​​2.5 字符串​​​​三类型转换和变量定义......
  • 写给小白看的马尔科夫链(Markov Chain)最佳入门教程
    1什么叫马尔科夫链?讲马尔可夫链不得不提到随机过程,它本身就是随机过程课本中的重要内容,犹如牛顿定律在力学中的地位。那何为随机过程呢?我们知道,人类认知世界是从运动开始的......
  • Android 调试桥:adb的入门与最佳实践(无线连接调试)
    商业转载请联系作者获得授权,非商业转载请注明出处。目录​​一adb简介​​​​二 adb工作原理​​​​三配置adb环境​​​​四常用的adb命令​​​​4.1help命令​​......
  • Gradle系列学习:初识Gradle之Groovy基础Gradle从入门到实战 - Groovy基础
    目录​​一前言​​​​二Groovy基础语法​​​​2.1变量和方法​​​​2.2Groovy的数据类型​​​​2.2.1 String​​​​2.2.2 Closure(闭包)​​​​2.2.3 List和Ma......
  • 一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结
    更多详细示例可直接访问Dubbo官网或搜索关注官方微信公众号:ApacheDubbo1.安装Go语言环境建议使用最新版go1.17goversion>=go1.15【Go语言官网下载地址】......
  • redis入门
    概述redis是什么Redis(RemoteDictionaryServer),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多......
  • 我的Gulp入门合集
        说来也惭愧,断断续续学习到不少网页开发的技术(这里我还不敢将自己所学的东西称之为前端,可能还不够称为前端),可却很少去自动接触前端自动化构建的工具。(当然,这也......
  • 学习编程入门最适合的五大网站
    众所周知,浅显易懂的教程对于一个初学者的重要性。一、在线教程首先列出一些在线教程网站,这些在线教程网站通常都比较适合入门,可以作为开发学习路上的第一个阶梯,也可以作......
  • GO语言从入门到精通全套教程
    资源简介本套教程分为两部分:包括Go编程基础和GoWeb基础。从GO语言基础知识的讲解到后面的实战开发,让您快速掌握GO语言编程技术。教程画质高清。下载地址:https://pan.ba......