Tüm Ürünler
Search
Belge Merkezi

Lindorm:CREATE TABLE

Son Güncelleme:Oct 07, 2026

CREATE TABLE deyimi, LindormTable veya LindormTSDB içinde tablolar oluşturur. VARCHAR, TIMESTAMP ve BIGINT gibi veri türlerini ve TTL ile COMPRESSION gibi tablo özelliklerini destekleyerek çeşitli iş senaryolarına uyum sağlar.

Motor ve sürüm

Sözdizimi

create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_identifier
                            '('
                                column_definition
                                ( ',' column_definition )*
                                 ',' PRIMARY KEY '(' primary_key ')' 
                                ( ',' {KEY|INDEX} [index_identifier] 
                                     [ USING index_method_definition ] 
                                     [ INCLUDE column_identifier ( ',' column_identifier )* ]
                                     [ WITH  index_options ]
                                )*    
                            ')' 
                            [ PARTITION BY partition_definition ]
                            [ ZORDER BY zorder_column_list ]
                            [ WITH  table_options ]
column_definition      ::=  column_identifier data_type [ NOT NULL ]
primary_key            ::=  column_identifier [ ',' column_identifier (ASC|DESC)]                         
index_method_definition  ::= { KV | SEARCH }  
index_options            ::=  '(' 
                                  option_definition (',' option_definition )* 
                              ')'
partition_definition   ::=  HASH '(' column_identifier (',' column_identifier )* ')'
zorder_column_list     ::=  column_identifier ( ',' column_identifier )*
table_options          ::=  '(' option_definition (',' option_definition )*  ')'
option_definition      ::=  option_identifier '=' string_literal 

Sözdizimi farkları

CREATE TABLE sözdizimi, LindormTable ve LindormTSDB arasında farklılık gösterir. Aşağıdaki tabloda, motor başına desteklenen parametreler karşılaştırılmıştır.


Parametre


LindormTable


LindormTSDB


Tablo adı (table_identifier)


✓


✓


Sütun tanımı (column_definition)


✓


✓


Birincil anahtar (primary_key)


✓


✓


Dizin ifadesi (KEY|INDEX)


✓


✖️


Bölüm (partition_definition)


✖️


✓


Tablo özellikleri (table_options)


✓


✖️

Kullanım

Tablo adı (table_identifier)

Tablo adı aşağıdaki gereksinimleri karşılamalıdır:

  • Ad; rakamlar, büyük harfler, küçük harfler, nokta (.), tire (-) ve alt çizgi (_) içerebilir.

  • Ad nokta (.) veya tire (-) ile başlayamaz.

  • Adın uzunluğu 1 ila 255 karakter arasında olmalıdır.

Sütun tanımı (column_definition)

Sözdizimi

Zorunlu

Açıklama

sütun adı (column_identifier)

Evet

  • Ad; rakamlar, büyük harfler, küçük harfler, nokta (.), tire (-) ve alt çizgi (_) içerebilir.

  • Sistem tarafından ayrılmış anahtar kelimeleri sütun adı olarak kullanamazsınız.

  • Adın uzunluğu 255 baytı aşmamalıdır.

veri türü (data_type)

Evet

Desteklenen veri türleri hakkında daha fazla bilgi için bkz. Veri türleri.

Önemli

Zaman serisi tablosu oluştururken TIMESTAMP veri türünü kullanıyorsanız şunlara dikkat edin:

  • Yalnızca bir TIMESTAMP sütunu belirtebilirsiniz.

  • LindormTSDB, zaman damgalarını Çin Standart Saati'ne (UTC+8) göre kodlar ve ayrıştırır.

  • Bazı eski sistemler 32 bitlik UNIX zaman damgalarını işler. Bu zaman damgalarını LindormTSDB'ye yazmadan önce anlamsal tutarsızlıkları önlemek amacıyla bunları 1.000 ile çarpın. Örneğin, 1641009600 değerindeki bir zaman damgası eski bir sistemde 2022-01-01 12:00:00 olarak yorumlanırken LindormTSDB bunu 1970-01-20 07:50:09 (UTC+8) olarak yorumlar.

NULL kısıtlaması

Hayır

