首页 > 其他分享 >clickhouse数据结构和常用数据操作

clickhouse数据结构和常用数据操作

时间:2023-11-17 19:01:22浏览次数:38  
标签:常用 -- demo db 索引 数据结构 数据 clickhouse

背景, 大数据中查询用mysql时间太长, 使用clickhouse 速度快, 数据写入mysql后同步到clickhouse中

测试1千万数据模糊搜索  mysql 需要30-40秒  clickhouse 约   100ms  


一 数据结构和存储引擎

1 查看clickhouse所有数据类型

select * from system.data_type_families;

2 常用数据类型及同mysql对比

MySQL

Clickhouse

大小(字节)

数据范围

tinyint

Int8

1

[-128 : 127]

smallint

Int16

2

[-32768 : 32767]

int

Int32

3

[-2147483648 : 2147483647]

bigint

Int64

4

[-9223372036854775808 : 9223372036854775807]

Int unsigned

UInt32

3

[0 : 4294967295]


MySQL

Clickhouse

大小(字节)

有效精度(位数)

float

Float32

4

6~7

double

Flout64

8

15~16

3 表存储引擎 engine

TinyLog,不分区,不索引,磁盘,列数据文件(.bin)
Memory,不分区,不索引,内存 (内存中, clickhouse 重启后表结构存在但数据被清空)
Merge,合并查询,并行查询多张表,类似视图
MergeTree,分区,索引,稀疏索引文件(.idx),列标识文件(.mrk,建立.idx与.bin之间的映射关系),列数据文件(.bin)
ReplacingMergeTree,分区,索引,组内去重
SummingMergeTree,分区,索引,组内聚合
Distributed分片集群,分布式表

二 sql操作和数据导入

1 sql操作

-- 新建数据库

CREATE DATABASE IF NOT EXISTS tmp_test;

-- 新建数据表

create table demo(id Int32,name String) engine=Memory;

-- 插入数据 , 注意 字符串使用单引号

insert into demo(id,name) values(110,'zhangsan');

-- 查询

select * from demo where name like '%san%' --字符串不能使用双引号

2 数据导入

a csv直接导入, 会新建表, 默认engine是Memory

b 先新建表,  再csv导入, 好处是可以指定engine是TinyLog

c 查询出数据数组, 使用代码插入

三 php操作clickhouse数据库

https://github.com/smi2/phpClickHouse

composer require smi2/phpclickhouse

$config = [
    'host' => '192.168.1.1',
    'port' => '8123',
    'username' => 'default',
    'password' => ''
];
$db = new ClickHouseDB\Client($config);

if (!$db->ping()) echo 'Error connect';
# 查看建表sql
$db->database('tmp_test');
echo $db->showCreateTable('demo');
# 插入数据
$db->insert('demo',
    [
        [1, 'A1'],
        [2, 'A2'],
        [3, 'A3'],
    ],
    ['id', 'name']
);
# 查询
$statement = $db->select('SELECT * FROM demo LIMIT 10');
var_dump($statement->rows());

标签:常用,--,demo,db,索引,数据结构,数据,clickhouse
From: https://blog.51cto.com/ding/8452229

相关文章

  • Dash应用浏览器端回调常用方法总结
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master大家好我是费老师,回调函数是我们在Dash应用中实现各种交互功能的核心,在绝大多数情况下,我们只需要以纯Python的方式编写常规服务端回调函数即可,这也贯彻了Dash无需编写javascript即可构建web应用的......
  • python包管理pip常用
    python包管理pip常用 1、pip安装包指定源pipinstall[package]-ihttps://pypi.douban.com/simple 2、pip常用命令 Commandspip常用Commands install  Installpackages download  Downloadpackagesuninstall Uninstallpackagesfreeze Ou......
  • OSPF常用配置和常用的查看命令
    1.启动OSPF进程,进入OSPF视图。[Huawei]ospf[process-id|RouterIDRouterID]路由器支持OSPF多进程,进程号是本地概念,两台使用不同OSPF进程号设备之间也能够建立邻接关系。2.创建并进入OSPF区域视图[Huawei-ospf-1]areaarea-id在OpenShortestPathFirst(OSPF)协议中,Ar......
  • Jenkins常见问题和常用命令
    常用命令:通过浏览器重启服务:http://192.168.0.1:8080/restart常见问题:ERROR:Exceptionwhenpublishing,exceptionmessage[Exectimedoutorwasinterruptedafterxxxxms]在SendfilesorexecutecommandsoverSSH-->Advanced里设定如下:或者将timeout时间延长到合适的......
  • 有序数据结构的交与并
    需要注意:1:求并集和交集前,需要将两个数组先进行排序(int或者vector都需要),否则结果有误2:需要定义vector的size,否则可能无法得到结果 vector的并#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta[4]={1,2,3,4};//已经有序,若无序,需要排序! intb[......
  • wps演示编辑常用30个快捷键
    下面是关于WPS演示编辑常用的30个快捷键的详细介绍说明:Ctrl+N:新建演示文稿。Ctrl+O:打开演示文稿。Ctrl+S:保存演示文稿。Ctrl+Z:撤销上一步操作。Ctrl+Y:恢复撤销的操作。Ctrl+X:剪切选中的内容。Ctrl+C:复制选中的内容。Ctrl+V:粘贴剪切或复制的内容。Ctrl+......
  • 什么是数据结构里的 Merkle 树
    Merkle树,也被称为"hashtree",是一种二叉树的数据结构。这种树的每个节点都是基于其子节点的一种特殊形式的hash。具体来说,叶节点的hash是由存储在那里的数据块(例如文件或文件的部分)生成的,而非叶节点的hash是由其子节点的hash生成的。如果Merkle树只有一个节点(也就是根......
  • 三维模型几何坐标偏差修正(纠正)的常用方法分析
    三维模型几何坐标偏差修正(纠正)的常用方法分析 以下是几个常用的倾斜摄影三维模型几何坐标偏差修正和纠正的方法:1、基于地面控制点的坐标转换:地面控制点是已知精确地理位置的点,可以通过测量仪器获取其准确的世界坐标。首先,在倾斜摄影影像中识别并测量这些地面控制点,并将其与真......
  • db2备份/恢复常用命令
    首先要切换到数据库用户中su-db2inst11.连接数据库db2connecttodatabaseName2.创建数据库db2createdbdatabaseNameusingcodesetutf-8territoryCN3.断开连接db2forceapplicationsall4.导入数据库db2restoredb databaseNametakenat20231109......
  • 关于MySQL的一些不常用知识及易错总结
    关于用户当我们刚刚登入数据库时,一般是用root用户登录,然后可以用root用户创建普通用户。注意,此处有权限限制,一般用户无法创建特殊或高权限用户,如root用户。创建用户:createuser'user01'@'localhost'identifiedby'user01';createuser'user01'@'%'identifiedby'user0......