Linux系统:Centos7下搭建ClickHouse列式存储数据库

本文源码:GitHub·点这里 || GitEE·点这里

一、ClickHouse简介

1、基础简介

Yandex开源的数据分析的数据库,名字叫做ClickHouse,适合流式或批次入库的时序数据。ClickHouse不应该被用作通用数据库,而是作为超高性能的海量数据快速查询的分布式实时处理平台,在数据汇总查询方面(如GROUP BY),ClickHouse的查询速度非常快。

下载仓库:https://repo.yandex.ru/clickhouse
中文文档:https://clickhouse.yandex/docs/zh/

2、数据库特点

(1)列式数据库

列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。

(2)数据压缩

在一些列式数据库管理系统中不是用数据压缩。但是, 数据压缩在实现优异的存储系统中确实起着关键的作用。

(3)数据的磁盘存储

许多的列式数据库只能在内存中工作,这种方式会造成比实际更多的设备预算。ClickHouse被设计用于工作在传统磁盘上的系统,它提供每GB更低的存储成本。

(4)多核心并行处理

大型查询可以以很自然的方式在ClickHouse中进行并行化处理,以此来使用当前服务器上可用的所有资源。

(5)多服务器分布式处理

在ClickHouse中,数据可以保存在不同的shard上,每一个shard都由一组用于容错的replica组成,查询可以并行的在所有shard上进行处理。

(6)支持SQL和索引

ClickHouse支持基于SQL的查询语言,该语言大部分情况下是与SQL标准兼容的。支持的查询包括GROUPBY,ORDERBY,IN,JOIN以及非相关子查询。不支持窗口函数和相关子查询。按照主键对数据进行排序,这将帮助ClickHouse以几十毫秒的低延迟对数据进行特定值查找或范围查找。

(7)向量引擎

为了高效的使用CPU,数据不仅仅按列存储,同时还按向量(列的一部分)进行处理。

(8)实时的数据更新

ClickHouse支持在表中定义主键。为了使查询能够快速在主键中进行范围查找,数据总是以增量的方式有序的存储在MergeTree中。因此,数据可以持续不断高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。

二、Linux下安装流程

1、下载仓库

curl -s
https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh
| sudo os=centos dist=7 bash

2、查看安装包

sudo yum list ‘clickhouse*‘

3、安装服务

sudo yum install -y clickhouse-server clickhouse-client

4、查看安装列表

sudo yum list installed ‘clickhouse*‘

控制台输出

Installed Packages
clickhouse-client.noarch
clickhouse-common-static.x86_64
clickhouse-server.noarch

5、查看配置

  • cd /etc/clickhouse-server/
  • vim config.xml
数据目录:/var/lib/clickhouse/
临时目录:/var/lib/clickhouse/tmp/
日志目录:/var/log/clickhouse-server
HTTP端口:8123
TCP 端口:9000

6、配置访问权限

config.xml文件中去掉下面配置的注释。

<listen_host>::</listen_host> 

7、启动服务

/etc/rc.d/init.d/clickhouse-server start

8、查看服务

ps -aux |grep clickhouse

三、基础操作

1、建表语句

CREATE TABLE cs_user_info (
  `id` UInt64,
  `user_name` String,
  `pass_word` String,
  `phone` String,
  `email` String,
  `create_day` Date DEFAULT CAST(now(),‘Date‘)
) ENGINE = MergeTree(create_day, intHash32(id), 8192)

注意事项:官方推荐引擎,MergeTree

Clickhouse 中最强大的表引擎当属MergeTree(合并树)引擎及该系列(*MergeTree)中的其他引擎。MergeTree引擎系列的基本理念如下。当你有巨量数据要插入到表中,你要高效地一批批写入数据片段,并希望这些数据片段在后台按照一定规则合并。相比在插入时不断修改(重写)数据进存储,这种策略会高效很多。

2、批量写入

INSERT INTO cs_user_info
  (id,user_name,pass_word,phone,email)
VALUES
  (1,‘cicada‘,‘123‘,‘13923456789‘,‘[email protected]‘),
  (2,‘smile‘,‘234‘,‘13922226789‘,‘[email protected]‘),
  (3,‘spring‘,‘345‘,‘13966666789‘,‘[email protected]‘);

3、查询语句

SELECT * FROM cs_user_info ;
SELECT * FROM cs_user_info WHERE user_name=‘smile‘ AND pass_word=‘234‘;
SELECT * FROM cs_user_info WHERE id IN (1,2);
SELECT * FROM cs_user_info WHERE id=1 OR id=2 OR id=3;

查询语句和操作MySQL数据库极其相似。

四、源代码地址

GitHub·地址
https://github.com/cicadasmile/linux-system-base
GitEE·地址
https://gitee.com/cicadasmile/linux-system-base

