ApsaraDB for ClickHouse tablo oluşturmak için dört yöntem destekler: açık şema belirtme, mevcut bir tablonun şemasını kopyalama, bir SELECT sonuç kümesinin yapısını yansıtma ve birden çok yerel tabloyu kapsayan dağıtılmış bir tablo oluşturma.
Yerel bir tablo oluşturun
Yerel bir tablo verileri oluşturulduğu düğümlerde saklar. Tablo tanımının kümedeki tüm düğümlere çoğaltılmasını sağlamak için ON CLUSTER default ifadesini kullanın.
Sözdizimi
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, ...];
Parametreler
| Parametre | Açıklama |
|---|---|
db |
Veritabanı adı. Varsayılan olarak geçerli veritabanı kullanılır. |
local_table_name |
Yerel tablonun adı. |
ON CLUSTER cluster |
Tabloyu her düğümde oluşturur. Sabit değer: ON CLUSTER default. |
name1, name2 |
Sütun adları. |
type1, type2 |
Sütun veri türleri. Desteklenen türler için bkz. Veri türleri. |
ENGINE = engine_name() |
Tablo motoru. Desteklenen motorlar için bkz. Tablo motorları. |
ORDER BY expr |
Sıralama anahtarı. Gereklidir. Bir sütun demetini veya herhangi bir ifadeyi kabul eder. |
[DEFAULT|MATERIALIZED|ALIAS expr] |
Bir sütun için varsayılan ifade türü: DEFAULT değer belirtilmediğinde otomatik olarak bir değer üretir; MATERIALIZED somutlaştırılmış bir ifadedir; ALIAS takma ad ifadesidir. |
GRANULARITY |
Dizin tane büyüklüğü. |
[PARTITION BY expr] |
Bölümleme anahtarı. Genellikle bir tarih alanı veya tarih ifadesi olur. Diğer alanları veya ifadeleri de kabul eder. |
[PRIMARY KEY expr] |
Birincil anahtar. Varsayılan olarak sıralama anahtarıyla aynı değeri alır. Çoğu durumda bu yan tümceyi atlayabilirsiniz. |
[SAMPLE BY expr] |
Örnekleme ifadesi. Belirtilirse bunu birincil anahtara dahil edin. |
[SETTINGS name=value, ...] |
Performansı etkileyen ek ayarlar. Bkz. SETTINGS yapılandırma öğeleri. |
ORDER BY,GRANULARITY,PARTITION BY,PRIMARY KEY,SAMPLE BYveSETTINGSyalnızca MergeTree ailesi tablo motorları tarafından desteklenir. Bkz. CREATE TABLE .
ReplicatedMergeTree yapılandırması
Bir ReplicatedMergeTree motoru kullanırken aşağıdaki iki form eşdeğerdir:
ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')— tam form; yol şablonunu değiştirmeyin.ReplicatedMergeTree()— otomatik olarak tam forma genişleyen kısaltma.
Çift çoğaltmalı (Double-replica) Edition kümelerinde tüm tablolar MergeTree ailesinden Replicated tablo motorlarını kullanmalıdır. Replicated olmayan motorlar verileri çoğaltmalar arasında çoğaltmaz ve bu durum veri tutarsızlığına neden olabilir.
Örnek
CREATE TABLE local_table ON CLUSTER default
(
Year UInt16,
Quarter UInt8,
Month UInt8,
DayofMonth UInt8,
DayOfWeek UInt8,
FlightDate Date,
FlightNum String,
Div5WheelsOff String,
Div5TailNum String
)ENGINE = MergeTree()
PARTITION BY toYYYYMM(FlightDate)
PRIMARY KEY (intHash32(FlightDate))
ORDER BY (intHash32(FlightDate),FlightNum)
SAMPLE BY intHash32(FlightDate)
SETTINGS index_granularity= 8192;
Dağıtılmış bir tablo oluşturun
Dağıtılmış bir tablo bir dizi yerel tablo üzerinde mantıksal bir görünümdür. Dağıtılmış bir tabloya yapılan yazma işlemleri bölümleme anahtarına göre temel alınan yerel tablolara otomatik olarak yönlendirilir. Sorgular sonuçları döndürmeden önce tüm yerel tablolardan gelen sonuçları toplar.
Yalnızca ApsaraDB for ClickHouse Community-Compatible Edition Distributed motorunu kullanan dağıtılmış tabloları destekler. Enterprise Edition'da birden çok düğüm parça yerine çoğaltma olarak çalıştığından dağıtılmış tablolara gerek yoktur.
Dağıtılmış bir tablo oluşturmadan önce tüm düğümlerde yerel tablolar oluşturun.
Sözdizimi
CREATE TABLE [db.]distributed_table_name ON CLUSTER default
AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])
Parametreler
| Parametre | Açıklama |
|---|---|
db |
Veritabanı adı. Varsayılan olarak geçerli veritabanı kullanılır. |
distributed_table_name |
Dağıtılmış tablonun adı. |
ON CLUSTER cluster |
Tabloyu her düğümde oluşturur. Sabit değer: ON CLUSTER default. |
local_table_name |
Temel alınan yerel tablonun adı. |
sharding_key |
Her satırın hangi parçaya gideceğini belirleyen bölümleme ifadesi. rand() gibi bir ifadeyi veya user_id gibi bir tamsayı sütununu kabul eder. |
Örnek
CREATE TABLE distributed_table ON CLUSTER default
AS default.local_table
ENGINE = Distributed(default, default, local_table, rand());
Bir tablo şemasını kopyalayın
Mevcut bir tabloyla aynı sütun tanımlarına ve tablo motoruna sahip yeni bir tablo oluşturun.
Sözdizimi
CREATE TABLE [IF NOT EXISTS] [db.]table_name2 ON CLUSTER cluster AS [db.]table_name1 [ENGINE = engine_name];
Parametreler
| Parametre | Açıklama |
|---|---|
db |
Veritabanı adı. Varsayılan olarak geçerli veritabanı kullanılır. |
table_name1 |
Şeması kopyalanan kaynak tablo. |
table_name2 |
Oluşturulacak yeni tablo. |
ON CLUSTER cluster |
Tabloyu her düğümde oluşturur. Sabit değer: ON CLUSTER default. |
[ENGINE = engine_name] |
Yeni tablo için tablo motoru. Atlanırsa yeni tablo kaynak tablo ile aynı motoru kullanır. Bkz. Tablo motorları. |
Örnek
CREATE TABLE t2 ON CLUSTER default as default.local_table;
Bir SELECT sorgusundan tablo oluşturun
Şeması bir SELECT deyiminin sonuç kümesiyle eşleşen ve sorgu sonuçlarıyla doldurulan bir tablo oluşturun.
Sözdizimi
CREATE TABLE [IF NOT EXISTS] [db.]s_table_name ON CLUSTER cluster ENGINE = engine_name() AS SELECT ...
Parametreler
| Parametre | Açıklama |
|---|---|
db |
Veritabanı adı. Varsayılan olarak geçerli veritabanı kullanılır. |
s_table_name |
Oluşturulacak tablonun adı. |
ON CLUSTER cluster |
Tabloyu her düğümde oluşturur. Sabit değer: ON CLUSTER default. |
ENGINE = engine_name() |
Tablo motoru. Bkz. Tablo motorları. |
SELECT ... |
Şemayı ve başlangıç verilerini tanımlayan sonuç kümesine sahip sorgu. |
Örnek
CREATE TABLE t3 ON CLUSTER default ENGINE =MergeTree() order by Year as select * from default.local_table;