All Products
Search
Document Center

Lindorm:CREATE TABLE

Last Updated:Jul 04, 2026

Pernyataan CREATE TABLE digunakan untuk membuat tabel di LindormTable atau LindormTSDB. Pernyataan ini mendukung tipe data seperti VARCHAR, TIMESTAMP, dan BIGINT, serta atribut tabel seperti TTL dan COMPRESSION yang dapat dikombinasikan untuk merancang tabel sesuai dengan skenario bisnis Anda.

Mesin dan versi

  • CREATE TABLE berlaku untuk LindormTable dan LindormTSDB.

  • LindormTSDB mendukung sintaks CREATE TABLE standar mulai dari versi 3.4.32 dan seterusnya. Untuk melihat atau meningkatkan versinya, lihat catatan rilis LindormTSDB dan Upgrade versi minor.

Sintaks

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 

Perbedaan sintaks

Sintaks CREATE TABLE berbeda antara LindormTable dan LindormTSDB. Tabel berikut membandingkan parameter yang didukung oleh masing-masing mesin.

Parameter

LindormTable

LindormTSDB

Nama tabel (table_identifier)

0

0

Definisi kolom (column_definition)

0

0

Kunci primer (primary_key)

0

0

Ekspresi indeks (KEY|INDEX)

0

✖️

Partisi (partition_definition)

✖️

0

Atribut tabel (table_options)

0

✖️

Penggunaan

Nama tabel (table_identifier)

Nama tabel harus memenuhi persyaratan berikut:

  • Nama dapat berisi angka, huruf kapital, huruf kecil, titik (.), tanda hubung (-), dan garis bawah (_).

  • Nama tidak boleh diawali dengan titik (.) atau tanda hubung (-).

  • Panjang nama harus antara 1 hingga 255 karakter.

Definisi kolom (column_definition)

Sintaks

Wajib

Deskripsi

nama kolom (column_identifier)

Ya

  • Nama dapat berisi angka, huruf kapital, huruf kecil, titik (.), tanda hubung (-), dan garis bawah (_).

  • Anda tidak dapat menggunakan kata kunci yang dicadangkan sistem sebagai nama kolom.

  • Panjang nama tidak boleh melebihi 255 byte.

tipe data (data_type)

Ya

Untuk informasi lebih lanjut tentang tipe data yang didukung, lihat Tipe data.

Penting

Saat membuat tabel deret waktu, perhatikan hal berikut jika Anda menggunakan tipe data TIMESTAMP:

  • Anda hanya dapat menentukan satu kolom TIMESTAMP.

  • LindormTSDB mengenkode dan mengurai stempel waktu berdasarkan China Standard Time (UTC+8).

  • Beberapa sistem warisan memproses stempel waktu UNIX 32-bit. Sebelum menulis stempel waktu tersebut ke LindormTSDB, kalikan dengan 1.000 untuk mencegah ketidaksesuaian semantik. Misalnya, stempel waktu 1641009600 diinterpretasikan sebagai 2022-01-01 12:00:00 di sistem warisan, tetapi LindormTSDB menginterpretasikannya sebagai 1970-01-20 07:50:09 (UTC+8) .

Batasan NULL

Tidak

Menunjukkan apakah kolom mengizinkan nilai NULL.

Penting

Lindorm SQL tidak memvalidasi batasan ini. Sebaliknya, validasi dilakukan oleh mesin penyimpanan.

Validasi batasan NULL bergantung pada aturan mesin penyimpanan, yang berbeda-beda. Akibatnya, Anda mungkin dapat menulis nilai NULL ke kolom meskipun didefinisikan dengan NOT NULL.

Untuk memastikan data ditulis sesuai harapan, ikuti persyaratan berikut:

  • Kolom kunci primer tidak boleh bernilai NULL. Anda harus menentukan NOT NULL untuk semua kolom kunci primer saat membuat tabel.

  • Jangan menentukan NOT NULL untuk kolom non-kunci primer.

Kunci primer (primary_key)

Kunci primer secara unik mengidentifikasi data dalam tabel dan terdiri dari satu atau beberapa kolom. Anda harus menentukan kunci primer (PRIMARY KEY) saat membuat tabel.

