Docker installiert ClickHouse und initialisiert den Datentest

Docker installiert ClickHouse und initialisiert den Datentest

Clickhouse-Einführung

ClickHouse ist ein spaltenorientiertes Datenbankverwaltungssystem, das mithilfe von SQL-Abfragen analytische Datenberichte in Echtzeit generieren kann. Es wird hauptsächlich in OLAP-Szenarien (Online Analytical Processing) verwendet. Die Prinzipien und Grundkenntnisse von ClickHouse werden in zukünftigen Studien langsam zusammengefasst.

1. Installieren Sie ClickHouse mit Docker

docker run -d --name irgendein-Clickhouse-Server \
-p 8123:8123 -p 9009:9009 -p 9091:9000 \
--ulimit nofile=262144:262144 \
-v /home/clickhouse:/var/lib/clickhouse \
Yandex/Clickhouse-Server

2. Laden Sie das SSBM-Tool herunter

1. Git-Klon https://github.com/vadimtk/ssb-dbgen.git
2. cd ssb-dbgen
3. machen

3. Daten generieren

./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

Sehen Sie sich die folgenden Daten an

Bildbeschreibung hier einfügen

4. Erstellen Sie eine Tabelle

Tabelle erstellen Standard.Kunde
(
        C_CUSTKEY UInt32,
        C_NAME-Zeichenfolge,
        C_ADDRESS-Zeichenfolge,
        C_CITY LowCardinality(Zeichenfolge),
        C_NATION LowCardinality(Zeichenfolge),
        C_REGION LowCardinality(Zeichenfolge),
        C_PHONE-Zeichenfolge,
        C_MKTSEGMENT LowCardinality(Zeichenfolge)
)
ENGINE = MergeTree ORDER BY (C_CUSTKEY);
Tabelle erstellen Standard.lineorder
(
    LO_ORDERKEY UInt32,
    LO_LINENUMBER UInt8,
    LO_CUSTKEY UInt32,
    LO_PARTKEY UInt32,
    LO_SUPPKEY UInt32,
    LO_ORDERDATE Datum,
    LO_ORDERPRIORITY Niedrige Kardinalität (String),
    LO_SHIPPRIORITY UInt8,
    LO_QUANTITY UInt8,
    LO_EXTENDEDPRICE UInt32,
    LO_ORDTOTALPRICE UInt32,
    LO_DISCOUNT UInt8,
    LO_REVENUE UInt32,
    LO_SUPPLYCOST UInt32,
    LO_TAX UInt8,
    LO_COMMITDATE Datum,
    LO_SHIPMODE Niedrige Kardinalität (Zeichenfolge)
)
ENGINE = MergeTree PARTITION BY toYear(LO_ORDERDATE) ORDER BY (LO_ORDERDATE, LO_ORDERKEY);
CREATE TABLE Standardteil
(
        P_PARTKEY UInt32,
        P_NAME-Zeichenfolge,
        P_MFGR LowCardinality(Zeichenfolge),
        P_CATEGORY LowCardinality(Zeichenfolge),
        P_BRAND LowCardinality(Zeichenfolge),
        P_COLOR LowCardinality(Zeichenfolge),
        P_TYPE LowCardinality(Zeichenfolge),
        P_SIZE UInt8,
        P_CONTAINER LowCardinality(Zeichenfolge)
)
ENGINE = MergeTree ORDER BY P_PARTKEY;
Tabelle erstellen Standard.Lieferant
(
        S_SUPPKEY UInt32,
        S_NAME-Zeichenfolge,
        S_ADDRESS-Zeichenfolge,
        S_CITY LowCardinality(Zeichenfolge),
        S_NATION LowCardinality(Zeichenfolge),
        S_REGION LowCardinality(Zeichenfolge),
        S_PHONE-Zeichenfolge
)
ENGINE = MergeTree ORDER BY S_SUPPKEY;

5. Daten importieren

Vorbereitung:
Testen Sie zunächst ssb-dbgen (lineorder.tbl, customer.tbl, part.tbl, supplier.tbl) im Clickhouse-Server-Container

clickhouse-client --query "INSERT INTO customer FORMAT CSV" < customer.tbl
clickhouse-client --query "INSERT INTO Teilformat CSV" < Teil.tbl
clickhouse-client --query "INSERT INTO supplier FORMAT CSV" < lieferant.tbl
clickhouse-client --query "INSERT INTO lineorder FORMAT CSV" < lineorder.tbl

