更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

列式存储通过支持按列存储数据,提供高性能的数据分析和查询。作为云原生数据仓库的 ByteHouse,也采用列式存储设计,保证读写性能、支持事务一致性,又适用大规模的数据计算,为用户提供极速分析体验和海量数据处理能力,提升企业数字化转型能力。

列式存储介绍

分析型数据库中的列式存储,是一种数据库的物理存储结构,它是根据数据的列而不是行来存储数据的。列式存储的主要优势在于它能够提高数据分析和查询的性能,尤其是在处理大规模数据集时。

以下是列式存储的一些主要特点:

  1. 数据压缩: 由于同一列中的数据往往具有相似或相同的数据模式(例如日期、时间、地址等),因此列式存储可以更有效地进行数据压缩,从而节省存储空间。
  2. 数据筛选性能: 列式存储使得只读取查询所需的列变得非常高效。在执行大量涉及多列的复杂查询时,可以显著减少磁盘 I/O 操作,从而提高查询性能。
  3. 计算局部性: 由于数据按列存储,在进行某些计算(如数学运算或统计函数)时,数据可以直接在内存中进行局部操作,而不需要频繁地访问磁盘,从而提高了计算效率。
  4. 数据独立性: 列式存储允许独立地更新表中的列,这使得增量更新和数据维护变得更加简单和高效。
  5. 数据分片和分布式处理: 由于列式存储的特性,它非常适合于分布式计算环境。数据可以按列进行分片,并分布到不同的计算节点上进行并行处理,从而实现大规模数据的分布式处理和分析。
  6. 灵活的数据模型: 列式存储通常支持多种数据模型,如行存储、列存储和键-值存储,这使得它能够适应不同的数据处理需求。

ByteHouse 的列式存储设计

ByteHouse 是一款云原生数据仓库,为用户提供极速分析体验,能够支撑实时数据分析和海量数据离线分析,便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性,助力客户数字化转型。

通常事务型数据库采用行存便于支持事务和高并发读写,分析型数据库采用列存减少 IO 和便于压缩。ByteHouse 采用列存的方式,保证读写性能、支持事务一致性,又适用大规模的数据计算。

Data layout

表数据物理上按 Partition Key 切分为多个 Parts 存储在统一的云存储的逻辑存储路径下,每个 Part 的大小有数据量和行数限制,计算组根据服务节点分配的策略(预先分配和实时分配)获得其对应的部分 parts。

Part Delta

Part 数据最初构建之后是一个行列混合存储的 Part 数据文件,随着 DML/数据字典/Bitmap index 等构建工作的进行 Part 存在增量数据,这部分数据可以有以下两种存储方式:

  1. 每次构建都会 Rewrite Part 数据
  2. 生成增量数据,后台异步合并成一个大的 Part 文件

方案一对整个集群的可用性可能会有一定的影响:

1.每次 DML/数据字典等构建都可能涉及到整个表 Parts 的全量 IO 操作,这个代价比较大。

  1. 构建时间比较长 DML 等操作会比较长的时间才能做完,对用户不友好,我们采用方案二。

Part 文件内容

part 数据分为两个部分:

一是整个 Part 包括 rows/schema/column data 在数据文件中的 Offset 等元信息,这部分信息持久化存储并被计算节点缓存

二是实际的数据信息,这部分信息包含实际的 column bin 数据/column mrk 数据/Map key bin/Map key index/数据字典数据/bitmap index 数据等,数据按元信息中的 Offset 信息在 Part 的数据文件依次存储。

Compaction

ByteHouse 支持将一个 part 文件拆分为多个小文件,通过配置 Part 的最大 Size 和最大行数,Compact 之后的 Part 需要满足这个限制。

ByteHouse 中的 Compaction 是在全局做的,与前面提高的全局的 block ID 保持一致。

不仅仅是列式存储能力,ByteHouse 还在元数据管理、自研表引擎等技术点深度优化,为用户提供更极致的分析体验。

点击跳转ByteHouse了解更多

