Doris 知识树

Doris

数据模型

Aggregate(聚合模型)

  • 读时合并

Unique

  • 特殊的聚合模型,保证数据唯一
  • Unique模型的写时合并实现没有聚合模型的局限性,还是以刚才的数据为例,写时合并为每次导入的rowset增加了对应的delete bitmap,来标记哪些数据被覆盖

Duplicate

  • 写时合并
  • Duplicate 模型没有聚合模型的这个局限性。因为该模型不涉及聚合语意,在做 count(*) 查询时,任意选择一列查询,即可得到语意正确的结果。

Rollup与查询

ROLLUP 表的基本作用,在于在 Base 表的基础上,获得更粗粒度的聚合数据。

ROLLUP 调整前缀索引

数据划分

数据库

  • 数据表

    • 分区

      • tablit

数据湖

多源数据目录

  • 新的 Multi-Catalog 功能在原有的元数据层级上,新增一层Catalog,构成 Catalog -> Database -> Table 的三层元数据层级。

    • Hive
    • Iceberg
    • Hudi
    • Elasticsearch
    • JDBC:对接数据库访问的标准接口(JDBC)来访问各式数据库的数据

索引

内建的智能索引

  • 前缀索引
  • ZoneMap 索引

用户手动创建的二级索引

  • 倒排索引

    • Doris使用CLucene作为底层的倒排索引库
    • CREATE TABLE table_name
      (
      columns_difinition,
      INDEX idx_name1(column_name1) USING INVERTED [PROPERTIES(“parser” = “english|chinese”)] [COMMENT ‘your comment’]
      INDEX idx_name2(column_name2) USING INVERTED [PROPERTIES(“parser” = “english|chinese”)] [COMMENT ‘your comment’]
      – 语法1
      CREATE INDEX idx_name ON table_name(column_name) USING INVERTED [PROPERTIES(“parser” = “english|chinese”)] [COMMENT ‘your comment’];
      – 语法2
      ALTER TABLE table_name ADD INDEX idx_name(column_name) USING INVERTED [PROPERTIES(“parser” = “english|chinese”)] [COMMENT ‘your comment’];
      )
      table_properties;
  • bloomfilter索引

    • 特点

      • 空间效率高的概率型数据结构,用来检查一个元素是否在一个集合中。
      • 对于一个元素检测是否存在的调用,BloomFilter会告诉调用者两个结果之一:可能存在或者一定不存在。
      • 缺点是存在误判,告诉你可能存在,不一定真实存在。
  • ngram bloomfilter索引

    • 为了提升like的查询性能,增加了NGram BloomFilter索引,其实现主要参照了ClickHouse的ngrambf。
    • CREATE TABLE table3 (
      siteid int(11) NULL DEFAULT “10” COMMENT “”,
      citycode smallint(6) NULL COMMENT “”,
      username varchar(32) NULL DEFAULT “” COMMENT “”,
      INDEX idx_ngrambf (username) USING NGRAM_BF PROPERTIES(“gram_size”=“3”, “bf_size”=“256”) COMMENT ‘username ngram_bf index’
      ) ENGINE=OLAP
      AGGREGATE KEY(siteid, citycode, username) COMMENT “OLAP”
      DISTRIBUTED BY HASH(siteid) BUCKETS 10
      PROPERTIES (
      “replication_num” = “1”
      );

– PROPERTIES(“gram_size”=“3”, “bf_size”=“256”),分别表示gram的个数和bloom filter的字节数。
– gram的个数跟实际查询场景相关,通常设置为大部分查询字符串的长度,bloom filter字节数,可以通过测试得出,通常越大过滤效果越好,可以从256开始进行验证测试看看效果。当然字节数越大也会带来索引存储、内存cost上升。
– 如果数据基数比较高,字节数可以不用设置过大,如果基数不是很高,可以通过增加字节数来提升过滤效果。

  • bitmap索引

    • 用户可以通过创建bitmap index 加速查询
    • CREATE INDEX [IF NOT EXISTS] index_name ON table1 (siteid) USING BITMAP COMMENT ‘balabala’;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值