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. golang之常用方法/函数

    1. io.Reader转化为字符串, byte切片 import "bytes" func StreamToByte(stream io.Reader) []byte { buf ...

  2. python爬虫利器之Playwright

    Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium.Pyppeteer 等,都可以驱动浏览器进行各种自动化操作.它的功能也非常强大,对市面上的主 ...

  3. 深入理解 Task.Delay 的定时精度及其影响因素

    1. 原因 在日常开发中,Task.Delay 是一个常用的异步延迟方法.然而,Task.Delay 的定时并不总是非常准确.例如: 系统负载 Task.Delay 的定时精度可能会受到系统负载的影响 ...

  4. vue前端代码npm install报错的解决方法

    npm install,报错: npm WARN tarball tarball data for has-bigints@https://registry.npmmirror.com/has-big ...

  5. Flutter问题 Flutter MissingPluginException(No implementation found for method xxx on channel xxx)

    问题如题 有时候项目跑着跑着突然控制台就报了这个错,用hot restart也没有用,问题的本质是plugin没有找到,这时候有两种方法 flutter clean,会将依赖清除,这时候再重新pub ...

  6. 关于 Span 的一切:探索新的 .NET 明星: 2. Span<T> 是如何实现的?

    2. Span<T> 是如何实现的? https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp- ...

  7. 黑苹果(Hackintosh) - 问题,虚拟机中的黑苹果系统分辨率低,界面小

    问题截图 解决办法 先把 draw.iso 放进 VMware 的安装根目录 再设置 Mac OS 虚拟机系统的配置情况 如果实在不行 就使用 VM 的拉伸显示功能吧,就将就着用用

  8. bridge模式下 所有容器的 网关 都是 宿主机docker0网卡的ip

    bridge模式下 所有容器的 网关 都是 宿主机docker0网卡的ip

  9. 【Docker】安装镜像报错warning: /var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: Header

    这个的解决方法就是加上这个就可以了

  10. mac上遇到的错误sed command a expects followed by text

    上简单的替换操作 sed -i 's/apple/mac/g' full-path-file 执行后报错,"sed: 1: command a expects \ followed by t ...