勾选以后,直接在microsoft store下载安装ubuntu。
逐条运行如下7条命令
1、sudo apt-get install -y apt-transport-https ca-certificates dirmngr
2、sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
3、echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
4、sudo apt-get update
5、sudo apt-get install -y clickhouse-server clickhouse-client
输入密码 admin
6、sudo service clickhouse-server start
7、clickhouse-client # or "clickhouse-client --password" if you've set up a password.
这里要输入咱们之前设置的密码admin 执行命令改为:clickhouse-client --password admin
说明连接成功。
使用方法类似mysql:
显示表:show tables
删除数据:ALTER TABLE default.order_wide DELETE WHERE id!='1'
启动Grafana监控clickhouse的命令:sudo service grafana-server start
DBeaver 数据库图形管理软件下载地址:
链接:https://pan.baidu.com/s/1NvYvwA_Vx-51hv1xpivZTA
提取码:m45n
账号 default 密码 admin 之前自己设定的密码
网页访问http://localhost:8123/play
创建数据库
create database test;
删除
drop database test
创建表 ClickHouse 有自己的数据类型,每个表都必须指定一个Engine属性来确定要创建的表的类
create table t1 (id Int32,name String) engine=TinyLog;
CREATE TABLE test.hello (
customer_id String,
time_stamp Date,
click_event_type String,
country_code FixedString(2),
source_id UInt64
)
ENGINE = MergeTree()
ORDER BY (time_stamp)
显示表
show tables;
插入数据
insert into t1 (id, name) values (1, 'abc'), (2, 'bbbb'),(3,'sdfg');
查询
select * from t1;
下面开始重点连接MySQL
CREATE DATABASE mysql_db ENGINE = MySQL('127.0.0.1:3306', 'fastadmin2023', 'root', 'root');
会生成如下的mysql_db数据库
show databases;
use mysql_db;
show tables;
能够通过clickhouse访问mysql数据库,并且对mysql表进行select和insert操作,不能update和delete操作
最近在做数据分析项目,里面有这样一个业务:把匹配的数据打上标签,放到新的索引中。
数据量:累计亿级的数据
使用场景:可能会单次查询大量的数据,但不会设置复杂的条件,且这些数据不会被再次修改
原来使用的数据库:ElasticSearch
问题:上面也说了我这里打上标记后,这些数据几乎不会再修改了。ES 是一个全文检索引擎,更适用于进行大量文本检索的情况。这里与我上面的使用场景就不太匹配了。
技术选型的考虑:改用战斗民族开发的 ClickHouse,它适用于 OLAP 也就是数据分析的场景,当数据写入后,通过不同维度不断挖掘、分析,发现其中的商业价值。ClickHouse 适用于读远大于写的情况。
此外,相比ES,ClickHouse 占用的硬盘空间更小,也有利于降低运维成本。
下面是我在尝试接入 ClickHouse 时的一些实践,以及关于 ClickHouse数组类型转换问题的解决方案。
Mybatis + ClickHouse
以前一直用 Mybatis 去操作 MySQL,其实 Mybatis 还可以操作 ClickHouse,这里用 Druid 进行连接管理。
PHP操作clickhouse 下载地址 https://github.com/smi2/phpClickHouse
<?php
return [
'host' => '127.0.0.1', // you hot name
'port' => '8123',
'username' => 'default',
'password' => 'admin',
'auth_method' => 1, // On of HTTP::AUTH_METHODS_LIST
];
<?php
include_once __DIR__ . '/../include.php';
$config = include_once __DIR__ . '/00_config_connect.php';
$db = new ClickHouseDB\Client($config);
//$db->verbose();
$db->settings()->readonly(false);
$result = $db->select(
'SELECT 12 as {key} WHERE {key} = :value',
['key' => 'ping', 'value' => 12]
);
if ($result->fetchOne('ping') != 12) {
echo "Error : ? \n";
}
print_r($result->fetchOne());
// ---------------------------- ASYNC SELECT ----------------------------
$state1 = $db->selectAsync('SELECT 1 as {key} WHERE {key} = :value', ['key' => 'ping', 'value' => 1]);
$state2 = $db->selectAsync('SELECT 2 as ping');
$db->executeAsync();
print_r($state1->fetchOne());
print_r($state1->rows());
print_r($state2->fetchOne('ping'));
//----------------------------------------//----------------------------------------