1、表结构设置
【1】建表时指定副本数量:relication_num
【2】排序键
明细模型:DUPLICATE KEY(site_id, city_code)
聚合模型:AGGREGATE KEY(site_id, city_code)
更新模型:UNIQUE KEY(site_id, city_code)
BloomFilter索引:PROPERTIES ( "bloom_filter_columns"="k1,k2,k3" )
【3】分桶配置
DISTRIBUTED BY HASH(site_id) BUCKETS 10
【4】查看Docker容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' doris-be1
【5】表配置

PROPERTIES (
"replication_num" = "1",    //副本数
"colocate_with" = "group1", 
"in_memory" = "false",
"storage_format" = "DEFAULT"
);

【6】Olap表

ENGINE=OLAP

 
2、基础操作
【1】建表
明细模型
CREATE TABLE site_access_duplicate
(
site_id INT DEFAULT '10',
city_code SMALLINT,
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
DUPLICATE KEY(site_id, city_code)
DISTRIBUTED BY HASH(site_id) BUCKETS 10;
聚合模型
CREATE TABLE site_access_aggregate
(
site_id INT DEFAULT '10',
city_code SMALLINT,
pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(site_id, city_code)
DISTRIBUTED BY HASH(site_id) BUCKETS 10;
更新模型
CREATE TABLE site_access_unique
(
site_id INT DEFAULT '10',
city_code SMALLINT,
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
UNIQUE KEY(site_id, city_code)
DISTRIBUTED BY HASH(site_id) BUCKETS 10;
【2】明细模型插入测试数据
INSERT INTO site_access_duplicate
VALUES(10010,10,"wangshida",1),
(10011,10,"xiaohong",2),
(10012,10,"xiaoming",15)
【3】更新数据(不支持),通过更新模型插入数据方式实现
【4】删除数据(支持,比较慢)
delete from site_access_duplicate where site_id=10022
3、分析Sql
site_access_duplicate 明细模型
site_access_aggregate 聚合模型
site_access_unique 更新模型
【1】限制两个排序键
explain select * from site_access_duplicate where site_id = 10010 and city_code = 10;
0:OlapScanNode
TABLE: site_access_duplicate
PREAGGREGATION: ON
PREDICATES: `site_id` = 10010, `city_code` = 10
partitions=1/1
rollup: site_access_duplicate
tabletRatio=1/10
tabletList=11012
cardinality=4
avgRowSize=144.75
numNodes=3
tuple ids: 0
 
【2】只限制第一个排序键site_id
explain select * from site_access_duplicate where site_id = 10010
0:OlapScanNode
TABLE: site_access_duplicate
PREAGGREGATION: ON
PREDICATES: `site_id` = 10010
partitions=1/1
rollup: site_access_duplicate
tabletRatio=1/10
tabletList=11012
cardinality=4
avgRowSize=144.75
numNodes=3
tuple ids: 0
 
【3】只限制第二个排序键city_code
explain select * from site_access_duplicate where city_code = 2;
0:OlapScanNode
TABLE: site_access_duplicate
PREAGGREGATION: ON
PREDICATES: `city_code` = 10
partitions=1/1
rollup: site_access_duplicate
tabletRatio=10/10
tabletList=11004,11008,11012,11016,11020,11024,11028,11032,11036,11040
cardinality=11
avgRowSize=262.45456
numNodes=3
tuple ids: 0
 
4、物化视图,对于走不了shortkey的可以建物化视图解决
基础表
CREATE TABLE site_access_duplicate
(
site_id INT DEFAULT '10',
city_code SMALLINT,
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
DUPLICATE KEY(site_id, city_code)
DISTRIBUTED BY HASH(site_id) BUCKETS 10;
【1】创建物化视图
【注】报错errCode = 2, detailMessage = The materialized view is coming soon
对明细模型创建物化视图,需要在Fe配置文件中新增
enable_materialized_view=true
CREATE MATERIALIZED VIEW `site_access_duplicate_pv_view` AS
SELECT city_code, SUM(pv) AS sum_pv
FROM site_access_duplicate
GROUP BY city_code ORDER BY city_code
【2】查看数据库下物化视图
SHOW ALTER TABLE ROLLUP FROM test;
如果State为"FINISHED"说明基表到物化视图已经创建完成
【3】查看表物化视图结果
desc site_access_duplicate all;
【4】分析查询Sql是否走物化视图
PREAGGREGATION: ON 和 rollup: site_access_duplicate_pv_view说明使用物化视图
【5】删除物化视图
DROP MATERIALIZED VIEW IF EXISTS site_access_duplicate_pv_view from site_access_duplicate;
【6】智能路由规则
选择包含所有查询列的MV表
按照过滤和排序的Column筛选最符合的MV表
按照Join的Column筛选最符合的MV表
行数最小的MV表
列数最小的MV表
 
注意点:
(1)必须是单个表聚合
(2)支持以下聚合函数
COUNT
MAX
MIN
SUM
PERCENTILE_APPROX
HLL_UNION
(3)RollUp表的模型必须和Base表保持一致(聚合表的RollUp表是聚合模型,明细表的RollUp表是明细模型)
(4)Delete 操作时,如果 Where 条件中的某个 Key 列在某个 RollUp表中不存在,则不允许进行 Delete。
例删除username,该字段在物化视图不存在,则不允许删除。要不物化视图不更新数据可能对不上,解决办法删物化视图

5、bitmap索引
参考文章:https://zhuanlan.zhihu.com/p/54783053
【1】创建索引
CREATE INDEX idx_site_id ON site_access_duplicate (city_code)
USING BITMAP COMMENT '城市索引';
 
【2】查看表配置的索引
SHOW INDEX FROM site_access_duplicate;
 
【3】删除索引
DROP INDEX idx_site_id ON site_access_duplicate;
注意事项
(1)列都可以建Bitmap 索引;对于聚合模型,只有Key列可以建Bitmap 索引
(2)Bitmap索引, 应该在取值为枚举型, 取值大量重复, 较低基数
(3)不支持对Float、Double、Decimal 类型的列建Bitmap 索引
 
6、Bloomfilter索引
【1】添加索引,建表时指定
PROPERTIES ( "bloom_filter_columns"="city_code,pv" )
【2】查看索引
SHOW CREATE TABLE site_access_duplicate;
【3】删除索引
ALTER TABLE site_access_duplicate SET ("bloom_filter_columns" = "");
【4】修改索引
ALTER TABLE site_access_duplicate SET ("bloom_filter_columns" = "city_code,pv");
【5】打开Fe的Report开关 set is_report_success=true;
验证Sql

ALTER TABLE site_access_duplicate SET ("bloom_filter_columns" = "user_name");
select * from site_access_duplicate where user_name = 'xiaoming';

注意事项
(1)不支持对Tinyint、Float、Double 类型的列建Bloom Filter索引
(2)Bloom Filter索引只对in和=过滤查询有加速效果
(3)如果要查看某个查询是否命中了Bloom Filter索引,可以通过查询的Profile信息查看
 

7、集群管理

查看Fe集群状态  show frontends \G

查看Be集群状态  show backends \G

Doris数据库使用的更多相关文章

  1. 新型MPP的Doris数据库:数据模型和数据分区使用详解

    Apache Doris是一个现代化的MPP分析性数据库产品.是一个由百度开源,在2018年贡献给Apache基金会,成为有顶级开源项目.仅需要亚秒级响应时间即可获得查询结果,可以有效地支持实时数据分 ...

  2. 通过Nginx TCP反向代理实现Apache Doris负载均衡

    概述 Nginx能够实现HTTP.HTTPS协议的负载均衡,也能够实现TCP协议的负载均衡.那么,问题来了,可不可以通过Nginx实现Apache Doris数据库的负载均衡呢?答案是:可以.接下来, ...

  3. Apache Doris 单节点(可多节点)Docker集群制作教程

    集群制作Author:苏奕嘉脚本研发Author:种益调研测试Author:杨春东 前言 Apache Doris是当下非常火热和流行的MPP架构OLAP数据库,很多同学想自学/测试Doris的使用和 ...

  4. SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = select list expression not produced by aggregation output (missing from GROUP BY clause?): ......

    SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = select list expression not produced by aggregati ...

  5. JSP应用开发 -------- 电纸书(未完待续)

    http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术   第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...

  6. Apache Doris ODBC外表数据库主流版本及其ODBC版本对应关系

    本文是在CentOS 7.9下测试通过 使用的Doris是:0.15.0 unixODBC版本是:2.3.1 1.PostgreSQL 以下是PostgreSQL数据库版本和PostgreSQL OD ...

  7. 本周六 Apache DolphinScheduler & Doris 将联合线上 Meetup

    活动背景 2020年,大数据成为国家基建的一个重要组成,大数据在越来越多的领域展现威力.随着大数据的应用场景越来越多,大家对数据的响应速度和数据加工工作流的方便程度也提出了更高的要求.在这种背景下,相 ...

  8. Doris开发手记1:解决蛋疼的MySQL 8.0连接问题

    笔者作为Apache Doris的开发者,平时感觉相关Doris的文章写的很少.主要是很多时候不知道应该去记录一些怎么样的问题,感觉写的不好就会很慌张.新的一年,希望记录自己在Doris开发过程之中所 ...

  9. [Apache Doris] Apache Doris 元数据设计及DDL操作源码阅读

    元数据设计 如上图,Doris 的元数据主要存储4类数据: 用户数据信息.包括数据库.表的 Schema.分片信息等. 各类作业信息.如导入作业,Clone 作业.SchemaChange 作业等. ...

  10. 基于Ansible实现Apache Doris快速部署运维指南

    Doris Ansible 使用指南 Apache Doris 介绍 Apache Doris是一个现代化的MPP分析型数据库产品.仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析.Apac ...

随机推荐

  1. highcharts中的仪表盘样式

    仪表盘的样式如下: 是双表盘展示 左边的图中minorTickInterval的值为null,右边的minorTickInterval的值为"auto" 左边的图中lineColo ...

  2. Graylog之基本使用

    文档:https://docs.graylog.org/en/3.0/ Graylog Sidecar是一个轻量级配置管理系统,适用于不同的日志收集器,也称为后端.Graylog节点充当包含日志收集器 ...

  3. 服务器安全之DenyHosts

    情景:今天登录服务器,突然发现登录之后展示的信息有点多,仔细端倪发现: There were 3975 failed login attempts since the last successful ...

  4. JavaScript 样式操作

    1.类名操作 class类名以字符串的形式存储到标签和Dom元素的属性中,标签属性为class,Dom元素属性为className,两个属性是均支持读取和修改,修改其中的一个会同步至另一个属性 cla ...

  5. C# 企业微信消息推送对接,实现天气预报推送

    C# 企业微信消息推送对接,实现天气预报推送 迷恋自留地 准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最 ...

  6. less 常用方法

    介绍 Less 是 CSS 的预处理语言之一,为 CSS 增添了变量.Mixin.函数等特性,使CSS更易于维护扩展. 嵌套(Nesting) .header { .navgation: { font ...

  7. 从 ftp 上下载文件、文件夹

    下载子文件夹: wget -r -nH --cut-dir=1 ftp://ip/folder_name/ 下载压缩文件: wget ftp://ip/folder_name/folder_name/ ...

  8. 【转载】理解分布式id生成算法SnowFlake

    分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种. https://segmentfault.com/a/1190000011282426 概述 SnowFlake算 ...

  9. springboot拦截器过滤token,并返回结果及异常处理

    package com.xxxx.interceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sp ...

  10. Centos yum命令提示failed to set locale, defaulting to C

    目录 问题 locale提示 解决方案 问题 在输入yum命令是出现 Failed to set locale, defaulting to C 1 出现这个问题是由于系统没有正确设置locale环境 ...