ClickHouseを理解する-インストールとはじめに

序文:

ClickHouseの名前については長い間聞いていましたが、それ以上のことは知りませんでした。最近、ClickHouse関連のドキュメントを読み、インストールして体験することにしました。ClickHouseを知りたい友達は一緒に学ぶことができます。この記事では、主にClickHouseのインストール方法と基本的な知識を紹介します。

1.ClickHouseの紹介

ClickHouseは、オンライン分析(OLAP)用の柱状データベース管理システム(DBMS)です。ロシアの検索エンジン大手Yandexによってオープンソース化されており、主にデータ分析の分野で使用されています。現在、国内コミュニティは活発であり、さまざまな大手企業が大規模な使用をフォローアップしています。 OLAPフィールド。

ClickHouseの公式ウェブサイトがその機能のいくつかをどのように紹介しているかを見てみましょう。

  • 高速:ClickHouseは、利用可能なすべてのハードウェアを最大限に活用して、各クエリを可能な限り迅速に処理します。1つのクエリのピーク処理パフォーマンスは1秒あたり2TBを超えます(解凍後、使用された列のみ)。分散設定では、遅延の増加を回避するために、正常なコピー間で読み取りのバランスが自動的に取られます。
  • 障害耐性:ClickHouseはマルチホスト非同期レプリケーションをサポートし、複数のデータセンターに展開できます。すべてのノードが等しいため、単一の障害点を回避できます。単一ノードまたはデータセンター全体のダウンタイムは、システムの読み取りおよび書き込みの可用性に影響を与えません。
  • スケーラブル:ClickHouseは、垂直方向と水平方向に適切にスケーリングできます。ClickHouseは、数百または数千のノードを持つクラスター、単一のサーバー、または小さな仮想マシンで実行するように簡単に調整できます。現在、単一ノードごとにインストールされるデータの量は、数兆行または数百テラバイトを超えています。
  • 使いやすさ:ClickHouseは、箱から出してすぐに使用できます。すべてのデータ処理が簡素化されます。すべての構造化データがシステムに吸収され、レポートの作成にすぐに利用できます。SQLを使用すると、一部のDBMSにあるカスタムの非標準APIを使用せずに、目的の結果を表現できます。

2.ClickHouseインストールチュートリアル

ClickHouseは、x86_64、AArch64、またはPowerPC64LE CPUアーキテクチャを備えたLinux、FreeBSD、またはMac OSXで実行できます。Windowsシステムではインストールできないようですが、ClickHouseはDockerの展開もサポートしています。Windowsシステムでは、Dockerの下にClickHouseをインストールできます。

公式ドキュメントの推奨事項によると、DebianまたはUbuntuシステムは公式のプリコンパイル済みdebパッケージを使用してインストールでき、CentOSやRedHatなどのLinuxディストリビューションは公式のプリコンパイル済みrpmパッケージを使用してインストールできます。オペレーティングシステムがdebまたはrpmのインストールをサポートしていない場合パッケージ。tgzパッケージを使用するか、ソースコードを直接コンパイルしてインストールすることもできます。以下では、CentOSシステムを例として、ClickHouseをrpmモードでインストールします。

# 查看系统版本
[root@localhost ~]# more /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

# 检测当前CPU是否支持SSE 4.2
[root@localhost ~]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported

# 添加官方存储库
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

# 安装clickhouse
sudo yum install clickhouse-server clickhouse-client

# 启动clickhouse
sudo /etc/init.d/clickhouse-server start

# 进入clickhouse客户端
root@localhost ~]# clickhouse-client
ClickHouse client version 20.12.5.14 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.12.5 revision 54442.

localhost :) select 1;

SELECT 1

Query id: 42f5e589-2f81-44e2-9fb8-de45e682acfc

┌─1─┐
│ 1 │
└───┘

1 rows in set. Elapsed: 0.002 sec. 

localhost :) select now();

SELECT now()

Query id: c4c867a9-ae0e-4d6c-bb19-057e96cf6624

┌───────────────now()─┐
│ 2021-01-13 10:19:14 │
└─────────────────────┘

1 rows in set. Elapsed: 0.004 sec. 

3.ClickHouseの簡単な操作

ClickHouseは限定されたSQL操作をサポートし、SQL構文は従来のリレーショナルデータベースに似ています。以下に、ClickHouseの基本的な構文を簡単に紹介します。

# 1.创建数据库
# 语法:
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
# 示例:
[root@localhost ~]# clickhouse-client     
ClickHouse client version 20.12.5.14 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.12.5 revision 54442.

localhost :) create database test;

CREATE DATABASE test

Query id: c17cbf32-ab8c-45a0-8ebb-a7b0bdb88efe

Ok.

0 rows in set. Elapsed: 0.015 sec. 

localhost :) use test;

USE test

Query id: 4eeadf20-e8bc-4b84-a953-71cf16e133b6

Ok.

0 rows in set. Elapsed: 0.001 sec.

# 2.创建表
# 语法:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
    ...
) ENGINE = engine
# 示例:
root@localhost ~]# clickhouse-client
ClickHouse client version 20.12.5.14 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.12.5 revision 54442.

localhost :) use test;

USE test

Query id: 37248a4f-36ec-4ed3-a08a-c345db228c98

Ok.

0 rows in set. Elapsed: 0.001 sec. 

localhost :) create table t1 (id Int32,name String) engine=TinyLog;

CREATE TABLE t1
(
    `id` Int32,
    `name` String
)
ENGINE = TinyLog

Query id: 8296c170-72fa-4852-8447-ab548fa3b7b8

Ok.

0 rows in set. Elapsed: 0.230 sec. 

localhost :) show tables;

SHOW TABLES

Query id: 7da8d2d5-e4ed-45f1-b96c-4d23924512ba

┌─name─┐
│ t1   │
└──────┘

1 rows in set. Elapsed: 0.007 sec. 

# TinyLog是最简单的表的引擎,用于将数据存储在磁盘上。常用于小表。

# 3.插入数据
# 示例:
[root@localhost ~]# clickhouse-client
ClickHouse client version 20.12.5.14 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.12.5 revision 54442.

localhost :) use test;

USE test

Query id: 71a1de2a-17fe-4a0b-b9b6-7e934016892e

Ok.

0 rows in set. Elapsed: 0.001 sec. 

localhost :) insert into t1 (id, name) values (1, 'abc'), (2, 'bbbb'),(3,'sdfg');

INSERT INTO t1 (id, name) VALUES

Query id: d4982851-8b52-4158-949f-fa94cd7d8ff3

Ok.

3 rows in set. Elapsed: 0.002 sec. 

localhost :) select * from t1;

SELECT *
FROM t1

Query id: b73f366c-702e-4bda-b519-cb087754bbad

┌─id─┬─name─┐
│  1 │ abc  │
│  2 │ bbbb │
│  3 │ sdfg │
└────┴──────┘

3 rows in set. Elapsed: 0.002 sec. 

SQL構文とリレーショナルデータベースには類似点がありますが、ClickHouseを学習するには、既存の考え方を放棄する必要があります。特にデータタイプやテーブルエンジンなどの機能はなじみがなく、まだ習得が難しい。

参照:

おすすめ

転載: blog.51cto.com/10814168/2591994