Penting

Kunci primer tidak dapat diubah setelah dibuat. Rancang kunci primer Anda dengan cermat.

Saat menggunakan pernyataan CREATE TABLE untuk membuat tabel, perhatikan hal-hal berikut:

Jenis mesin

Deskripsi

LindormTable

  • Panjang maksimum satu kolom kunci primer adalah 2 KB.

  • Panjang total semua kolom kunci primer tidak boleh melebihi 30 KB.

  • Panjang maksimum satu kolom non-kunci primer tidak boleh melebihi 2 MB.

LindormTSDB

  • Dalam kunci primer tabel deret waktu, kolom VARCHAR disebut kolom TAG, dan kolom TIMESTAMP disebut kolom stempel waktu.

  • Kolom kunci primer harus bertipe data VARCHAR atau TIMESTAMP.

  • Kunci primer dapat berisi satu atau beberapa kolom VARCHAR, tetapi hanya satu kolom TIMESTAMP.

  • Gunakan pengenal unik sumber data sebagai kunci primer untuk tabel deret waktu. Contohnya termasuk ID perangkat dalam skenario IoT, nomor identifikasi kendaraan (VIN) dalam skenario Internet of Vehicles (IoV), dan ID aplikasi atau string ip:port dalam skenario pemantauan. Untuk informasi lebih lanjut, lihat Praktik terbaik dalam merancang PRIMARY KEY.

Ekspresi indeks (KEY|INDEX)

Saat menggunakan pernyataan CREATE TABLE untuk membuat indeks, gunakan kata kunci KEY atau INDEX guna menentukan indeks tersebut.

Penting
  • Ekspresi indeks (KEY|INDEX) hanya didukung di LindormTable 2.7.7 dan versi seterusnya serta Lindorm SQL 2.8.6.0 dan versi seterusnya.

  • Untuk memeriksa versi LindormTable dan Lindorm SQL, lihat catatan rilis LindormTable dan catatan versi SQL. Jika Anda tidak dapat melakukan upgrade ke versi yang diperlukan di konsol, hubungi dukungan teknis Lindorm. ID DingTalk-nya adalah s0s3eg3.

Penggunaan

  • Jika Anda tidak secara eksplisit menentukan nama indeks, sistem akan menghasilkan nama secara default dengan format TableName_idx_${ID auto-increment}.

  • Dengan ekspresi indeks, Anda saat ini hanya dapat membuat indeks sekunder dan indeks pencarian.

  • Pencantuman kolom default untuk indeks sekunder:

    Lindorm SQL 2.9.3.10 dan versi seterusnya

    Jika Anda tidak menentukan klausa INCLUDE saat membuat indeks sekunder, semua kolom lain tidak dicantumkan dalam indeks secara default.

    Lindorm SQL versi sebelum 2.9.3.10

    Jika Anda tidak menentukan klausa INCLUDE saat membuat indeks sekunder, semua kolom lain dicantumkan dalam indeks secara default.

    Catatan

    Ini setara dengan mengatur atribut indeks INDEX_COVERED_TYPE menjadi COVERED_ALL_COLUMNS_IN_SCHEMA. Jika tabel merupakan tabel dinamis, ini setara dengan mengatur atribut menjadi COVERED_DYNAMIC_COLUMNS.

  • Jika Anda menentukan klausa KEY atau INDEX saat membuat tabel tetapi tidak secara eksplisit menentukan atribut MUTABILITY dan CONSISTENCY, tabel akan dibuat dengan nilai atribut default berikut: CONSISTENCY = 'strong' dan MUTABILITY = 'MUTABLE_LATEST'.

  • Jika pernyataan CREATE TABLE mencakup ekspresi indeks, sistem akan terlebih dahulu membuat tabel, lalu membuat indeks. Jika terjadi pengecualian selama pembuatan indeks, tabel dan indeks tersebut mungkin tetap ada dan tidak dihapus secara otomatis. Anda dapat menggunakan pernyataan seperti SHOW dan DESCRIBE untuk memeriksanya, tetapi mungkin tidak dapat menulis data ke atau mengkueri tabel dan indeks tersebut. Kami menyarankan agar Anda menghapus tabel dan indeks yang tersisa, lalu membuatnya kembali.

