前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >大数据ClickHouse进阶(十六):数据字典创建

大数据ClickHouse进阶(十六):数据字典创建

原创
作者头像
Lansonli
发布于 2022-10-17 00:00:25
发布于 2022-10-17 00:00:25
1.3K00
代码可运行
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客
运行总次数:0
代码可运行

​数据字典创建

一、简单介绍

数据字典是ClickHouse提供一种非常简单、实用的存储媒介,他以键值和属性映射的形式定义数据。字典中的数据会主动或者被动加载到内存并支持动态更新。由于字典数据常驻内存的特性,所以非常适合保存常量或经常使用的维度表数据,以避免不必要的JOIN查询。

数据字典分为内置与扩展两种形式,内置字典是ClickHouse默认自带的字典,外部字典是用户通过自定义配置实现的字典。ClickHouse目前只有一种内置字典:Yandex.Metrica字典,这个字典是ClickHouse自家产品上的字典,设计目的是快速存取地理数据,但是ClickHouse没有将地理数据公布出来,内置字典默认是禁用状态,想要使用内置字典还需要模拟数据然后开启,功能十分有限。在使用ClickHouse 字典时,外部扩展字典才是更加常用的功能。

在正常情况下,字典中的数据只能通过字典函数访问,ClickHouse设置了一类字典函数,专门用于字典数据的取用。我们也可以通过字典表将字典数据挂载到一张代理的数据表下,从而访问字典中的数据,也可以实现数据表与字典数据的join查询。

二、字典创建

在ClickHouse20版本之前创建外部数据字典需要创建大量的xml文件来实现,在ClickHouse20.1版本之后引入了“Create dictionary”语句创建数据字典,创建字典表举例操作如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#创建新的库并使用
create database dic_test_db;
use dic_test_db;

#创建普通MergeTree表,描述地理位置表
CREATE TABLE loc_info(
uuid String,
local_id UInt64,
local_name String
)engine=MergeTree()
order by uuid;

#创建 数据字典表
CREATE DICTIONARY dic_loc_info(
local_id UInt64,
local_name String
)PRIMARY KEY local_id
SOURCE(ClickHouse(
	HOST 'node1'
	PORT 9000
	USER 'default'
	TABLE 'loc_info'
	PASSWORD ''
	DB 'dic_test_db'
	))
LIFETIME (MIN 1 MAX 10)
LAYOUT(HASHED());
注意:以上创建字典表的参数解释如下:
HOST:指定ClickHouse节点名称
PORT:指定ClickHouse端口,默认9000
USER:连接ClickHouse用户名
PASSWORD:连接ClickHouse用户名对应密码
TABLE:此字典表映射的表名,字典表中的列名与映射表中列名一致。
DB:字典表映射表所在的库
LIFETIME:字典的自动更新频率
LAYOUT:字典的类型,决定了数据在内存中以何种结构组织和存储。目前扩展字典共拥有7种类型。

#创建普通用户表
CREATE TABLE person_info(
person_id String,
name String,
age UInt8,
loc_id UInt64
)engine=MergeTree()
order by person_id;

#向表loc_info中插入以下数据:
insert into loc_info values ('uuid1',100,'北京'),('uuid2',101,'上海'),('uuid3',102,'广州');

