Anda dapat membuat tabel lokal dan tabel terdistribusi di ApsaraDB for ClickHouse menggunakan Data Management Service (DMS).
Prasyarat
Anda telah menyelesaikan langkah-langkah berikut dalam panduan Quick Start.
Prosedur
-
Di halaman SQL Console pada DMS console, masukkan pernyataan
CREATE TABLEuntuk membuat tabel lokal.CatatanTabel lokal menyimpan data aktual. Setiap node ClickHouse memiliki tabel lokalnya sendiri yang mengelola dan menjalankan kueri terhadap data pada node tersebut. Gunakan tabel lokal untuk partisi data di seluruh node kluster.
Sintaks:
CREATE TABLE [IF NOT EXISTS] [db.]local_table_name ON CLUSTER cluster ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1, INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2 ) ENGINE = engine_name() [PARTITION BY expr] [ORDER BY expr] [PRIMARY KEY expr] [SAMPLE BY expr] [SETTINGS name=value, ...];Parameter:
Parameter
Deskripsi
dbNama database. Secara default, database saat ini digunakan.
local_table_nameNama tabel lokal.
clusterNama kluster. Nilainya tetap default.
name1,name2Nama kolom.
type1,type2Tipe kolom.
engine_nameTipe mesin tabel. Untuk informasi lebih lanjut, lihat Table engines.
Atur parameter ini ke MergeTree untuk kluster edisi single-replica atau ReplicatedMergeTree untuk kluster master-replika.
PentingSaat membuat tabel di kluster Edisi Double-replica, Anda harus menggunakan mesin tabel Replicated dari family MergeTree. Jika Anda menggunakan mesin tabel non-replikasi, data tidak dapat direplikasi antar replika, yang dapat menyebabkan inkonsistensi data.
PARTITION BYKunci partisi.
ORDER BYKunci pengurutan.
PRIMARY KEYKunci primary.
SAMPLE BYEkspresi sampling. Jika Anda menggunakan ekspresi sampling, kunci primary harus mencakup ekspresi ini.
SETTINGSParameter lain yang memengaruhi performa, seperti
index_granularity.CatatanUntuk informasi lebih lanjut tentang parameter, lihat Create Table.
Contoh:
CREATE TABLE clickhouse_demo.ontime_local ON CLUSTER default ( `Year` UInt16, `Quarter` UInt8, `Month` UInt8, `DayofMonth` UInt8, `DayOfWeek` UInt8, `FlightDate` Date, `Reporting_Airline` String, `DOT_ID_Reporting_Airline` Int32, `IATA_CODE_Reporting_Airline` String, `Tail_Number` String, `Flight_Number_Reporting_Airline` String, `OriginAirportID` Int32, `OriginAirportSeqID` Int32, `OriginCityMarketID` Int32, `Origin` FixedString(5), `OriginCityName` String, `OriginState` FixedString(2), `OriginStateFips` String, `OriginStateName` String, `OriginWac` Int32, `DestAirportID` Int32, `DestAirportSeqID` Int32, `DestCityMarketID` Int32, `Dest` FixedString(5), `DestCityName` String, `DestState` FixedString(2), `DestStateFips` String, `DestStateName` String, `DestWac` Int32, `CRSDepTime` Int32, `DepTime` Int32, `DepDelay` Int32, `DepDelayMinutes` Int32, `DepDel15` Int32, `DepartureDelayGroups` String, `DepTimeBlk` String, `TaxiOut` Int32, `WheelsOff` Int32, `WheelsOn` Int32, `TaxiIn` Int32, `CRSArrTime` Int32, `ArrTime` Int32, `ArrDelay` Int32, `ArrDelayMinutes` Int32, `ArrDel15` Int32, `ArrivalDelayGroups` Int32, `ArrTimeBlk` String, `Cancelled` UInt8, `CancellationCode` FixedString(1), `Diverted` UInt8, `CRSElapsedTime` Int32, `ActualElapsedTime` Int32, `AirTime` Nullable(Int32), `Flights` Int32, `Distance` Int32, `DistanceGroup` UInt8, `CarrierDelay` Int32, `WeatherDelay` Int32, `NASDelay` Int32, `SecurityDelay` Int32, `LateAircraftDelay` Int32, `FirstDepTime` String, `TotalAddGTime` String, `LongestAddGTime` String, `DivAirportLandings` String, `DivReachedDest` String, `DivActualElapsedTime` String, `DivArrDelay` String, `DivDistance` String, `Div1Airport` String, `Div1AirportID` Int32, `Div1AirportSeqID` Int32, `Div1WheelsOn` String, `Div1TotalGTime` String, `Div1LongestGTime` String, `Div1WheelsOff` String, `Div1TailNum` String, `Div2Airport` String, `Div2AirportID` Int32, `Div2AirportSeqID` Int32, `Div2WheelsOn` String, `Div2TotalGTime` String, `Div2LongestGTime` String, `Div2WheelsOff` String, `Div2TailNum` String, `Div3Airport` String, `Div3AirportID` Int32, `Div3AirportSeqID` Int32, `Div3WheelsOn` String, `Div3TotalGTime` String, `Div3LongestGTime` String, `Div3WheelsOff` String, `Div3TailNum` String, `Div4Airport` String, `Div4AirportID` Int32, `Div4AirportSeqID` Int32, `Div4WheelsOn` String, `Div4TotalGTime` String, `Div4LongestGTime` String, `Div4WheelsOff` String, `Div4TailNum` String, `Div5Airport` String, `Div5AirportID` Int32, `Div5AirportSeqID` Int32, `Div5WheelsOn` String, `Div5TotalGTime` String, `Div5LongestGTime` String, `Div5WheelsOff` String, `Div5TailNum` String )ENGINE = ReplicatedMergeTree() PARTITION BY toYYYYMM(FlightDate) PRIMARY KEY (intHash32(FlightDate)) ORDER BY (intHash32(FlightDate)) SAMPLE BY intHash32(FlightDate) SETTINGS index_granularity= 8192 ; -
Buat tabel terdistribusi untuk memudahkan penulisan dan kueri data.
Catatan-
ApsaraDB for ClickHouse Enterprise Edition tidak mengharuskan Anda membuat tabel terdistribusi. Untuk detail tentang mesin tabel yang didukung oleh Enterprise Edition, lihat ApsaraDB for ClickHouse Enterprise Edition Compatibility Guide.
-
Tabel terdistribusi tidak menyimpan data secara langsung. Tabel ini berfungsi sebagai lapisan kueri yang mengarahkan kueri ke tabel lokal di berbagai node dan menggabungkan hasilnya. Gunakan tabel terdistribusi untuk kueri data lintas node dalam kluster ClickHouse.
Sintaks:
CREATE TABLE [db.]d_table_name ON CLUSTER cluster AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])Parameter:
Parameter
Deskripsi
dbNama database. Secara default, database saat ini digunakan.
d_table_nameNama tabel terdistribusi.
clusterNama kluster. Nilainya tetap default.
local_table_nameNama tabel lokal yang telah dibuat.
sharding_keyEkspresi sharding.
CatatanUntuk informasi lebih lanjut tentang parameter, lihat Create Table.
Contoh:
CREATE TABLE ontime_local_distributed ON CLUSTER default AS clickhouse_demo.ontime_local ENGINE = Distributed(default, clickhouse_demo, ontime_local, rand()); -