美文网首页
Presto数据模型

Presto数据模型

作者: liuzx32 | 来源:发表于2020-06-18 18:06 被阅读0次

    Presto采取三层表结构:

    1. catalog 对应某一类数据源,例如hive的数据,或mysql的数据
    2. schema 对应mysql中的数据库
    3. table 对应mysql中的表

    image.png


    Presto的存储单元包括:

    1. Page: 多行数据的集合,包含多个列的数据,内部仅提供逻辑行,实际以列式存储。
    2. Block:一列数据,根据不同类型的数据,通常采取不同的编码方式,了解这些编码方式,有助于自己的存储系统对接presto。

    Presto中不同类型的block:

    1. Array类型block,应用于固定宽度的类型,例如int,long,double。block由两部分组成
      boolean valueIsNull[]表示每一行是否有值。
      T values[] 每一行的具体值。
    2. 可变宽度的block,应用于string类数据,由三部分信息组成

    Slice : 所有行的数据拼接起来的字符串。
    int offsets[] :每一行数据的起始便宜位置。每一行的长度等于下一行的起始便宜减去当前行的起始便宜。
    boolean valueIsNull[] 表示某一行是否有值。如果有某一行无值,那么这一行的便宜量等于上一行的偏移量。

    1. 固定宽度的string类型的block,所有行的数据拼接成一长串Slice,每一行的长度固定。

    2. 字典block:对于某些列,distinct值较少,适合使用字典保存。主要有两部分组成:

    字典,可以是任意一种类型的block(甚至可以嵌套一个字典block),block中的每一行按照顺序排序编号。
    int ids[] 表示每一行数据对应的value在字典中的编号。在查找时,首先找到某一行的id,然后到字典中获取真实的值。

    相关文章

      网友评论

          本文标题:Presto数据模型

          本文链接:https://www.haomeiwen.com/subject/lwzuxktx.html