背景

最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统。按照习惯第一步先安装,本文对其用户权限管理方面进行梳理说明。

说明

ClickHouse是一个快速的开源数据库管理系统,它是面向列的。工作速度比传统方法快100-1000倍,ClickHouse的性能超过了目前市场上可比的面向列的DBMS。 每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。

  先看ClickHouse官网怎么介绍它的一些特性:

  1. 快速:ClickHouse会充分利用所有可用的硬件,以尽可能快地处理每个查询。单个查询的峰值处理性能超过每秒2 TB(解压缩后,仅使用的列)。在分布式设置中,读取是在健康副本之间自动平衡的,以避免增加延迟。
  2. 容错:ClickHouse支持多主机异步复制,并且可以跨多个数据中心进行部署。所有节点都相等,这可以避免出现单点故障。单个节点或整个数据中心的停机时间不会影响系统的读写可用性。
  3. 可伸缩:ClickHouse可以在垂直和水平方向上很好地缩放。 ClickHouse易于调整以在具有数百或数千个节点的群集上或在单个服务器上,甚至在小型虚拟机上执行。当前,每个单节点安装的数据量超过数万亿行或数百兆兆字节。
  4. 易用:ClickHouse简单易用,开箱即用。它简化了所有数据处理:将所有结构化数据吸收到系统中,并且立即可用于构建报告。 SQL允许表达期望的结果,而无需涉及某些DBMS中可以找到的任何自定义非标准API。

充分利用硬件:ClickHouse与具有相同的可用I/O吞吐量和CPU容量的传统的面向行的系统相比,其处理典型的分析查询要快两到三个数量级。 列式存储格式允许在RAM中容纳更多热数据,从而缩短了响应时间。

  1. 提高CPU效率:向量化查询执行涉及相关的SIMD处理器指令和运行时代码生成。 处理列中的数据会提高CPU行缓存的命中率。
  2. 优化磁盘访问:ClickHouse可以最大程度地减少范围查询的次数,从而提高了使用旋转磁盘驱动器的效率,因为它可以保持连续存储数据。
  3. 最小化数据传输:ClickHouse使公司无需使用专门针对高性能计算的专用网络即可管理其数据。

功能丰富:

  1. 友好的SQL:ClickHouse具有用户友好的SQL查询,并具有许多内置分析功能。除了大多数DBMS中可以找到的常用功能外,ClickHouse还提供了许多特定的功能。
  2. 高效管理非规范化数据:ClickHouse的面向列性质允许每个表具有数百或数千列,而不会减慢SELECT查询的速度。通过利用广泛的数据组织选项,例如数组,元组和嵌套数据结构,可以打包更多数据。
  3. 连接分布式或共置数据:ClickHouse提供了用于联接表的各种选项。联接既可以是本地群集,也可以访问存储在外部系统中的数据。还有一个外部字典支持,它提供了另一种更简单的语法,用于从外部源访问数据。
  4. 近似查询处理:用户可以控制结果准确性和查询执行时间之间的权衡,这在处理多个TB或PB的数据时非常方便。 ClickHouse还提供了概率数据结构,可快速有效地计算基数和分位数

可靠

  1. ClickHouse一直在管理PB级数据,这些数据为俄罗斯领先的搜索提供商,欧洲最大的IT公司之一Yandex的大量高负载大众受众服务提供服务。自2012年以来,ClickHouse一直为公司的网络分析服务,比较电子商务平台,公共电子邮件服务,在线广告平台,商业智能工具和基础架构监视提供强大的数据库管理。
  2. ClickHouse可以配置为位于独立节点上的纯分布式系统,而没有任何单点故障。
  3. 软件和硬件故障或配置错误不会导致数据丢失。 ClickHouse不会删除“损坏的”数据,而是将其保存或询问您在启动前该怎么做。每次对磁盘或网络进行读取或写入之前,所有数据均经过校验和。几乎不可能意外删除数据,因为即使存在人为错误,也有保护措施。
  4. ClickHouse提供了对查询复杂性和资源使用情况的灵活限制,可以通过设置对其进行微调。可以同时为多个高优先级低延迟请求和一些具有后台优先级的长时间运行的查询提供服务。