Partisi (partition_definition)

Partisi hanya didukung oleh LindormTSDB. Dalam tabel deret waktu, kolom yang digunakan dalam klausa PARTITION BY harus berupa kolom kunci primer VARCHAR.

Saat membuat tabel, Anda dapat menggunakan pernyataan PARTITION BY HASH(column1, column2, ..., columnN) untuk secara eksplisit menentukan satu atau beberapa kolom sebagai dasar partisi hash. Contohnya: PARTITION BY HASH(c1, p1).

Atribut tabel (table_options)

Hanya LindormTable yang mendukung atribut tabel. Anda dapat menggunakan kata kunci WITH untuk menambahkan atribut tabel berikut:

Opsi

Tipe

Deskripsi

COMPRESSION

STRING

Algoritma kompresi untuk tabel. Nilai yang valid:

  • SNAPPY

  • ZSTD

  • LZ4

Catatan

Pada versi LindormTable sebelum 2.3.4, tidak ada algoritma kompresi yang ditentukan secara default. Di LindormTable 2.3.4 dan versi seterusnya, algoritma ZSTD digunakan secara default.

TTL

INT

Masa hidup data (TTL), dalam detik (s).

Catatan
  • Secara default, atribut ini tidak diatur, artinya data tidak kedaluwarsa.

  • Anda dapat menambahkan TTL=<waktu> ke pernyataan untuk mengatur TTL untuk tabel, atau mengatur TTL ke string kosong untuk menghapus TTL. Untuk contoh penggunaan, lihat Contoh.

COMPACTION_MAJOR_PERIOD

LONG

Interval sistem melakukan major compaction, dalam milidetik (ms). Untuk contoh penggunaan, lihat Tentukan interval major compaction.

Catatan

Nilai default: Math.Min(TTL, 1.728.000.000 ms). Jika Anda tidak mengatur TTL, nilai default-nya adalah 20 hari (20 × 24 × 60 × 60 × 1.000 = 1.728.000.000 ms).

MUTABILITY

STRING

Menentukan mode tulis untuk tabel dasar. Atribut ini terkait dengan pengindeksan. Nilai default: MUTABLE_LATEST.

Nilai yang valid:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

Untuk informasi lebih lanjut tentang nilai-nilai tersebut, lihat Indeks sekunder native berkinerja tinggi.

Penting

Setelah indeks dibuat, Anda tidak dapat mengubah atribut MUTABILITY. Untuk mengubah atribut ini, Anda harus terlebih dahulu menghapus semua indeks pada tabel. Cadangkan data Anda sebelum melakukan operasi ini untuk mencegah kehilangan data.

CONSISTENCY

STRING

Tingkat konsistensi tabel. Untuk instans lintas zona, atribut ini menentukan konsistensi data antara replika primer dan sekunder. Nilai yang valid:

  • eventual: tingkat konsistensi eventual. Ini adalah nilai default untuk tabel yang dibuat tanpa ekspresi indeks.

  • strong: tingkat konsistensi kuat.

Penting

Untuk instans lintas zona, jika workload Anda melibatkan operasi baca-modifikasi-tulis seperti increase, append, atau pembaruan indeks, Anda harus mengatur atribut CONSISTENCY tabel primer ke strong untuk memastikan konsistensi data antar replika.

NUMREGIONS

INT

Jumlah region pre-split untuk tabel.

CHS

INT

Batas yang memisahkan data panas dan dingin, dalam detik.

Catatan
  • Untuk mengatur batas ini, Anda harus mengaktifkan fitur penyimpanan dingin. Untuk ikhtisar dan petunjuk cara mengaktifkannya, lihat Pemisahan data panas dan dingin.

  • Saat mengatur atribut ini, Anda juga harus mengatur CHS_L2='storagetype=COLD'.

STARTKEY dan ENDKEY

Tipe data yang sama dengan kolom pertama dalam kunci primer.