Hinweis: Sollte hier ein Fehler auftreten, prüfe die Konfiguration von ClickHouse (ob der Port belegt ist, ob Benutzer und Passwort gesetzt sind)

6. Testen

Seriennummer Abfrageanweisung SQL Verbrauchte Zeit (ms)
Frage 1 SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS Umsatz FROM lineorder_flat WHERE toYear(l.LO_ORDERDATE) = 1993 AND l.LO_DISCOUNT BETWEEN 1 AND 3 AND l.LO_QUANTITY < 25; 36
Fragebogen SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS Umsatz 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
Drittes Quartal SELECT SUM(l.LO_EXTENDEDPRICE * l.LO_DISCOUNT) AS Umsatz FROM lineorder_flat WHERE toISOWeek(l.LO_ORDERDATE) = 6 AND toYear(l.LO_ORDERDATE) = 1994 AND l.LO_DISCOUNT ZWISCHEN 5 UND 7 AND l.LO_QUANTITY ZWISCHEN 26 UND 35; 12
Viertes Quartal SELECT SUM(l.LO_REVENUE), toYear(l.LO_ORDERDATE) AS Jahr, p.P_BRAND FROM lineorder_flat WHERE p.P_CATEGORY = „MFGR#12“ AND s.S_REGION = „AMERICA“ GROUP BY Jahr, p.P_BRAND ORDER BY Jahr, p.P_BRAND; 16
Frage Q5 SELECT SUM(l.LO_REVENUE), toYear(l.LO_ORDERDATE) AS Jahr, p.P_BRAND FROM lineorder_flat WHERE p.P_BRAND ZWISCHEN 'MFGR#2221' UND 'MFGR#2228' UND s.S_REGION = 'ASIA' GROUP BY Jahr, p.P_BRAND ORDER BY Jahr, p.P_BRAND; einundzwanzig
Frage 6 SELECT toYear(l.LO_ORDERDATE) AS Jahr, s.S_CITY, p.P_BRAND, SUM(l.LO_REVENUE -l.LO_SUPPLYCOST) AS Gewinn FROM lineorder_flat WHERE s.S_NATION = ‚VEREINIGTE STAATEN‘ UND (Jahr = 1997 ODER Jahr = 1998) UND p.P_CATEGORY = ‚MFGR#14‘ GROUP BY Jahr, s.S_CITY, p.P_BRAND ORDER BY Jahr, s.S_CITY, p.P_BRAND; 19

Offizielle Website-Referenz:
https://clickhouse.tech/docs/en/getting-started/example-datasets/star-schema/#star-schema-benchmark

Oben sind die Details von Docker, wie ClickHouse erstellt und Datentests initialisiert werden. Weitere Informationen zu Docker finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Führen Sie die Initialisierungs-SQL aus, wenn Docker MySQL startet
  • Detaillierte Erläuterung der Verwendung von Dockerfile zum Erstellen eines MySQL-Images und zum Implementieren der Dateninitialisierung und Berechtigungseinstellung
  • Lösung für MySQL-Initialisierungs- und Startfehler in Docker
  • So initialisieren Sie die Mysql-Datenbank, wenn der Docker-Container gestartet wird

<<:  Eine kurze Diskussion über das Funktionswissen von Python

>>:  Datendiebstahl mit CSS in Firefox

Artikel empfehlen

Einige Vorschläge für HTML-Anfänger und Neulinge, Experten können sie ignorieren

Gefühle: Ich bin Backend-Entwickler. Manchmal fühl...

Beispielcode für die programmgesteuerte Verarbeitung von CSS-Stilen

Vorteile eines programmatischen Ansatzes 1. Globa...

JavaScript implementiert eine verschiebbare Modalbox

In diesem Artikel wird der spezifische JavaScript...

Implementierung des React-Konfigurations-Subroutings

1. Die Komponente First.js hat Unterkomponenten: ...

JS implementiert Anforderungsdispatcher

Inhaltsverzeichnis Abstraktion und Wiederverwendu...

Implementierungsschritte für die Paketierung und Optimierung von Vue-Projekten

Inhaltsverzeichnis Verpacken, Starten und Optimie...

WeChat-Applet-Canvas implementiert Signaturfunktion

Im WeChat-Applet-Projekt umfasst das Entwicklungs...

Detaillierte Erklärung der Anwendung von CSS Sprite

CSS Sprite, auch bekannt als CSS Sprite, ist eine...

Installieren Sie ein CentOS-System basierend auf WindowsX Hyper-V

Derzeit nutzen die meisten Linux-Benutzer entwede...