Python工具箱系列(二十六)

ClickHouse(Click Stream,Data WareHouse)是俄罗斯的 Yandex于2016年开源的用于在线分析处理查询(OLAP:Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。特别值得称道的是Clickhouse没有走hadoop生态,采用 Local attached storage 作为存储,而hadoop目前已经发展的臃肿不堪了。

Clickhouse的特点有:

  • 列式存储,在特定场景下,能够获得很高的访问效率,并且节省空间

  • DBMS功能。几乎覆盖了标准SQL的大部分语法,为传统数据库使用者提供熟悉的操控体验

  • 多样化引擎

  • 高吞吐写入能力

  • 数据分区分片

  • 单表查询性能优异,多表JOIN查询较差

  • 适合于OLAP应用场景

  • Clickhouse社区活跃度高、版本迭代非常快,几乎几天到十几天更新一个小版本,我们非常看好它以后的发展。

Clickhouse之所以速度超快,在于其优良的系统架构设计,以及多个方向的优化。

主要包括:

  • 底层C++可以充分利用硬件优势

  • 摒弃了hadoop生态

  • 数据底层以列式存储

  • 利用单节点的多核并行处理

  • 为数据建立索引一级、二级、稀疏索引

  • 使用大量的算法处理数据

  • 支持向量化处理

  • 预先设计运算模型-预先计算

  • 分布式处理数据

一、安装

Clickhouse能够运行在linux/macos上,对于windows仍然支持不够,不建议在windows上尝试安装,但可以在windows上安装它的客户端。与Clickhouse官网提供的安装方式不同,我们选择使用apt安装。

 

主要原因是:

 

  • 虽然可以一键安装,但对于网络连接的要求高,稍有错误则前功尽弃

  • 大规模安装时,无法控制进度与验证

  • 无法利用缓冲机制,因此不可能在离线环境下完成安装

 

在ubuntu bionic上的安装过程如下所示:

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
echo "deb https://repo.clickhouse.tech/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client

# 安装成功后以服务方式启动
sudo service clickhouse-server start

# 使用客户端连接
clickhouse-client --password

服务器配置文件位于/etc/clickhouse-server/config.xml。默认绑定在回环地址(127.0.0.1)上,可以使用下述方式改变为远程访问支持。

vi /etc/clickhouse-server/config.xml
# <listen_host>::</listen_host>
sed -i 's/127.0.0.1/::/g' /etc/clickhouse-server/config.xml
cat /etc/clickhouse-server/config.xml |grep listen_host

二、python访问

 

Clickhouse官网列出了python对应的库:

 

  • infi.clickhouse_orm

  • clickhouse-driver

  • clickhouse-client

  • aiochclient

  • asynch

国内应用较为广泛的是Clickhouse-driver,安装过程如下:

 

pip install clickhouse-driver

 

访问的示范代码如下:

from clickhouse_driver import Client

ch_host = '192.168.0.66'
user = 'default'
password = '8848is8848'
dbname = 'default'
tbname = 'pm25'

# 连接并且查询
client = Client(host=ch_host,user=user,password=password)

def query(sqlstr):
    result = client.execute(sqlstr)
    print(result)

query('show databases')
query(f"DROP TABLE IF EXISTS {tbname}")
query(f"CREATE TABLE {tbname} (x Int32) ENGINE = Memory")
query('show tables')
client.execute(f'insert into {tbname} values',((x,) for x in range(100)))
query(f'SELECT * FROM {tbname} where x > 49 LIMIT 5')

以上代码与普通的数据库操作类似,还没有体现出Clickhouse的优势。后续文章将以海量测量数据为例,对Clickhouse与正宗的关系数据库进行比较。

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python工具箱系列(二十六) - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。现实中很多数据都是用图来表达的,比如社交…

    python 2023年5月11日
    00
  • Python工具箱系列(十三)

    上文介绍了使用AES算法进行文件加解密的代码。但是如果在代码中写死了(hardcode)文件名,每次要加解密文件都要去改python源代码,显然有些太笨了。为此,可以使用命令行参数来在不改动源代码的情况下,对命令行参数所指定的文件进行加/解密操作。也可以指定加解密后输出的文件名称,以方便使用。 我们如下约定: python文件名为aeshandler.py …

    Python开发 2023年4月2日
    00
  • Python工具箱系列(十一)

    上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。归根结底,英文单词中字母出现的频率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感兴趣的同学可以去百科查字母频率详细统计数据。如果密文数量足够大,仅仅采用频度分析法就可以破解。如果再加上现…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(十五)

    前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非就是以下方式: 保存到配置文件中,格式可以是txt/csv/ini/xml/yaml/json/其它特殊格式等; 保存到数据库中,数据库可以是本地的,也可以是远程的; 特殊情况下,配置信息…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(二十二)

    互联网世界里最流行的开源关系型数据库之一就是MySQL/MariaDB了,由于高度的相似,故而直接使用mysql统一指称。 windows下的安装 windows最吸引人的地方就在于易于安装。mysql在WINDOWS下也是最容易安装的。直接在官网上下载可安装程序,一路NEXT即可。 ubuntu18.04的安装 如果是生产环境部署,建议以普通用户角色,使用…

    Python开发 2023年3月31日
    00
  • Python工具箱系列(二十)

    数据库操作应是所有合格程序员的基本功,写的一手好SQL对于数据分析师而言更是安身立命之本。大部分软件开发人员使用的数据库都是MySql/MariaDB,毕竟LAMP(linux+apache+mysql+php)曾经风靡一时。但开发人员真正的瑞士小军刀却是SQLite,它是世界上装机量第一的嵌入式数据库。 SQLite最初的构思是在一条军舰上进行的。当时在通…

    2023年4月2日
    00
  • Python工具箱系列(二十六)

    ClickHouse(Click Stream,Data WareHouse)是俄罗斯的 Yandex于2016年开源的用于在线分析处理查询(OLAP:Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。特别值得称道…

    Python开发 2023年3月31日
    00
  • Python工具箱系列(二十四)

    不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQL Server(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与分析的神器。 SQL Server是微软在数据库领域打造的旗舰产品,使用起来安全、稳定、可靠,并且对于SQL语言的语法与特性支持的非常好。长期以来由于微软敌视开源运动…

    2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部