clickhouse(OLAP-联机分析处理)
和传统的 OLTP(联机事物处理)不同的是,列式数据库更适合OLAP场景。
列式数据库有很多,这里主要介绍 clickhouse。
下图可以看出 行式和列式查询数据的区别:
行式:
\
列式:
\
小结:针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取100列中的5列,这将帮助你最少减少20倍的 I/O 消耗。
- docker安装运行clickhouse步骤:
- 拉取镜像
docker pull yandex/clickhouse-server
2. 挂载配置文件已开放所有ip、设置用户名密码
(附上配置文件 users.xml,其路径在容器中 /etc/clickhouse-server/users.xml)
3. 运行
docker run —name=clickhouse-server-test -p 8123:8123 -v users.xml:/etc/clickhouse-server/users.xml -d yandex/clickhouse-server:latest
- 基本数据库操作
1、连接数据库,使用命令:click-house-client
2、查看所有数据库 show databases(包括查看表等都和mysql类似)
3、创建数据库和mysql不同,有很多不同的配置可以设置,(附上clickhouse官方地址:【中国】clickhouse.com/docs/zh/dev… 【美国】clickhouse.com/docs/en/
)
- python客户端连接clickhouse-server
from clickhouse_driver import Client
host = ‘xxx.xxx.xxx.xxx' # 服务器地址(需修改为实际的ip)
port = '8123' # 端口
user = 'default' # 用户名
database = ‘voc_data' # 数据库
send_receive_timeout = 5 # 超时时间
client = Client(host=host)
# 创建数据库
db_sql = 'CREATE DATABASE IF NOT EXISTS voc_data;'
ans = client.execute(db_sql)
print(ans)