Sütunun NULL değerlere izin verip vermediğini belirtir.

Önemli

Lindorm SQL bu kısıtlamayı doğrulamaz. Doğrulama bunun yerine depolama motoru tarafından gerçekleştirilir.

NULL kısıtlamasının doğrulanması, değişkenlik gösteren depolama motoru kurallarına bağlıdır. Bu nedenle, NOT NULL olarak tanımlanmış bir sütuna bile NULL değerler yazabilmeniz mümkündür.

Verilerin beklendiği gibi yazıldığından emin olmak için aşağıdaki gereksinimleri uygulayın:

  • Birincil anahtar sütunu NULL olamaz. Tablo oluştururken tüm birincil anahtar sütunları için NOT NULL belirtmeniz gerekir.

  • Birincil anahtar olmayan sütunlar için NOT NULL belirtmeyin.

Birincil anahtar (primary_key)

Birincil anahtar, bir tablodaki verileri benzersiz şekilde tanımlar ve bir veya daha fazla sütundan oluşur. Tablo oluştururken bir birincil anahtar (PRIMARY KEY) belirtmeniz gerekir.

Önemli

Oluşturulduktan sonra birincil anahtar değiştirilemez. Birincil anahtarınızı dikkatlice tasarlayın.

CREATE TABLE deyimini kullanarak tablo oluştururken şunlara dikkat edin:

Motor türü

Açıklama

LindormTable

  • Tek bir birincil anahtar sütununun maksimum uzunluğu 2 KB'dir.

  • Tüm birincil anahtar sütunlarının toplam uzunluğu 30 KB'yi aşamaz.

  • Tek bir birincil anahtar olmayan sütunun maksimum uzunluğu 2 MB'yi aşamaz.

LindormTSDB

  • Zaman serisi tablosunun birincil anahtarında VARCHAR sütuna TAG sütunu, TIMESTAMP sütuna ise zaman damgası sütunu adı verilir.

  • Birincil anahtar sütunları VARCHAR veya TIMESTAMP veri türünde olmalıdır.

  • Birincil anahtar bir veya daha fazla VARCHAR sütunu içerebilir ancak yalnızca bir TIMESTAMP sütunu içerebilir.

  • Zaman serisi tablosu için veri kaynağının benzersiz tanımlayıcısını birincil anahtar olarak kullanın. Örnekler arasında IoT senaryolarındaki cihaz kimlikleri, Araçların İnterneti (IoV) senaryolarındaki araç tanımlama numaraları (VIN) ve izleme senaryolarındaki uygulama kimlikleri veya ip:port dizeleri yer alır. Daha fazla bilgi için bkz. PRIMARY KEY tasarlama için en iyi uygulamalar.

Dizin ifadesi (KEY|INDEX)

CREATE TABLE deyimiyle birlikte bir dizin oluşturmak için KEY veya INDEX anahtar sözcüğünü kullanın.

Önemli
  • Dizin ifadesi (KEY|INDEX) yalnızca LindormTable 2.7.7 ve sonraki sürümlerde ve Lindorm SQL 2.8.6.0 ve sonraki sürümlerde desteklenir.

  • LindormTable ve Lindorm SQL sürümlerini kontrol etmek için bkz. LindormTable sürüm notları ve SQL sürüm notları. Konsolda gerekli sürümlere yükseltme yapamıyorsanız Lindorm teknik desteği ile iletişime geçin. DingTalk Kimliği s0s3eg3'tür.

