DockerはClickHouseをインストールし、データテストを初期化します

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介

ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタイムで生成できる列指向のデータベース管理システムです。主に OLAP (オンライン分析処理) シナリオで使用されます。 ClickHouse の原理と基礎知識は、今後の研究で徐々にまとめられる予定です。

1. DockerでClickHouseをインストールする

docker run -d --name some-clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9091:9000 \
--ulimit nofile=262144:262144 \
-v /home/clickhouse:/var/lib/clickhouse \
yandex/クリックハウスサーバー

2. SSBMツールをダウンロードする

1. https://github.com/vadimtk/ssb-dbgen.git をクローンします
2. cd ssb-dbgen
3. 作る

3. データを生成する

./dbgen -s 100 -T c
./dbgen -s 100 -T p
./dbgen -s 100 -T s
./dbgen -s 100 -T l
./dbgen -s 100 -T d

次のデータを表示

ここに画像の説明を挿入

4. テーブルを作成する

テーブル default.customer を作成します。
(
        C_CUSTKEY UInt32、
        C_NAME 文字列、
        C_ADDRESS 文字列、
        C_CITY LowCardinality(文字列)、
        C_NATION LowCardinality(文字列)、
        C_REGION LowCardinality(文字列)、
        C_PHONE 文字列、
        C_MKTSEGMENT LowCardinality(文字列)
)
ENGINE = MergeTree ORDER BY (C_CUSTKEY);
テーブル default.lineorder を作成します
(
    LO_ORDERKEY UInt32、
    LO_LINENUMBER UInt8、
    LO_CUSTKEY UInt32、
    LO_PARTKEY UInt32、
    LO_SUPPKEY UInt32、
    LO_ORDERDATE 日付、
    LO_ORDERPRIORITY LowCardinality(文字列)、
    LO_SHIPPRIORITY UInt8、
    LO_QUANTITYUInt8、
    LO_EXTENDEDPRICE UInt32、
    LO_ORDTOTALPRICE UInt32、
    LO_DISCOUNT UInt8、
    LO_REVENUE UInt32、
    LO_SUPPLYCOST UInt32、
    LO_TAXUInt8、
    LO_COMMITDATE 日付、
    LO_SHIPMODE LowCardinality(文字列)
)
ENGINE = MergeTree PARTITION BY toYear(LO_ORDERDATE) ORDER BY (LO_ORDERDATE, LO_ORDERKEY);
CREATE TABLE デフォルト.part
(
        P_PARTKEY UInt32、
        P_NAME 文字列、
        P_MFGR LowCardinality(文字列)、
        P_CATEGORY LowCardinality(文字列)、
        P_BRAND LowCardinality(文字列)、
        P_COLOR LowCardinality(文字列)、
        P_TYPE LowCardinality(文字列)、
        P_SIZE UInt8、
        P_CONTAINER LowCardinality(文字列)
)
ENGINE = MergeTree ORDER BY P_PARTKEY;
テーブル default.supplier を作成します。
(
        S_SUPPKEY UInt32、
        S_NAME 文字列、
        S_ADDRESS 文字列、
        S_CITY LowCardinality(文字列)、
        S_NATION LowCardinality(文字列)、
        S_REGION LowCardinality(文字列)、
        S_PHONE 文字列
)
ENGINE = MergeTree ORDER BY S_SUPPKEY;

5. データのインポート

準備:
まず、ssb-dbgen (lineorder.tbl、customer.tbl、part.tbl、supplier.tbl) をclickhouse-serverコンテナにテストします。

clickhouse-client --query "顧客フォーマットCSVに挿入" < customer.tbl
clickhouse-client --query "パーツに挿入フォーマット CSV" < part.tbl
clickhouse-client --query "サプライヤ形式 CSV に挿入" < suppliers.tbl
clickhouse-client --query "lineorder FORMAT CSV に挿入" < lineorder.tbl

注意: ここでエラーが発生した場合は、ClickHouseの設定を確認してください(ポートが占有されているかどうか、ユーザー名とパスワードが設定されているかどうか)

6. テスト