原文地址:https://blog.51cto.com/14439672/2446105

时间: 2024-11-01 21:08:37

Linux系统:Centos7下搭建ClickHouse列式存储数据库的相关文章

Infobright列式存储数据库

Infobright 是一个非常强大的列式存储数据库,基于MySQL的高效数据仓库. 之所以使用数据仓库,是因为目前MySQL数据库中的数据增长很快,定期会对一些历史记录表进行清除,但后期的统计分析还会用到这些历史数据,随着数据量的增大,查询也越来越慢,而数据库仓库特有的存储格式能够减小磁盘空间内的占用,同时列式的特点使得查询速度大为改观.选择Infobright是因为它锁支持的数据类型更多些,更接近于mysql,更节省磁盘空间,毕竟主要的统计查询还不是在数据仓库上,偶尔的查询一下速度倒不是要求

列式存储数据库-kudu

一.kudu概念 Apache Kudu是由Cloudera开源的存储引擎,可以同时提供低延迟的随机读写和高效的数据分析能力.Kudu支持水平扩展,使用Raft协议进行一致性保证,并且与Cloudera Impala和Apache Spark等当前流行的大数据查询和分析工具结合紧密. 这是一个为块数据的快分析而生的存储架构 二.kudu架构Master:master节点负责整个集群的元数据管理和服务协调.它承担着以下功能:作为catalog manager,master节点管理着集群中所有tab

HBase 是列式存储数据库吗

在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库. 行式数据库和列式数据库 在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理(OLAP)和即时查询.相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理(OLTP). 比如我们有以下的表格: 那么行式数据库和列式数据库存储模型分别如上面的左图和右图.可以看到,行式数据一行的

列式存储数据库

关系型数据库系统以二维表的形式呈现数据,比如下面的员工表 RowId EmpId Lastname Firstname Salary 001 10 Smith Joe 40000 002 12 Jones Mary 50000 003 11 Johnson Cathy 44000 004 22 Jones Bob 55000 上面的格式仅仅存在于理论和逻辑中,事实上存储设备要求数据序列化为某种形式. 我们知道对于硬盘来说,最昂贵的操作是查找.为了提高最终性能,所需要的相关数据应该以某种方式去存储

[转载] 【每周推荐阅读】C-Store:列式存储数据库

Record-based与column-based是数据库和存储系统里面两种不同的data layout.我们的思维逻辑是基于行记录的,即Record-based data layout,数据记录都是一行一行来存储和访问.但在很多数据库应用中发现(尤其是读请求为主要数据访问的数据库),人们往往只是访问一行记录中的某些属性数据,而不得不将整行数据读取出来,其中很多冗余的IO操作和数据其实没有必要的.如果能将避免这些冗余的IO操作和数据访问,那数据库访问的性能和吞吐将可以得到大大提高.C-Store

Linux系统:Centos7下搭建PostgreSQL关系型数据库

本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.数据库简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以运行在所有主流操作系统上,包括Linux.Unix.Windows等.PostgreSQL是完全的事务安全性数据库,完整地支持外键.联合.视图.触发器和存储过程,支持了大多数的SQL:2008标准的数据类型,包括整型.数值型.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大

linux系统CentOS7

linux系统CentOS7 到http://mirrors.sohu.com/mysql/下载想要的mysql版本 这里用到的是 mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz 用 WinSCP上传到指定的目录下,这里是 /usr/local/src 也可以直接在shell端提要供下载文件的详细url用wget命令下载到指定文件夹内 wget是一个从网络上自动下载文件的自由工具,它支持HTTP.HTTPS和FTP协议. -c : 接着下载没下载完的文件,允许

Linux系统 Centos7/Centos6.8 yum命令在线安装 MySQL5.6

Linux系统 Centos7 yum命令在线安装 MySQL5.6 标签: centosmysqlyum 2015-11-18 17:21 707人阅读 评论(0) 收藏 举报  分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. 现在Centos7的yum源中 没有mysql,可以直接安装.用了MariaDB 代替了. 那我们如果要装MySQL数据库,可以用以下方法 # wget http://dev.mysql.com/get/mysql-community-rele

linux,centos7上搭建LVS负载均衡

在linux,centos7上搭建LVS负载均衡 实前准备 准备五台虚拟机 四台centos7 一台做调度 一台做nfs缓存 两台做wed群集 一台windows7 开始逐个配置 配置nfs服务器(centos7在用的时候是在线下载源代码包但是为了做实验先把源代码用yum安装好后改为仅主机模式) IP:192.168.10.174 用rpm -q nfs-utils查看有没有安装 rpcbind (远程过程调用) 编辑配置文件 [[email protected] ~]# vim /etc/ex