OLAP业务更适合使用列式数据库

601 阅读1分钟

clickhouse(OLAP-联机分析处理)

和传统的 OLTP(联机事物处理)不同的是,列式数据库更适合OLAP场景。

列式数据库有很多,这里主要介绍 clickhouse。

下图可以看出 行式和列式查询数据的区别:

行式:

\

列式:

\

小结:针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取100列中的5列,这将帮助你最少减少20倍的 I/O 消耗。

  • docker安装运行clickhouse步骤:
  1.  拉取镜像
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)