《ClickHouse原理解析与应用实践》读书笔记(3)

本文是《ClickHouse原理解析与应用实践》的读书笔记,重点讲解了ClickHouse的数据字典,包括内置和外部扩展字典的配置、使用及数据更新策略。数据字典能提升SQL查询性能,减少JOIN操作。文章详述了不同类型的字典,如flat、hashed、range_hashed等,并介绍了数据源和更新策略。
摘要由CSDN通过智能技术生成

开始学习《ClickHouse原理解析与应用实践》,写博客作读书笔记。

本文全部内容都来自于书中内容,个人提炼。

 第三章  ->  第四章:
 《ClickHouse原理解析与应用实践》读书笔记(2)_Aiky哇的博客-CSDN博客开始学习《ClickHouse原理解析与应用实践》,写博客作读书笔记。本文全部内容都来自于书中内容,个人提炼。第一章 -> 第二章:《ClickHouse原理解析与应用实践》读书笔记(1)_Aiky哇的博客-CSDN博客开始学习《ClickHouse原理解析与应用实践》,写博客作读书笔记。本文全部内容都来自于书中内容,个人提炼。https://aikysay.blog.csdn.net/article/details/125441354 【略过,网上资料很多,不用看这个】ClickHouse提供了DDLhttps://aikysay.blog.csdn.net/article/details/125451637

第5章 数据字典

数据字典是一种存储媒介,以键值和属性映射的形式定义数据。适合保存常量或经常使用的维度表数据。

字典中的数据会主动或者被动(参数控制)加载到内存,支持动态更新。

数据字典分为内置与扩展两种形式,内置字典是ck自带的,外部扩展字典是用户通过配置定义的。

正常情况下,字典中的数据只能通过字典函数访问。例外是字典表引擎。

5.1 内置字典

ck只是提供字典的定义机制和取数函数。没有内置任何现成的数据。

5.1.1 内置字典配置说明

内置字典在默认的情况下是禁用状态,需要开启后才能使用。

将config.xml文件中path_to_regions_hierarchy_file和 path_to_regions_names_files两项配置打开就可以开启内置字典。

【现在官网都没有提供这两个参数的说明,但是代码中是饱含着两个值的。我认为是没什么必要看的,内置字典也默认禁止,大多场景应该使用的是外部字典。参考Internal Dictionaries | ClickHouse Docs

5.1.2 使用内置字典

用到了 regionToName函数。类似这样的函数还有很多,在ClickHouse中它们被称为Yandex.Metrica函数。关于这套函数的更多用法,请参阅官方手册。

5.2 外部扩展字典

是以插件形式注册到ClickHouse中。

支持7种类型的内存布局和4类数据来源。更加常用。

参考External Dictionaries | ClickHouse Docs

5.2.1 准备字典数据

事先准备了三份测试数据,它们均使用CSV格式。用于演示。

# 企业组织数据
# flat、hashed、cache、complex_key_hashed和complex_key_cache字典的演示
# 三个字段 id、code和name
#-----------------------------------------------
1,"a0001","研发部"
2,"a0002","产品部"
3,"a0003","数据部"
4,"a0004","测试部"
5,"a0005","运维部"
6,"a0006","规划部"
7,"a0007","市场部"
#-----------------------------------------------

# 销售数据
# 用于range_hashed字典的演示
# 四个字段id、start、end和price
#-----------------------------------------------
1,2016-01-01,2017-01-10,100
2,2016-05-01,2017-07-01,200
3,2014-03-05,2018-01-20,300
4,2018-08-01,2019-10-01,400
5,2017-03-01,2017-06-01,500
6,2017-04-09,2018-05-30,600
7,2018-06-01,2019-01-25,700
8,2019-08-01,2019-12-12,800
#-----------------------------------------------

# asn数据
# 用于ip_trie字典的演示
# 三个字段ip、asn和country
#-----------------------------------------------
"82.118.230.0/24","AS42831","GB"
"148.163.0.0/17","AS53755","US"
"178.93.0.0/18","AS6849","UA"
"200.69.95.0/24","AS262186","CO"
"154.9.160.0/20","AS174","US"
#-----------------------------------------------

 

5.2.2 扩展字典配置文件的元素组成

扩展字典的配置文件由config.xml文件中的dictionaries_config 配置项指定:

<!-- Configuration of external dictionaries. See:
https://clickhouse.yandex/docs/en/dicts/external_dicts/
-->
<dictionaries_config>*_dictionary.xml</dictionaries_config>

Server Settings | ClickHouse Docs

在默认的情况下,ck会自动识别并加载/etc/clickhouse-server目录下所有以_dictionary.xml结尾的配置文件。

同时ck支持热加载更新配置文件。

单个字典配置文件内可以定义多个字典。

每一个字典由一 组dictionary元素定义。在dictionary元素之下又分为5个子元素,均为必填项,它们完整的配置结构如下所示:

<?xml version="1.0"?>
<dictionaries>
    <dictionary>
        <name>dict_name</name>
        <structure>
            <!—字典的数据结构 -->
        </structure>
        <layout>
            <!—在内存中的数据格式类型 -->
        </layout>
        <source>
            <!—数据源配置 -->
        </source>
        <lifetime>
            <!—字典的自动更新频率 -->
        </lifetime>
    </dictionary>
</dict
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值