Vous pouvez créer des tables locales et distribuées dans ApsaraDB for ClickHouse via Data Management Service (DMS).
Prérequis
Avez effectué les étapes suivantes du guide de démarrage rapide.
Procédure
-
Sur la page SQL Console de la console DMS, saisissez une instruction
CREATE TABLEpour créer une table locale.RemarqueLes tables locales stockent les données réelles. Chaque nœud ClickHouse possède ses propres tables locales qui gèrent et interrogent les données sur ce nœud. Utilisez les tables locales pour partitionner les données entre les nœuds du cluster.
Syntaxe :
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, ...];Paramètres :
Paramètre
Description
dbNom de la base de données. La base de données actuelle est utilisée par défaut.
local_table_nameNom de la table locale.
clusterNom du cluster. La valeur est fixée à default.
name1,name2Noms des colonnes.
type1,type2Types des colonnes.
engine_nameType de moteur de table. Pour plus d'informations, consultez la section Moteurs de table.
Définissez ce paramètre sur MergeTree pour les clusters à réplica unique ou sur ReplicatedMergeTree pour les clusters maître-réplica.
ImportantLorsque vous créez des tables dans un cluster Double-replica Edition, vous devez utiliser des moteurs de table répliqués de la famille MergeTree. Si vous utilisez des moteurs de table non répliqués, les données ne peuvent pas être répliquées entre les réplicas, ce qui peut entraîner une incohérence des données.
PARTITION BYClé de partitionnement.
ORDER BYClé de tri.
PRIMARY KEYClé primaire.
SAMPLE BYExpression d'échantillonnage. Si vous utilisez une expression d'échantillonnage, la clé primaire doit inclure cette expression.
SETTINGSAutres paramètres affectant les performances, tels que
index_granularity.RemarquePour plus d'informations sur les paramètres, consultez la section Créer une table.
Exemple :
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 ; -
Créez une table distribuée pour faciliter l'écriture et l'interrogation des données.
RemarqueApsaraDB for ClickHouse Enterprise Edition ne nécessite pas la création de tables distribuées. Pour plus de détails sur les moteurs de table pris en charge par l'Enterprise Edition, consultez le Guide de compatibilité ApsaraDB for ClickHouse Enterprise Edition.
Les tables distribuées ne stockent pas directement les données. Elles servent de couche d'interrogation qui achemine les requêtes vers les tables locales sur les différents nœuds et agrège les résultats. Utilisez les tables distribuées pour interroger les données entre les nœuds d'un cluster ClickHouse.
Syntaxe :
CREATE TABLE [db.]d_table_name ON CLUSTER cluster AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])Paramètres :
Paramètre
Description
dbNom de la base de données. La base de données actuelle est utilisée par défaut.
d_table_nameNom de la table distribuée.
clusterNom du cluster. La valeur est fixée à default.
local_table_nameNom de la table locale créée.
sharding_keyExpression de fragmentation.
RemarquePour plus d'informations sur les paramètres, consultez la section Créer une table.
Exemple :
CREATE TABLE ontime_local_distributed ON CLUSTER default AS clickhouse_demo.ontime_local ENGINE = Distributed(default, clickhouse_demo, ontime_local, rand());