Kullanım

  • Açıkça bir dizin adı belirtmezseniz sistem varsayılan olarak bir ad oluşturur. Oluşturulan dizin adının biçimi TableName_idx_${auto-incremented ID} şeklindedir.

  • Dizin ifadesi kullanarak şu anda yalnızca ikincil dizinler ve arama dizinleri oluşturabilirsiniz.

  • İkincil dizinler için varsayılan sütun dahil etme durumu:

    Lindorm SQL 2.9.3.10 ve sonraki sürümler

    İkincil bir dizin oluştururken INCLUDE yan tümcesini belirtmezseniz diğer tüm sütunlar varsayılan olarak dizine dahil edilmez.

    Lindorm SQL 2.9.3.10'dan önceki sürümler

    İkincil bir dizin oluştururken INCLUDE yan tümcesini belirtmezseniz diğer tüm sütunlar varsayılan olarak dizine dahil edilir.

    Not

    Bu durum, INDEX_COVERED_TYPE dizin özelliğini COVERED_ALL_COLUMNS_IN_SCHEMA olarak ayarlamaya eşdeğerdir. Tablo dinamik bir tabloyse bu durum özelliği COVERED_DYNAMIC_COLUMNS olarak ayarlamaya eşdeğerdir.

  • Tablo oluştururken KEY veya INDEX yan tümcesi belirtir ancak MUTABILITY ve CONSISTENCY özelliklerini açıkça belirtmezseniz tablo aşağıdaki varsayılan özelliklerle oluşturulur: CONSISTENCY = 'strong' ve MUTABILITY='MUTABLE_LATEST'.

  • CREATE TABLE deyimi bir dizin ifadesi içeriyorsa sistem önce tabloyu oluşturur ardından dizini oluşturur. Dizin oluşturma sırasında bir özel durum oluşursa tablo ve dizin kalabilir ve otomatik olarak temizlenmez. Bunları görüntülemek için SHOW ve DESCRIBE gibi deyimleri kullanabilirsiniz ancak tabloya ve dizine veri yazamayabilir veya bunlarda sorgu çalıştıramayabilirsiniz. Kalan tablo ve dizini silip yeniden oluşturmanızı öneririz.

Bölüm (partition_definition)

Bölümler yalnızca LindormTSDB tarafından desteklenir. Zaman serisi tablosunda PARTITION BY yan tümcesinde kullanılan sütun bir VARCHAR birincil anahtar sütunu olmalıdır.

Hash bölümlemesi için bir veya daha fazla sütun belirtmek üzere PARTITION BY HASH(column1, column2, ..., columnN) kullanın. Örneğin: PARTITION BY HASH(c1, p1).

Tablo özellikleri (table_options)

Tablo özellikleri yalnızca LindormTable tarafından desteklenir. Aşağıdaki tablo özelliklerini eklemek için WITH anahtar sözcüğünü kullanabilirsiniz:

Seçenek

Tür

Açıklama

COMPRESSION

STRING

Tablo için sıkıştırma algoritması. Geçerli değerler:

  • SNAPPY

  • ZSTD

  • LZ4

Not

LindormTable 2.3.4'ten önceki sürümlerde varsayılan olarak hiçbir sıkıştırma algoritması belirtilmez. LindormTable 2.3.4 ve sonraki sürümlerde varsayılan olarak ZSTD algoritması kullanılır.

TTL

INT

Verinin yaşam süresi (TTL), saniye (s) cinsinden.

Not
  • Varsayılan olarak bu özellik ayarlanmaz; bu da verinin süresinin dolmadığı anlamına gelir.

  • Tablo için TTL ayarlamak amacıyla deyime TTL=<time> ekleyebilir veya TTL'yi kaldırmak için TTL'yi boş bir dizeye ayarlayabilirsiniz. Kullanım örnekleri için bkz. Örnekler.

COMPACTION_MAJOR_PERIOD

LONG

Sistemin major compaction gerçekleştirdiği aralık, milisaniye (ms) cinsinden. Kullanım örnekleri için bkz. Major birleştirme aralığını belirtme.

Not

Varsayılan değer: Math.Min(TTL, 1.728.000.000 ms). TTL ayarlamazsanız varsayılan değer 20 gündür (20 × 24 × 60 × 60 × 1.000 = 1.728.000.000 ms).

MUTABILITY

STRING

Temel tablo için yazma modu. Bu özellik dizinleme davranışını etkiler. Varsayılan değer: MUTABLE_LATEST.

Geçerli değerler:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

Değerler hakkında daha fazla bilgi için bkz. Yüksek performanslı yerel ikincil dizinler.

Önemli

Dizin oluşturulduktan sonra MUTABILITY özelliğini değiştiremezsiniz. Bu özelliği değiştirmek için öncelikle tablodaki tüm dizinleri silmeniz gerekir. Veri kaybını önlemek amacıyla bu işlemi gerçekleştirmeden önce verilerinizi yedekleyin.

CONSISTENCY