シリアルナンバークエリステートメントSQL消費時間 (ミリ秒)
質問1 SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS earnest FROM lineorder_flat WHERE toYear(l.LO_ORDERDATE) = 1993 AND l.LO_DISCOUNT BETWEEN 1 AND 3 AND l.LO_QUANTITY < 25; 36
Q2 SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS earnest FROM lineorder_flat WHERE toYYYYMM(l.LO_ORDERDATE) = 199401 AND l.LO_DISCOUNT BETWEEN 4 AND 6 AND l.LO_QUANTITYBETWEEN 26 AND 35; 12
Q3 SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS profit FROM lineorder_flat WHERE toISOWeek(l.LO_ORDERDATE) = 6 AND toYear(l.LO_ORDERDATE) = 1994 AND l.LO_DISCOUNT BETWEEN 5 AND 7 AND l.LO_QUANTITY BETWEEN 26 AND 35; 12
Q4 SELECT SUM(l.LO_REVENUE), toYear(l.LO_ORDERDATE) AS year, p.P_BRAND FROM lineorder_flat WHERE p.P_CATEGORY = 'MFGR#12' AND s.S_REGION = 'AMERICA' GROUP BY year, p.P_BRAND ORDER BY year, p.P_BRAND; 16
質問5 SELECT SUM(l.LO_REVENUE), toYear(l.LO_ORDERDATE) AS year, p.P_BRAND FROM lineorder_flat WHERE p.P_BRAND BETWEEN 'MFGR#2221' AND 'MFGR#2228' AND s.S_REGION = 'ASIA' GROUP BY year, p.P_BRAND ORDER BY year, p.P_BRAND; 21
質問6 toYear(l.LO_ORDERDATE) AS year、s.S_CITY、p.P_BRAND、SUM(l.LO_REVENUE -l.LO_SUPPLYCOST) AS profit を FROM lineorder_flat で選択し、s.S_NATION = 'UNITED STATES' AND (year = 1997 OR year = 1998) AND p.P_CATEGORY = 'MFGR#14' を GROUP BY year、s.S_CITY、p.P_BRAND で ORDER BY year、s.S_CITY、p.P_BRAND; 19

公式サイト参照:
https://clickhouse.tech/docs/en/getting-started/example-datasets/star-schema/#star-schema-benchmark

以上がDockerでClickHouseを作成し、データテストを初期化する手順です。Dockerの詳細については、123WORDPRESS.COMのその他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • docker mysqlの起動時に初期化SQLを実行する
  • Dockerfile を使用して MySQL イメージを構築し、データの初期化と権限設定を実装する詳細な説明
  • Docker での MySQL の初期化と起動の失敗の解決策
  • Dockerコンテナの起動時にMysqlデータベースを初期化する方法

<<:  Pythonの関数知識についての簡単な説明

>>:  Firefox の CSS を使用してデータを盗む

推薦する

Linux で yum と入力した後に -bash: /usr/bin/yum: No such file or directory という問題を解決する方法

Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...

Docker nginxは1つのホストを実装して複数のサイトを展開します

とあるサイトからレンタルした仮想マシンの有効期限が近づいており、更新料が200元以上かかります。Al...

Reactでコンポーネントを作成する方法

目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...

jQueryは従業員情報の追加と削除の機能を実装します

この記事では、従業員情報の追加と削除の機能を実装するためのjQueryの具体的なコードを参考までに共...

Vuexの補助関数の使い方

目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...

MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

1. デッドロックとは何ですか?正式な定義は次のとおりです: 2 つのトランザクションが相手側で必要...

MySQL のスローログ監視の誤報問題の分析と解決

以前は、さまざまな理由により、一部のアラームは真剣に受け止められませんでした。最近、休暇中に、すぐに...

Nginx ベースの HTTPS ウェブサイトを設定する手順

目次序文:暗号化アルゴリズム: 1. HTTPS の概要2. NginxはHTTPSウェブサイト設定...

Tomcat の静的ページ (html) で中国語の文字化けが発生する問題の究極の解決策

tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...

js を使用して USB スキャナー データを取得する方法

この記事では、USBバーコードスキャナデータを取得するjsの具体的なプロセスを参考までに紹介します。...

SEATAトランザクションサービスDockerのデプロイ手順の詳細説明

1. データベース認証ステートメントを作成する > データベース seata を作成します。 ...

MySQL 5.7 でパスワードを変更するときに発生する ERROR 1054 (42S22) の解決方法

MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...

MySQLがトランザクション分離を実装する方法の簡単な分析

目次1. はじめに2. RC および RR 分離レベル2.1. RRトランザクション分離レベルでのク...