火山引擎ByteHouse:分析型数据库如何设计列式存储的更多相关文章

  1. 回首2018 | 分析型数据库AnalyticDB: 不忘初心 砥砺前行

    题记 分析型数据库AnalyticDB(下文简称ADB),是阿里巴巴自主研发.唯一经过超大规模以及核心业务验证的PB级实时数据仓库.截止目前,现有外部支撑客户既包括传统的大中型企业和政府机构,也包括众 ...

  2. 阿里下一代云分析型数据库AnalyticDB入选Forrester云化数仓象限

    前言 近期, 全球权威IT咨询机构Forrester发布"The Forrester Wave: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型数 ...

  3. 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读

    前言近期, 全球权威IT咨询机构Forrester发布"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型 ...

  4. 什么是分析型数据库PostgreSQL版

    分析型数据库PostgreSQL版(原HybridDB for PostgreSQL)为您提供简单.快速.经济高效的 PB 级云端数据仓库解决方案.分析型数据库PostgreSQL版 兼容 Green ...

  5. AnalyticDB - 分析型数据库

    https://yq.aliyun.com/teams/31?spm=5176.7937365.1120968.ee1.78505692UL9DhG 分析型数据库(AnalyticDB)是一种高并发低 ...

  6. 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践

    说到“大数据”,当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外一个热门的名词也很火,那就是“云”.越来越多的企业都在搭建属于自己的云平台,也有一些 ...

  7. Linux系统:Centos7下搭建ClickHouse列式存储数据库

    本文源码:GitHub·点这里 || GitEE·点这里 一.ClickHouse简介 1.基础简介 Yandex开源的数据分析的数据库,名字叫做ClickHouse,适合流式或批次入库的时序数据.C ...

  8. 开源列式存储引擎Parquet和ORC

    转载自董的博客 相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次 ...

  9. HBase 是列式存储数据库吗

    在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库. 行式数据库和列式数据库 在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行 ...

  10. 【HBase】与关系型数据库区别、行式/列式存储

    [HBase]与关系型数据库区别 1.本质区别 mysql:关系型数据库,行式存储,ACID,SQL,只能存储结构化数据 事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行,也就 ...

随机推荐

  1. 创建QUERY报表

    一.SQ02创建信息集 该事务代码用于查询需要的表,及表之间的关联关系 首先设置查询区域,标准区域中所建立的信息集仅在当前客户端使用,全局区域中建立的信息集可以跨client 创建信息集 选择基础表关 ...

  2. POJ:3660 Cow Contest (传递闭包 + Floyd)

    POJ 3660 http://poj.org/problem?id=3660 思路: 传递闭包 输入A > B,那么我们可以建立一套A ->B 的边. 然后求出传递闭包. 判断一个人是否 ...

  3. Codeforces 144A Arrival of the General (水)

    A Ministry for Defense sent a general to inspect the Super Secret Military Squad under the command o ...

  4. vue学习笔记 十七、父子组件 ---> 子组件传值

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  5. vue后台管理系统,接口环境配置

    https://coding.imooc.com/lesson/397.html#mid=31487

  6. npm, yarn和pnpm清理缓存

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. Spring————IOC入门学习

    Spring----入门学习 简介 优点 Spring是一个开源的免费的框架(容器)! Spring是一个轻量级,非入侵式的框架 控制反转(IOC),面向切面编程(AOP) 支持对事务的处理,对框架整 ...

  8. [转帖]解Bug之路-记一次中间件导致的慢SQL排查过程

    https://zhuanlan.zhihu.com/p/242265937 解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排 ...

  9. [转帖]shell编程之条件语句

    目录 一.条件测试 test命令 文件测试与整数测试 文件测试 整数值比较 字符串测试与逻辑测试 字符串比较 逻辑测试 二.if语句 if单分支语句 单分支结构 if双分支语句 双分支结构 if多分支 ...

  10. [转帖]create table INITRANS参数分析

    https://www.modb.pro/db/44701 1. 内容介绍 Oracle数据库create table时使用INITRANS参数设置数据块ITL事务槽的数量,确保该数据块上 并发事务数 ...