STRING

Tablonun tutarlılık düzeyi. Bölgeler arası örnekler için birincil ve ikincil çoğaltmalar arasındaki veri tutarlılığını belirtir. Geçerli değerler:

  • eventual: Nihai tutarlılık düzeyi. Bu, dizin ifadesi olmadan oluşturulan tablolar için varsayılan değerdir.

  • strong: Güçlü tutarlılık düzeyi.

Önemli

Bölgeler arası örneklerde iş yükünüz artırma, ekleme veya dizin güncellemeleri gibi okuma-değiştirme-yazma işlemleri içeriyorsa çoğaltmalar arasında veri tutarlılığını sağlamak için birincil tablonun CONSISTENCY özelliğini strong olarak ayarlamanız gerekir.

NUMREGIONS

INT

Tablo için önceden bölünmüş bölgelerin sayısı.

CHS

INT

Sıcak ve soğuk verileri ayıran sınır, saniye cinsinden.

Not
  • Bu sınırı ayarlamak için soğuk depolama özelliğini etkinleştirmeniz gerekir. Genel bakış ve etkinleştirme talimatları için bkz. Sıcak ve soğuk veri ayrımı.

  • Bu özelliği ayarlarken CHS_L2='storagetype=COLD' değerini de ayarlamanız gerekir.

STARTKEY ve ENDKEY

Birincil anahtardaki ilk sütunla aynı veri türü.

Tablonun bölgelerini önceden bölmek için başlangıç ve bitiş anahtarı.

Not
  • STARTKEY ve ENDKEY belirtirseniz NUMREGIONS değerini de belirtmeniz gerekir. STARTKEY ve ENDKEY değerlerini NUMREGIONS olmadan belirtirseniz bunlar yok sayılır.

  • STARTKEY ve ENDKEY için belirtilen dize değişmez değerleri örtük olarak birincil anahtardaki ilk sütunun veri türüne dönüştürülür ve bölümler için başlangıç ve bitiş anahtarları olarak kullanılır. Bu özellik yalnızca aşağıdaki veri türlerini destekler:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

Birincil anahtardaki ilk sütunla aynı veri türü.

Tablonun tüm önceden bölünmüş bölgeleri için başlangıç anahtarları.

Not
  • SPLITKEYS özelliği LindormTable 2.5.4 ve sonraki sürümlerde desteklenir.

  • Dize tabanlı SPLITKEYS değerinde önceden bölünmüş bölgelerin başlangıç anahtarlarını ayırmak için virgül (,) kullanın. Çift tırnak işaretleri ("") içine alınan virgüller normal karakterler olarak değerlendirilir.

  • SPLITKEYS özelliği NUMREGIONS, STARTKEY veya ENDKEY özellikleriyle birlikte kullanılamaz.

  • STARTKEY ve ENDKEY'e benzer şekilde belirtilen dize değişmez değerleri örtük olarak birincil anahtardaki ilk sütunun veri türüne dönüştürülür ve bölümler için başlangıç anahtarları olarak kullanılır. Bu özellik yalnızca aşağıdaki veri türlerini destekler:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Önceden bölümlendirme için bölme algoritmasını tanımlar. Desteklenen algoritmalar şunlardır:

  • HexStringSplit: Birincil anahtarı onaltılık baytlara göre böler.

  • UniformSplit: Birincil anahtarı orijinal bayt değerlerine göre eşit şekilde böler.

DYNAMIC_COLUMNS

STRING

Dinamik sütunların etkinleştirilip etkinleştirilmeyeceği. Geçerli değerler:

  • True: Dinamik sütunları etkinleştirir.

  • False: Dinamik sütunları devre dışı bırakır. Bu, varsayılan değerdir.

Not

Dinamik sütunlar yalnızca Varbinary veri türünü destekler. Dinamik sütunlar hakkında daha fazla bilgi için bkz. Dinamik sütunlar.

VERSIONS

STRING

Her sütun değeri için saklanacak sürüm sayısı. 1'e eşit veya 1'den büyük bir tam sayı olmalıdır. Varsayılan: 1. Veri sürümlendirme hakkında daha fazla bilgi için bkz. Veri sürümlendirme.

Önemli