#向表 person_info中插入以下数据:
insert into person_info values ('1','张三',18,102),('2','李四',19,101),('1','王五',20,100);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大数据ClickHouse进阶(十七):数据字典查询和删除
通过system.dictionaries系统表可以查询扩展字典的元数据信息。查询语句如下:
Lansonli
2022/10/17
1K0
大数据ClickHouse进阶(十七):数据字典查询和删除
大数据ClickHouse进阶(十八):数据字典类型
在创建字典表语句中使用“layout”来指定字典的类型,目前扩展字典支持7种类型,分别为flat、hashed、range_hashed、cache、complex_key_hashed、complex_key_cache、ip_trie,不同的字典类型决定了数据在内存中以何种结构组织和存储。
Lansonli
2022/10/17
9340
大数据ClickHouse进阶(十八):数据字典类型
大数据ClickHouse进阶(十九):ClickHouse字典的数据源
在本地创建的csv文件需要放在“/var/lib/ClickHouse/user_files”路径下,在此目录下创建organization.csv文件,写入如下内容:
Lansonli
2022/10/17
9510
大数据ClickHouse进阶(十九):ClickHouse字典的数据源
大数据ClickHouse进阶(五):副本与分片
ClickHouse数据存储时支持副本和分片,副本指的就是一份数据可以在不同的节点上存储,这些节点上存储的每份数据相同,数据副本是增加数据存储冗余来防止数据丢失。分片指的是ClickHouse一张表的数据可以横向切分为多份,每份中的数据不相同且存储在不同的节点上,分片的目的主要是实现数据的水平切分,方便多线程和分布式查询数据。
Lansonli
2022/09/16
4.2K1
大数据ClickHouse进阶(五):副本与分片
大数据ClickHouse进阶(二十四):ClickHouse权限管理
网络权限使用networks标签设置,用户限制某个用户登录的客户端地址,例如,修改users.xml文件:
Lansonli
2022/11/14
1.4K0
大数据ClickHouse进阶(二十四):ClickHouse权限管理
大数据ClickHouse进阶(二十六):ClickHouse数据备份
在ClickHouse中存在副本,主要作用是保证数据的高可用,副本不能防止数据误删这类操作,ClickHouse提供了多种数据备份的方法来防止数据误删。
Lansonli
2022/11/17
2.5K0
大数据ClickHouse进阶(二十六):ClickHouse数据备份
数据分析实战:kafka+clickhouse数据收集
clickhouse是一款强大的数据仓库选择,不需要额外的依赖;兼容SQL,还提供了许多引擎。我们考虑使用,kafka作为分析数据的收集,各个服务节点只要向kafka发送数据,而无需关心数据的落地。
yield9tk
2022/04/20
1.7K0
大数据ClickHouse(十六):ClickHouse SQL语法之DML 操作
DML:Data Manipulation Language,数据操纵语言。ClickHouse中DML语言包含插入、更新、删除数据操作,DML操作仅适用MergeTree引擎,不能针对主键、分区键、排序键进行DML操作,DML操作不支持事务,一旦执行成功会立刻生效。
Lansonli
2022/09/01
5570
大数据ClickHouse(十六):ClickHouse SQL语法之DML 操作
ClickHouse让数据字典支持触发能力,以及使用多数据字典
在ClickHouse中,数据字典不支持触发器。数据字典仅用于存储元数据信息,用于管理表、列、索引等的元数据。它不具备支持触发器的功能。
一凡sir
2023/10/15
4970
ClickHouse让数据字典支持触发能力,以及使用多数据字典
ClickHouse(07)ClickHouse数据库引擎解析
支持非阻塞的DROP TABLE和RENAME TABLE查询和原子的EXCHANGE TABLES t1 AND t2查询。默认情况下使用Atomic数据库引擎。
张飞的猪
2024/03/10
3580
ClickHouse(07)ClickHouse数据库引擎解析
大数据ClickHouse进阶(六):Distributed引擎深入了解
Distributed引擎和Merge引擎类似,本身不存放数据,功能是在不同的server上把多张相同结构的物理表合并为一张逻辑表。
Lansonli
2022/09/17
2.6K0
大数据ClickHouse进阶(六):Distributed引擎深入了解
一文入门 | 性能凶悍的开源分析数据库ClickHouse
ClickHouse是一个开源的,面向列的MPP架构数据分析数据库(大规模并行处理),由俄罗斯Yandex为OLAP和大数据用例创建。
灵雀云
2022/06/06
3.4K0
一文入门 | 性能凶悍的开源分析数据库ClickHouse
ClickHouse使用自定义数据字典以及外部数据字典的数据更新
自定义字典可以定义和存储属性与值之间的映射关系,例如将外部数据源中的字符串值映射到整数值。
一凡sir
2023/10/15
6930
ClickHouse使用自定义数据字典以及外部数据字典的数据更新
ClickHouse 集群部署(不需要 Zookeeper)
(1)安装 ClickHouse Server 和 ClickHouse Client
用户1148526
2024/04/18
7.8K2
clickhouse 创建数据库和表
MySQL单条SQL是单线程的,只能跑满一个core,ClickHouse相反,有多少CPU,吃多少资源,所以飞快; ClickHouse不支持事务,不存在隔离级别。这里要额外说一下,有人觉得,你一个数据库都不支持事务,不支持ACID还玩个毛。ClickHouse的定位是分析性数据库,而不是严格的关系型数据库。又有人要问了,数据都不一致,统计个毛。举个例子,汽车的油表是100%准确么?为了获得一个100%准确的值,难道每次测量你都要停车检查么?统计数据的意义在于用大量的数据看规律,看趋势,而不是100%准确。 IO方面,MySQL是行存储,ClickHouse是列存储,后者在count()这类操作天然有优势,同时,在IO方面,MySQL需要大量随机IO,ClickHouse基本是顺序IO。 有人可能觉得上面的数据导入的时候,数据肯定缓存在内存里了,这个的确,但是ClickHouse基本上是顺序IO,用过就知道了,对IO基本没有太高要求,当然,磁盘越快,上层处理越快,但是99%的情况是,CPU先跑满了(数据库里太少见了,大多数都是IO不够用)。 二、创建库
用户5760343
2019/07/05
11.2K0
大数据ClickHouse(十四):Integration系列表引擎
ClickHouse提供了许多与外部系统集成的方法,包括一些表引擎。这些表引擎与其他类型的表引擎类似,可以用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源。
Lansonli
2022/08/30
7090
大数据ClickHouse(十四):Integration系列表引擎
大数据ClickHouse进阶(二十):MaterializeMySQL物化引擎深入了解
在ClickHouse基础课程中我们知道可以使用两种方式通过ClickHouse可以操作MySQL数据库,分别使用使用 MySQL数据库引擎和MySQL表引擎。
Lansonli
2022/11/03
2.2K1
大数据ClickHouse进阶(二十):MaterializeMySQL物化引擎深入了解
大数据存储技术之ClickHouse入门学习(二)
ClickHouse入门学习(一):https://blog.csdn.net/qq262593421/article/details/119514836
静谧星空TEL
2021/12/07
4.4K0
大数据存储技术之ClickHouse入门学习(二)
ClickHouse系列--消费kafka数据
kafka_broker_list :逗号分隔的brokers地址 (localhost:9092). kafka_topic_list :Kafka 主题列表,多个主题用逗号分隔. kafka_group_name :消费者组. kafka_format – Message format. 比如JSONEachRow、JSON、CSV等等
IT云清
2021/12/06
1.1K0
ClickHouse数据库数据定义手记之不一般的DDL和DML
前提 前面一篇文章已经很详细地介绍了ClickHouse中每种数据类型的定义和基本使用,这篇文章会详细地介绍ClickHouse中的DDL和DML,很多操作区别于传统的DBMS,特别是代价巨大的DEL
Throwable
2020/12/29
1.8K0
推荐阅读
相关推荐
大数据ClickHouse进阶(十七):数据字典查询和删除
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档