Kunci awal dan kunci akhir untuk pre-split region tabel.

Catatan
  • Jika Anda menentukan STARTKEY dan ENDKEY, Anda juga harus menentukan NUMREGIONS. Jika Anda menentukan STARTKEY dan ENDKEY tanpa NUMREGIONS, keduanya akan diabaikan.

  • Nilai literal string yang ditentukan untuk STARTKEY dan ENDKEY secara implisit dikonversi ke tipe data kolom pertama dalam kunci primer dan digunakan sebagai kunci awal dan akhir untuk partisi. Fitur ini hanya mendukung tipe data berikut:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

Tipe data yang sama dengan kolom pertama dalam kunci primer.

Kunci awal untuk semua region pre-split tabel.

Catatan
  • Atribut SPLITKEYS didukung di LindormTable 2.5.4 dan versi seterusnya.

  • Dalam nilai SPLITKEYS berbasis string, gunakan koma (,) untuk memisahkan kunci awal region pre-split. Koma yang diapit tanda kutip ganda ("") dianggap sebagai karakter biasa.

  • Atribut SPLITKEYS tidak dapat digunakan bersamaan dengan atribut NUMREGIONS, STARTKEY, atau ENDKEY.

  • Seperti halnya STARTKEY dan ENDKEY, nilai literal string yang ditentukan secara implisit dikonversi ke tipe data kolom pertama dalam kunci primer dan digunakan sebagai kunci awal untuk partisi. Fitur ini hanya mendukung tipe data berikut:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Menentukan algoritma split untuk pre-partitioning. Algoritma yang didukung adalah:

  • HexStringSplit: membagi kunci primer berdasarkan byte heksadesimal.

  • UniformSplit: membagi kunci primer secara merata berdasarkan nilai byte aslinya.

DYNAMIC_COLUMNS

STRING

Apakah akan mengaktifkan kolom dinamis. Nilai yang valid:

  • True: mengaktifkan kolom dinamis.

  • False: menonaktifkan kolom dinamis. Ini adalah nilai default.

Catatan

Kolom dinamis hanya mendukung tipe data Varbinary. Untuk informasi lebih lanjut tentang kolom dinamis, lihat Kolom dinamis.

VERSIONS

STRING

Jumlah versi yang dipertahankan untuk setiap nilai kolom. Harus berupa bilangan bulat yang lebih besar atau sama dengan 1. Default: 1. Untuk informasi lebih lanjut tentang pengendalian versi data, lihat Pengendalian versi data.

Penting

Nilai tinggi untuk atribut VERSIONS dapat menurunkan kinerja kueri dan penyimpanan. Kami menyarankan mengatur nilai ini ke 1.

BLOB_BUCKET_NAME

STRING

Nama bucket untuk kolom BLOB dalam tabel.

Nama bucket harus mengikuti aturan berikut:

  • Hanya dapat berisi huruf kecil, angka, titik (.), dan tanda hubung (-).

  • Panjangnya harus antara 3 hingga 63 karakter.

  • Tidak boleh diawali atau diakhiri dengan tanda hubung (-).

  • Tidak boleh berisi titik (.) berurutan.

Catatan
  • Atribut BLOB_BUCKET_NAME didukung di LindormTable 2.6.4 dan versi seterusnya.

  • Jika Anda tidak menentukan kolom BLOB saat membuat tabel tetapi mengatur atribut BLOB_BUCKET_NAME, sistem tidak akan memeriksa validitas nama bucket tersebut.

Catatan

Versi LindormTable sebelum 2.2.16 tidak mendukung kata kunci WITH untuk mengatur atribut tabel. Anda harus membungkus nama atribut dengan tanda kutip tunggal ('). Nilai atribut ditentukan berdasarkan tipe datanya; misalnya, nilai bertipe STRING harus dibungkus dengan tanda kutip tunggal ('). Contohnya: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.

Contoh

Buat tabel

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)
);

Verifikasi

Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

Buat tabel dengan indeks

Contoh ini menunjukkan cara membuat indeks sekunder saat membuat tabel.

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)
);

Verifikasi