VERSIONS özelliği için yüksek bir değer sorgu ve depolama performansını düşürebilir. Bu değeri 1 olarak ayarlamanızı öneririz.

BLOB_BUCKET_NAME

STRING

Tablodaki BLOB sütunları için paket adı.

Paket adı aşağıdaki kuralları takip etmelidir:

  • Yalnızca küçük harfler, rakamlar, nokta (.) ve tire (-) içerebilir.

  • Uzunluğu 3 ila 63 karakter arasında olmalıdır.

  • Tire (-) ile başlayamaz veya bitemez.

  • Ardışık nokta (.) içeremez.

Not
  • BLOB_BUCKET_NAME özelliği LindormTable 2.6.4 ve sonraki sürümlerde desteklenir.

  • Tablo oluştururken bir BLOB sütunu belirtmez ancak BLOB_BUCKET_NAME özelliğini ayarlarsanız sistem paket adının geçerliliğini kontrol etmez.

Not

LindormTable 2.2.16'dan önceki sürümler tablo özelliklerini ayarlamak için WITH anahtar sözcüğünü desteklemez. Özellik anahtar sözcüğünü tek tırnak işaretleri (') içine almanız gerekir. Özellik değerleri veri türlerine göre ayarlanır; örneğin STRING değerleri tek tırnak işaretleri (') içine alınmalıdır. Örneğin: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.

Örnekler

Tablo oluşturma

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

Doğrulama

Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

Dizin içeren tablo oluşturma

Tabloyla birlikte ikincil bir dizin oluşturun.

CREATE TABLE IF NOT EXISTS sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time),
    KEY (temperature, time)
);

Doğrulama

Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; komutunu ve ikincil dizinin oluşturulduğunu doğrulamak için SHOW INDEX FROM sensor; komutunu çalıştırın.

TTL ve sıkıştırma algoritması belirtme

30 günlük TTL (2.592.000 saniye) ve ZSTD sıkıştırmasıyla geniş bir tablo oluşturun.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (COMPRESSION='ZSTD', TTL='2592000');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. current table details alanında view table properties seçeneğine tıklayarak COMPRESSION ve TTL parametrelerini kontrol edin.

Major birleştirme aralığını belirtme

10 günlük (864.000.000 milisaniye) major birleştirme aralığıyla geniş bir tablo oluşturun.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (COMPACTION_MAJOR_PERIOD='864000000');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. current table details alanında view table properties seçeneğine tıklayarak COMPACTION_MAJOR_PERIOD parametresinin değerini kontrol edin.

Dinamik sütunları etkinleştirme

Dinamik sütunlara veri yazmak için DYNAMIC_COLUMNS değerini TRUE olarak ayarlayın.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (DYNAMIC_COLUMNS='TRUE');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. current table details alanında view table properties seçeneğine tıklayarak DYNAMIC_COLUMNS parametresinin değerini kontrol edin.

Sıcak ve soğuk veri sınırını belirtme

Veri arşivleme için sıcak-soğuk veri sınırı içeren geniş bir tablo oluşturun.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (CHS = '86400', CHS_L2 = 'storagetype=COLD');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. current table details alanında view table properties seçeneğine tıklayarak CHS ve CHS_L2 parametrelerini kontrol edin.

Birden çok özelliği aynı anda ayarlama

Sıkıştırma, TTL ve sıcak-soğuk veri sınırı içeren geniş bir tablo oluşturun.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (
    COMPRESSION='ZSTD', 
    CHS = '86400', 
    CHS_L2 = 'storagetype=COLD', 
    TTL = '2592000');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. current table details alanında view table properties seçeneğine tıklayarak COMPRESSION, CHS, CHS_L2 ve TTL parametrelerini kontrol edin.

Bölümleri yapılandırma

Başlangıç anahtarı 1000 ve bitiş anahtarı 9000 olacak şekilde beş bölüme önceden bölünmüş geniş bir tablo oluşturun.

CREATE TABLE sensor (
  p1 INTEGER NOT NULL, 
  c1 INTEGER, 
  c2 VARCHAR, 
  c3 VARCHAR,
  PRIMARY KEY(p1)
) WITH (NUMREGIONS='5', STARTKEY='1000', ENDKEY='9000');

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. Shard information alanında her bölüm için startKey ve endKey parametrelerini kontrol edin.