何时使用ClickHouse:

  用于分析结构良好且不可变的事件或日志流,建议将每个此类流放入具有预连接维度的单个宽表中。

何时不使用ClickHouse:

  不适合事务性工作负载(OLTP)、高价值的键值请求、Blob或文档存储。

外部介绍:

  在Percona的基准测试中,得出的结论是:ClickHouse在此基准测试中绝对是赢家:与MariaDB ColumnStore和Apache Spark相比,它显示出更好的性能(> 10倍)和更好的压缩。 如果您正在寻找最佳性能和压缩率,则ClickHouse看起来非常不错。同时,ColumnStore提供了一个MySQL端点(MySQL协议和语法),因此如果您要从MySQL进行迁移,它是一个不错的选择。具体的测试可以看上面2篇文章。

安装

环境要求:

具体的环境要求可以见官方文档说明。

开始:

ClickHouse目前有二种方法进行安装:一个是通过系统包安装(Ubuntu:apt-get;Centos:yum install),另一个是通过编译安装。可以在Quick start进行查看:

Ubuntu:
sudo apt-get install dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 echo "deb http://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 Centos、RedHat
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start
clickhouse-client 编译安装,注意安装前添加用户
export LATEST_VERSION=$(curl -s https://repo.clickhouse.tech/tgz/stable/ | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1)
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-common-static-dbg-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-server-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/stable/clickhouse-client-$LATEST_VERSION.tgz tar -xzvf clickhouse-common-static-$LATEST_VERSION.tgz
sudo clickhouse-common-static-$LATEST_VERSION/install/doinst.sh tar -xzvf clickhouse-common-static-dbg-$LATEST_VERSION.tgz
sudo clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh tar -xzvf clickhouse-server-$LATEST_VERSION.tgz
sudo clickhouse-server-$LATEST_VERSION/install/doinst.sh
sudo /etc/init.d/clickhouse-server start tar -xzvf clickhouse-client-$LATEST_VERSION.tgz
sudo clickhouse-client-$LATEST_VERSION/install/doinst.sh

安装完成之后,各个目录的分配如下:

  • 配置文件目录:/etc/clickhouse-server
  • 数据文件目录:/var/lib/clickhouse
  • 日志文件目录:/var/log/clickhouse-server

各个目录可以在配置文件(config.xml)里进行修改,后续文章会有关于配置文件的说明。个人比较推荐使用apt或则yum来安装,安装好了开始登陆使用吧!

登陆

有二种方式登入ClickHouse,一是通过命令行登陆,而是通过图形界面登陆。安装好后登陆的默认用户名是default。

①:命令行登陆,如:

clickhouse-client --user=zhoujy --password= --host=192.168.163.132

②:图形界面登陆,默认图形界面管理是不开启的,需要启动则需要打开参数:<http_server_default_response></http_server_default_response>,默认http端口为8123:

注意:上面的登陆用户是需要开启远程(任意IP)访问的,需要管理,非ReadOnly权限,否则登录失败,默认的default是不能登陆的(只能localhost登陆)。关于如何配置用户权限管理在下篇文章中介绍。

总结

      ClickHouse作为一个高性能OLAP数据库,虽然OLAP能力逆天但也不应该把它用于任何OLTP事务性操作的场景,相比OLTP:不支持事务、不擅长根据主键按行粒度的查询、不擅长按行删除数据,目前市场上的其他同类高性能OLAP数据库同样也不擅长这些方面。因为对于一款OLAP数据库而言,OLTP能力并不是重点。
 

ClickHouse学习系列之一【安装说明】的更多相关文章

  1. 全网最详细的Git学习系列之安装各个Git图形客户端(Windows、Linux、Mac系统皆适用ing)(图文详解)

    不多说,直接上干货! 目前Git图形客户端 TortoiseGit .SourceTree .GitUp .SmartGit .QGit .GitX .Gitnub.Tower .Git-cola . ...

  2. RabbitMQ学习系列一安装RabbitMQ服务

    RabbitMQ学习系列一:windows下安装RabbitMQ服务 http://www.80iter.com/blog/1437026462550244 Rabbit MQ 是建立在强大的Erla ...

  3. ClickHouse学习系列之三【配置文件说明】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在介绍了安装和用户权限管理之后,本文对其配置文件做下相关的 ...

  4. ClickHouse学习系列之五【系统库system说明】

    背景 之前介绍过ClickHouse相关的系列文章,现在ClickHouse已经能正常使用起来了,包括副本和分片.因为ClickHouse已经可以提供服务了,现在需要关心的就是服务期间该数据库的各项性 ...

  5. ClickHouse学习系列之七【系统命令介绍】

    背景  前面介绍了ClickHouse相关的系列文章,该系列文章包括了安装.权限管理.副本分片.配置说明等.这次介绍一些ClickHouse相关的系统命令,如重载配置文件.关闭服务和进程.停止和启动后 ...

  6. Oracle11g R2学习系列 之一安装篇

    前言 最近想去前同事推荐的一个Oracle相关的岗位竞争一下,由于之前没有使用Oracle的相关经验,所以决定学习一下,就算最终岗位应聘不成,至少也有了一些Oracle经验了,说不定哪天就用上了.再说 ...

  7. ClickHouse学习系列之二【用户权限管理】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在安装完之后首先做的应该如何设置用户密码以及权限控制.因为 ...

  8. ClickHouse学习系列之四【副本&分片部署说明】

    背景 以前介绍过ClickHouse相关的系列文章,现在继续说明.本文开始说明ClickHouse的副本与分片,和其他数据库一样,ClickHouse也会出现单节点故障和单节点资源到达上限的情况.所以 ...

  9. ClickHouse学习系列之六【访问权限和账户管理】

    背景 在之前写的文章[用户权限管理]里已经介绍了应该如何设置用户密码以及权限控制.但是只是针对修改配置文件的方式来进行用户权限管理,其实ClickHouse也支持基于RBAC(Role-Based A ...

随机推荐

  1. Docker实战之Redis-Cluster集群

    概述 接上一篇Docker实战之MySQL主从复制, 这里是Docker实战系列的第二篇,主要进行Redis-Cluster集群环境的快速搭建.Redis作为基于键值对的NoSQL数据库,具有高性能. ...

  2. 【ThinkPHP6:从TP3升级到放弃】1. 前言及准备工作

    春节期间因为疫情的关系出不去门,所以就研究了一下ThinkPHP的最新版本6.0.2, 自己写了一个博客程序. 现在, 打算写一个ThinkPHP6的专题, 用来把自己在写博客的过程中入过的坑和获得的 ...

  3. 达拉草201771010105《面向对象程序设计(java)》第九周学习总结

    达拉草201771010105<面向对象程序设计(java)>第九周学习总结 实验九异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: ...

  4. 身为 Java 程序员必须掌握的 10 款开源工具!

    本文主要介绍Java程序员应该在Java学习过程中的一些基本和高级工具.如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机.Java世界中存 ...

  5. MySQL之单表多表查询

    #1.单表查询 #单表查询语法 select <字段1,字段2....> from <表名> where <表达式> group by field 分组 havin ...

  6. 简单说 JavaScript中的事件委托(下)

    说明 上次我们说了一些,关于 JavaScript中事件委托的 基础知识,这次我们继续来看. 解释 先来一段代码 <!doctype html> <html lang="e ...

  7. vue中的自定义分页插件组件

    介绍一下,已经有很多的vue分页的组件了,大家都是大同小易,那么我就结合自身的使用,写出了一片文章 首先在新建一个分页模块 在模块中引入相应的代码,(内有详细的注释) template中 <di ...

  8. js实现box(2)(3)这种调用方式的方法

    box(2)(3)函数的调用方法有两种: 第一种: var box = function(num1){ return function(num2){ return num1+num2; }; }; a ...

  9. flask连接mysql出现ModuleNotFoundError: No module named 'MySQLdb'

    只需在配置SQLALCHEMY_DATABASE_URI时,加上pymysql就可以了:  app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql ...

  10. 【Java必修课】判断String是否包含子串的四种方法及性能对比

    1 简介 判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇.判断日志是否有ERROR信息等.本文将介绍四种方法并进行性能测试. 2 四种方法 2.1 JDK原生方法St ...