Jalankan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah dibuat, dan jalankan SHOW INDEX FROM sensor; untuk memverifikasi bahwa indeks sekunder telah dibuat.

Tentukan TTL dan algoritma kompresi

Contoh ini membuat tabel lebar, mengatur TTL menjadi 30 hari (2.592.000 detik), dan menentukan ZSTD sebagai algoritma kompresi.

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');

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter COMPRESSION dan TTL.

Tentukan interval major compaction

Contoh ini membuat tabel lebar dan mengatur interval major compaction menjadi 10 hari (864.000.000 milidetik).

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');

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa nilai parameter COMPACTION_MAJOR_PERIOD.

Aktifkan kolom dinamis

Untuk mengaktifkan penulisan data ke kolom dinamis saat membuat tabel lebar, atur DYNAMIC_COLUMNS ke TRUE.

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');

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa nilai parameter DYNAMIC_COLUMNS.

Tentukan batas data panas dan dingin

Contoh ini membuat tabel lebar dan menetapkan batas data panas-dingin untuk pengarsipan data.

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');

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter CHS dan CHS_L2.

Atur beberapa atribut sekaligus

Contoh ini membuat tabel lebar dengan kompresi, TTL, dan batas data panas-dingin.

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');

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area current table details, klik view table properties untuk memeriksa parameter COMPRESSION, CHS, CHS_L2, dan TTL.

Konfigurasi partisi

Contoh ini membuat tabel lebar yang telah dipre-split menjadi lima partisi, dengan kunci awal 1000 dan kunci akhir 9000.

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

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area Shard information, periksa parameter startKey dan endKey untuk setiap partisi.

Tentukan kunci awal untuk beberapa partisi

Contoh kode

  • Tentukan partisi berdasarkan kunci numerik (berdasarkan distribusi data Anda)

    Contoh ini membuat tabel lebar dengan kunci awal yang telah ditentukan untuk lima partisi, menghasilkan total enam partisi pre-split.

    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');
  • Tentukan partisi berdasarkan kunci string (berdasarkan distribusi data Anda)

    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'
    );
  • Tentukan algoritma split

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

Verifikasi

  • Jalankan pernyataan DESCRIBE table sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

  • Buka halaman Overview di sistem manajemen kluster dan klik nama tabel target. Di area Shard information, periksa parameter startKey dan endKey untuk setiap partisi.

Tentukan secara eksplisit kolom kunci partisi

Karena sebagian besar kueri mengambil data instan untuk satu perangkat, tentukan device_id sebagai kolom kunci partisi.

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);

Verifikasi

Jalankan pernyataan DESCRIBE TABLE sensor; untuk memverifikasi bahwa tabel telah berhasil dibuat.

Buat tabel geospasial

  • Buat tabel yang mendukung tipe data spasial Geometry generik, memungkinkan Anda menulis berbagai jenis data spasial.

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

    Tulis data dari berbagai tipe data spasial.

    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))'));
  • Buat tabel untuk tipe data Point. Hanya data titik yang dapat ditulis ke tabel ini.

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

    Tulis data titik.

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • Buat tabel untuk tipe data Polygon. Hanya data poligon yang dapat ditulis ke tabel ini.

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

    Tulis data poligon.

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Buat tabel untuk tipe data LineString. Hanya data garis yang dapat ditulis ke tabel ini.

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

    Tulis data garis.

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • Buat tabel untuk tipe data MULTIPOINT. Hanya data multipoint yang dapat ditulis ke tabel ini.

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

    Tulis data multipoint.

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • Buat tabel untuk tipe data MULTILINESTRING. Hanya data multilinestring yang dapat ditulis ke tabel ini.

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

    Tulis data multilinestring.

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • Buat tabel untuk tipe data MULTIPOLYGON. Hanya data multipolygon yang dapat ditulis ke tabel ini.

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

    Tulis data multipolygon.

    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)))'));
  • Buat tabel untuk tipe data GEOMETRYCOLLECTION. Hanya data koleksi geometri yang dapat ditulis ke tabel ini.

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

    Tulis data koleksi geometri.

    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)))'));
  • Buat tabel dengan beberapa kolom bertipe Geometry.

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