Birden çok bölüm için başlangıç anahtarlarını ayarlama

Kod örnekleri

  • Sayısal anahtarlara göre bölümleri belirtme (veri dağıtımınıza bağlı olarak)

    Beş bölüm için önceden tanımlanmış başlangıç anahtarlarına sahip geniş bir tablo oluşturun; bu işlem altı önceden bölünmüş bölümle sonuçlanır.

    CREATE TABLE sensor (
      p1 INT NOT NULL,
      p2 INT NOT NULL,
      c1 VARCHAR,
      c2 BIGINT,
      PRIMARY KEY(p1, p2)
    ) WITH (SPLITKEYS = '100000,300000,500000,700000,900000');
  • Dize anahtarlarına göre bölümleri belirtme (veri dağıtımınıza bağlı olarak)

    CREATE TABLE your_table (
        address VARCHAR NOT NULL,
        col1 VARCHAR,
        PRIMARY KEY (address)
    ) WITH (
        SPLITKEYS = '0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff'
    );
  • Bölme algoritması belirtme

    CREATE TABLE your_table2 (
        address VARCHAR NOT NULL,
        col1 VARCHAR,
        PRIMARY KEY (address)
    ) WITH (
        NUMREGIONS = 256,
        SPLITALGO = 'HexStringSplit'
    );

Doğrulama

  • Tablonun oluşturulduğunu doğrulamak için DESCRIBE table sensor; deyimini çalıştırın.

  • Küme yönetim sistemi içindeki Overview sayfasına gidin ve hedef tablonun adına tıklayın. Shard information alanında her bölüm için startKey ve endKey parametrelerini kontrol edin.

Bölüm anahtarı sütununu açıkça belirtme

Çoğu sorgu tek bir cihaz için anlık verileri aldığından device_id değerini bölüm anahtarı sütunu olarak belirtin.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) PARTITION BY HASH(device_id);

Doğrulama

Tablonun oluşturulduğunu doğrulamak için DESCRIBE TABLE sensor; deyimini çalıştırın.

Coğrafi konum tablosu oluşturma

  • Herhangi bir türdeki coğrafi verileri yazmanıza olanak tanıyan genel Geometry mekansal veri türünü destekleyen bir tablo oluşturun.

    CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));

    Herhangi bir coğrafi veri türünden veri yazın.

    UPSERT INTO geoms(gid, g) VALUES(0,ST_GeomFromText('POINT(-10.1 3.3)')),(1,ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')),(2,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Point veri türü için bir tablo oluşturun. Bu tabloya yalnızca nokta verileri yazılabilir.

    CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid));

    Nokta verileri yazın.

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • Polygon veri türü için bir tablo oluşturun. Bu tabloya yalnızca çokgen verileri yazılabilir.

    CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));

    Çokgen verileri yazın.

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • LineString veri türü için bir tablo oluşturun. Bu tabloya yalnızca çizgi verileri yazılabilir.

    CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));

    Çizgi verileri yazın.

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • MULTIPOINT veri türü için bir tablo oluşturun. Bu tabloya yalnızca çoklu nokta verileri yazılabilir.

    CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));

    Çoklu nokta verileri yazın.

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • MULTILINESTRING veri türü için bir tablo oluşturun. Bu tabloya yalnızca çoklu çizgi verileri yazılabilir.

    CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));

    Çoklu çizgi verileri yazın.

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • MULTIPOLYGON veri türü için bir tablo oluşturun. Bu tabloya yalnızca çoklu çokgen verileri yazılabilir.

    CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));

    Çoklu çokgen verileri yazın.

    UPSERT INTO multipolys(gid,g) VALUES(0, ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'));
  • GEOMETRYCOLLECTION veri türü için bir tablo oluşturun. Bu tabloya yalnızca geometri koleksiyonu verileri yazılabilir.

    CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));

    Geometri koleksiyonu verileri yazın.

    UPSERT INTO collections(gid,g) VALUES(0, ST_GeomFromText('GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))'));
  • Geometry türünde birden çok sütun içeren bir tablo oluşturun.

    CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));