SelectDB案例 从 ClickHouse 到 Apache Doris延迟,均会造成大宽表延迟, 进而导致数据时效性下降。 加速层:不同的标签跟指标特性不同、更新频率也各不相同。由于 ClickHouse 目前 更擅长处理宽表场景,无区别将所有数据导入大宽表生成天的分区将造成存储资源 的浪费,维护成本也将随之升高。 应用层:ClickHouse 采用的是计算和存储节点强耦合的架构,架构复杂,组件依赖 严重,牵一发而动全身,容易出现集群稳定性问题,对于我们来说,同时维护 到 DWS 的计算逻 辑将在语义层中进行定义,且以单个指标和标签的形式进行定义,之后由语义层来 发送命令,生成 SQL 命令给数仓层执行计算。 加速层:从语义层接收配置、触发导入任务,比如加速哪些指标与标签均由语义层 指导。 应用层:向语义层发起逻辑查询,由语义层选择引擎,生成物理 SQL。 架构优势: 可以形成统一视图,对于核心指标和标签的定义进行统一查看及管理。 应用层与物理引擎完成解耦,可进一步对更加灵活易用的架构进行探索:如何对相 关指标和标签进行加速,如何在时效性和集群的稳定性之间平衡等。 存在的问题: 因为当前架构是对单个标签和指标进行了定义,因此如何在查询计算时自动生成一个准确有 效的 SQL 语句是非常有难度的。如果你有相关的经验,期待有机会可以一起探索交流。 优化经验 从上文已知,为更好地实现业务需求,数据架构演进到 4.0 版本,其中 Apache Doris0 码力 | 12 页 | 1.55 MB | 1 年前3
Doris的数据导入机制以及原子性保证BE (C++) BE (C++) BE (C++) BE (C++) 整体架构简单,产品易用 • 高度兼容MySQL协议 • 主从架构,不依赖任何其他组件 • FE负责解析/生成/调度查询计划 • BE负责执行查询计划、数据存储 • 任何节点都可线性扩展 01 Doris 简介 导入的问题 02 典型应用场景——OLAP分析 数据源 数据应用 数据存储 对象存储BOS 数据导入总览 • 多源数据加载:HDFS、Kafka、本地数据 • 联邦数据查询:Spark • 多源数据访问:ES、MySQL • 通用协议输出:JDBC、ANSI SQL • 多种数据格式支持: 文本、PARQUET、ORC 04 使用案例 导入方式 04 使用案例 导入方式 同步/异步 场景 接口 Broker Load 异步 HDFS、BOS对象存储 MySQL Routine Load 使用 MySQL 协议定期提交和查看导入作业。 确定导入方式的协议 • 导入方式为同步或异步。 确定导入方式的类型 • 每一批次数据唯一且固定,保证 At-Most-Once 制定 Label 生成策略 • 外部系统需要保证自身的 At-Least-Once,这样就可以保证 导入流程的 Exactly-Once。 程序自身保证 At-Least-Once 多表原子性导入 • 每个表拆分多个任务,并下发BE0 码力 | 33 页 | 21.95 MB | 1 年前3
百度智能云 Apache Doris 文档符前加入转义字符(\字符)。 \t 表示tab键 \n 表示换行符 \r 表示回车符 \b 表示回退符 \0 表示ASCII码的空字符(和SQL语言的NULL不同) \Z 表示dos 的文本结束符 \%和_用来转义传给LIKE操作符的字符串中的通配符 \\防止反斜线符号被解释成转义字符 如果字符串字面常量被单引号或双引号括起来,则反斜线符号可以用来转义该字符串字面常量中出现的单引号或双引号。 注释 Doris支持SQL注释 单行注释: 以--开头的语句会被识别成注释并且被忽略掉。单行注释可以独立成行或者出现在其他语句的部分语句或者完整 语句之后。 多行注释:'/*' 和'*/'之间的文本会被识别成注释并且被忽略掉。多行注释可以单独占据单行或多行,或者出现在其他语句 的中间,前面或者后面。 举例: 语法帮助 DML INSERT mysql> select tiny_column INSERT INSERT Description Description 需要导入数据的表名。 指定需要导入数据的分区。 为本次 INSERT 操作指定一个 Label。如果不指定,则系统会自动生成一个随机 ID。 指定目标列顺序 INSERT 操作支持两种方式。一种是通过 VALUES 语句即常量表达式进行单行数据写入。另一种是用过 Query 语句从其他表 中查询数据并导入。 Example0 码力 | 203 页 | 1.75 MB | 1 年前3
Apache Doris 在美团外卖数仓中的应用实践量会显 著减少。 查询执行多实例并发优化 如上图所示,Doris默认在每个节点上为每个算子只会生成1个执行实例。这样的话,如果数据量 很大,每个执行实例的算子就需要处理大量的数据,而且无法充分利用集群的CPU、IO、内存等 资源。 一个比较容易想到的优化手段是,我们可以在每个节点上为每个算子生成多个执行实例。这样每 个算子只需要处理少量数据,而且多个执行实例可以并行执行。 下图是并发度设置0 码力 | 8 页 | 429.42 KB | 1 年前3
共 4 条
- 1













