全部产品
Search
文档中心

Lindorm:CREATE TABLE

更新时间:Dec 25, 2025

Anda dapat menggunakan pernyataan CREATE TABLE untuk membuat tabel di LindormTable atau LindormTSDB. Pernyataan ini mendukung berbagai tipe data, seperti VARCHAR, TIMESTAMP, dan BIGINT, serta berbagai properti tabel, seperti time-to-live (TTL) dan algoritma COMPRESSION. Kombinasikan properti dan tipe data tersebut untuk merancang tabel yang paling sesuai dengan skenario bisnis Anda.

Mesin dan versi

  • CREATE TABLE berlaku untuk LindormTable dan LindormTSDB.

  • LindormTSDB mendukung sintaks CREATE TABLE standar mulai versi 3.4.32 dan yang lebih baru. Untuk melihat atau melakukan upgrade versi mesin database Anda, lihat Panduan versi LindormTSDB dan Pembaruan 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_identifer '=' string_literal 

Perbedaan

Sintaks CREATE TABLE sangat berbeda antara LindormTable dan LindormTSDB. Tabel berikut membandingkan perbedaan tersebut.

Elemen sintaks

LindormTable

LindormTSDB

Nama tabel (table_identifier)

0

Definisi kolom (column_definition)

0

Kunci utama (primary_key)

0

0

Ekspresi indeks (KEY|INDEX)

0

✖️

Partisi (partition_definition)

✖️

0

Properti tabel (table_options)

0

✖️

Catatan penggunaan

Nama tabel (table_identifier)

Perhatikan hal-hal berikut saat menentukan nama tabel:

  • Nama dapat berisi angka, huruf besar, 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)

Elemen sintaks

Wajib

Catatan penggunaan

Nama kolom (column_identifier)

Ya

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

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

  • Panjangnya tidak boleh melebihi 255 byte.

Tipe data (data_type)

Ya

Untuk informasi 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 sebagai tipe TIMESTAMP.

  • LindormTSDB menyandikan dan mengurai timestamp berdasarkan UTC+8.

  • Pada beberapa sistem warisan, timestamp Unix masih diproses sebagai nilai 32-bit. Kalikan timestamp tersebut dengan 1000 sebelum menulisnya ke LindormTSDB. Jika Anda menulis timestamp tersebut langsung ke LindormTSDB tanpa konversi, akan terjadi bias interpretasi semantik. Misalnya, timestamp 1641009600 diinterpretasikan sebagai 2022-01-01 12:00:00 pada sistem warisan, tetapi diinterpretasikan sebagai 1970-01-20 07:50:09(GMT+8)  di LindormTSDB.

Kendala NULL

Tidak

Menentukan apakah nilai kolom dapat bernilai NULL.

Penting

Saat ini, Lindorm SQL tidak memvalidasi batasan NULL. Mesin penyimpanan yang melakukan validasi ini.

Metode validasi batasan NULL bergantung pada aturan mesin penyimpanan. Mesin penyimpanan yang berbeda memiliki aturan yang berbeda. Oleh karena itu, Anda mungkin tetap dapat menulis nilai NULL meskipun telah menentukan NOT NULL.

Untuk memastikan data dapat ditulis dengan benar, ikuti persyaratan berikut:

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

  • Untuk kolom non-kunci primer, jangan tentukan NOT NULL dalam definisi kolom.

Kunci utama (primary_key)

Kunci primer adalah pengidentifikasi unik untuk data dalam sebuah tabel. Kunci primer terdiri dari satu atau beberapa kolom. Anda harus menentukan kunci primer (PRIMARY KEY) saat membuat tabel.

Penting

Anda tidak dapat mengubah kunci primer setelah dibuat. Rancang kunci primer Anda dengan hati-hati.

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

Jenis mesin

Penggunaan kunci primer

LindormTable

  • Panjang maksimum kolom kunci primer tunggal adalah 2 KB.

  • Total panjang semua kolom kunci utama tidak boleh melebihi 30 KB.

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

LindormTSDB

  • Pada tabel deret waktu, kolom kunci primer bertipe VARCHAR disebut tag column, sedangkan kolom kunci primer bertipe TIMESTAMP disebut timestamp column.

  • Tipe data kolom kunci primer harus berupa VARCHAR atau TIMESTAMP.

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

  • Pada tabel deret waktu, gunakan pengidentifikasi unik sumber data sebagai PRIMARY KEY, seperti ID perangkat pada skenario Internet of Things (IoT), pengidentifikasi kendaraan unik pada skenario Internet of Vehicles (IoV), atau ID aplikasi atau ip:port pada skenario pemantauan. Untuk informasi selengkapnya, lihat Praktik terbaik dalam perancangan PRIMARY KEY.

Ekspresi indeks (KEY|INDEX)

Saat menggunakan pernyataan CREATE TABLE untuk membuat tabel indeks, Anda dapat menggunakan kata kunci KEY atau INDEX guna menentukan indeks yang akan dibuat.

Penting
  • Ekspresi indeks (KEY|INDEX) hanya didukung pada LindormTable 2.7.7 atau yang lebih baru dan Lindorm SQL 2.8.6.0 atau yang lebih baru.

  • Untuk melihat versi LindormTable dan Lindorm SQL Anda, lihat Panduan versi LindormTable dan Panduan versi SQL. Jika Anda tidak dapat melakukan upgrade ke versi tersebut melalui Konsol, hubungi dukungan teknis Lindorm di DingTalk melalui s0s3eg3.

Catatan penggunaan

  • Jika Anda tidak secara eksplisit menentukan nama indeks, sistem akan menghasilkan nama secara default. Format nama indeks yang dihasilkan adalah table_name_idx_${auto_increment_id}.

  • Saat ini, Anda hanya dapat membuat secondary indexes dan search indexes menggunakan ekspresi indeks.

  • Redundansi Secondary index:

    Lindorm SQL 2.9.3.10 dan versi selanjutnya

    Jika Anda tidak menentukan klausa INCLUDE saat membuat secondary index, semua kolom tidak disimpan secara redundan secara default.

    Lindorm SQL versi sebelum 2.9.3.10

    Jika Anda tidak menentukan klausa INCLUDE saat membuat secondary index, semua kolom disimpan secara redundan secara default.

    Catatan

    Efek redundansi ini sama dengan mengatur properti indeks INDEX_COVERED_TYPE menjadi COVERED_ALL_COLUMNS_IN_SCHEMA. Jika tabel yang dibuat di sini merupakan tabel dinamis, efeknya sama dengan mengatur properti tersebut menjadi COVERED_DYNAMIC_COLUMNS.

  • Jika Anda menentukan klausa KEY atau INDEX saat membuat tabel dan tidak secara eksplisit menentukan properti MUTABILITY dan CONSISTENCY, tabel tersebut memiliki properti berikut secara default: CONSISTENCY = 'strong', MUTABILITY='MUTABLE_LATEST'.

  • Jika pernyataan CREATE TABLE mencakup ekspresi indeks, sistem pertama-tama akan membuat tabel lalu membuat indeks. Jika terjadi pengecualian selama pembuatan indeks, tabel dan indeks mungkin tetap dalam keadaan sisa dan tidak dihapus secara otomatis. Anda dapat melihatnya menggunakan pernyataan seperti SHOW dan DESCRIBE, tetapi Anda mungkin tidak dapat menulis data atau melakukan kueri. Kami menyarankan agar Anda menghapus tabel dan indeks sisa tersebut lalu membuatnya kembali.

Partisi (partition_definition)

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

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

Properti tabel (table_options)

Hanya mesin tabel lebar yang mendukung properti tabel (table_options). Anda dapat menggunakan kata kunci WITH untuk menambahkan properti tabel berikut:

Opsi (option_identifer)

Tipe

Deskripsi

COMPRESSION

STRING

Algoritma kompresi untuk tabel. Algoritma kompresi opsional adalah:

  • SNAPPY

  • ZSTD

  • LZ4

Catatan

Untuk versi LindormTable sebelum 2.3.4, tidak ada algoritma kompresi yang ditentukan secara default. Untuk LindormTable 2.3.4 dan yang lebih baru, algoritma kompresi default adalah ZSTD.

TTL

INT

Waktu hidup (TTL) data, dalam satuan detik (s).

Catatan
  • Secara default, opsi TTL kosong, yang berarti data tidak kedaluwarsa.

  • Anda dapat mengatur TTL untuk tabel dengan menambahkan TTL=<specified_time> pada pernyataan pembuatan tabel, atau menghapus TTL dengan mengatur nilainya menjadi string kosong. Untuk informasi selengkapnya, lihat Contoh.

COMPACTION_MAJOR_PERIOD

LONG

Periode sistem untuk menjalankan major compaction, dalam satuan milidetik (ms). Untuk informasi selengkapnya, lihat Tentukan Periode Major Compaction.

Catatan

Nilai default: Math.Min(TTL, 1728000000 ms). Jika Anda tidak mengatur TTL, nilai default parameter ini adalah 20 hari (20 × 24 × 60 × 60 × 1000 ms = 1728000000 ms).

MUTABILITY

STRING

Atribut terkait indeks yang menentukan mutabilitas tabel dasar. Nilai default adalah MUTABLE_LATEST.

Semua nilai yang valid tercantum di bawah ini:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

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

Penting

Setelah membuat tabel indeks, Anda tidak dapat mengubah nilai parameter MUTABILITY. Untuk menyesuaikan parameter ini, Anda harus terlebih dahulu menghapus semua tabel indeks. Cadangkan data Anda sebelum operasi untuk mencegah kehilangan data.

CONSISTENCY

STRING

Properti konsistensi tabel. Untuk instans multi-zona, parameter ini menunjukkan konsistensi data antara data primer dan standby. Terdapat dua tingkat berikut:

  • eventual: konsistensi akhir. Ini adalah nilai default.

  • strong: konsistensi kuat.

Penting

Untuk instans multi-zona, jika data Anda melibatkan operasi read-after-write, seperti increase, append, atau pembaruan indeks, Anda harus mengatur parameter CONSISTENCY pada tabel primer ke strong untuk memastikan konsistensi data antara instans primer dan standby.

NUMREGIONS

INT

Jumlah region yang akan dibuat sebelumnya untuk tabel.

CHS

INT

Batas pemisahan data panas dan dingin, dalam satuan detik.

Catatan
  • Untuk mengatur batas pemisahan data panas dan dingin, Anda harus mengaktifkan fitur cold storage. Untuk informasi selengkapnya tentang fitur ini dan cara mengaktifkannya, lihat Pemisahan data panas dan dingin.

  • Saat mengatur opsi batas data panas/dingin, Anda juga harus menentukan CHS_L2='storagetype=COLD'.

STARTKEY dan ENDKEY

Sama dengan tipe data kolom pertama dalam PRIMARY KEY

Kunci awal dan kunci akhir untuk membuat partisi region sebelumnya untuk tabel.

Catatan
  • Jika Anda menentukan STARTKEY dan ENDKEY, Anda juga harus menentukan NUMREGIONS. Jika Anda menentukan STARTKEY dan ENDKEY tanpa menentukan NUMREGIONS, pengaturan tersebut tidak berpengaruh.

  • Nilai literal string yang ditentukan dalam STARTKEY dan ENDKEY dikonversi secara implisit ke tipe kolom pertama dalam PRIMARY KEY untuk digunakan sebagai kunci awal dan akhir partisi. Saat ini, Anda hanya dapat menentukan STARTKEY dan ENDKEY untuk tipe berikut:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

Sama dengan tipe data kolom pertama dalam PRIMARY KEY

Kunci awal untuk semua partisi yang dibuat sebelumnya untuk tabel.

Catatan
  • SPLITKEYS didukung mulai LindormTable 2.5.4.

  • Pada nilai string SPLITKEYS, gunakan koma (,) untuk memisahkan kunci awal partisi yang dibuat sebelumnya. Koma yang diapit tanda kutip ganda dianggap sebagai karakter biasa.

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

  • Seperti STARTKEY dan ENDKEY, nilai literal string yang ditentukan dikonversi secara implisit ke tipe kolom pertama dalam PRIMARY KEY untuk digunakan sebagai kunci awal partisi. Hanya tipe data berikut yang didukung:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Menentukan algoritma pemisahan untuk partisi yang dibuat sebelumnya. Saat ini, hanya algoritma pemisahan berikut yang didukung:

  • HexStringSplit: Memisahkan kunci primer menggunakan byte heksadesimal.

  • UniformSplit: Melakukan pemisahan merata menggunakan nilai byte asli.

DYNAMIC_COLUMNS

STRING

Menentukan apakah kolom dinamis diaktifkan. Nilai yang valid:

  • True: Ya.

  • False: Tidak. Ini adalah nilai default.

Catatan

Kolom dinamis hanya mendukung tipe Varbinary. Untuk informasi selengkapnya tentang kolom dinamis, lihat Kolom dinamis.

VERSIONS

STRING

Jumlah versi yang disimpan untuk nilai kolom. Nilainya harus berupa bilangan bulat yang lebih besar atau sama dengan 1. Nilai default adalah 1, artinya satu versi disimpan. Lindorm mendukung penyimpanan beberapa versi nilai kolom. Untuk informasi selengkapnya tentang manajemen data multi-versi, lihat Manajemen data multi-versi.

Penting

Nilai VERSIONS yang besar dapat memengaruhi kinerja kueri dan penyimpanan data. Hindari menetapkan nilai yang terlalu besar. Tetapkan VERSIONS ke 1.

BLOB_BUCKET_NAME

STRING

Membuat BUCKET untuk tabel yang berisi kolom BLOB. Nilainya adalah nama BUCKET kustom.

Nama BUCKET harus mengikuti aturan berikut:

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

  • Harus terdiri dari 3 hingga 63 karakter.

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

  • Tidak boleh berisi titik (.) berurutan.

Catatan
  • BLOB_BUCKET_NAME didukung mulai LindormTable 2.6.4.

  • Jika Anda tidak menetapkan kolom BLOB saat membuat tabel tetapi menetapkan properti BLOB_BUCKET_NAME, sistem tidak akan memicu pemeriksaan nama BUCKET.

Catatan

Pada versi LindormTable sebelum 2.2.16, kata kunci WITH tidak didukung saat menetapkan properti tabel. Anda harus membungkus kata kunci properti tabel dalam tanda kutip tunggal ('). Anda dapat menetapkan nilai properti berdasarkan tipe datanya. Jika nilai properti berupa string (STRING), Anda juga harus membungkus string tersebut dalam 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 hasil

Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

Buat indeks saat membuat tabel

Buat 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 hasil

Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat, dan menjalankan SHOW INDEX FROM sensor; untuk memeriksa apakah secondary index berhasil dibuat.

Tentukan TTL dan algoritma kompresi

Saat membuat tabel lebar, atur TTL menjadi 30 hari (2.592.000 detik) dan algoritma kompresi menjadi ZSTD.

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 hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Details Table, klik View Table Properties untuk melihat nilai parameter COMPRESSION dan TTL.

Tentukan periode Major Compaction

Saat membuat tabel lebar, atur periode 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 hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Details Table, klik View Table Properties untuk melihat nilai parameter COMPACTION_MAJOR_PERIOD.

Aktifkan fitur kolom dinamis

Setelah menetapkan parameter DYNAMIC_COLUMNS ke TRUE saat membuat tabel lebar, Anda dapat menulis data kolom dinamis ke tabel tersebut.

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 hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Details Table, klik View Table Properties untuk melihat nilai parameter DYNAMIC_COLUMNS.

Tentukan batas data panas dan dingin

Saat membuat tabel lebar, atur batas data panas dan dingin. Sistem akan mengarsipkan data berdasarkan batas ini.

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 hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Details Table, klik View Table Properties untuk melihat nilai parameter CHS dan CHS_L2.

Tentukan beberapa properti sekaligus

Saat membuat tabel lebar, tentukan algoritma kompresi, TTL, dan batas data panas dan 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 hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di database target. Di area Current Details Table, klik View Table Properties untuk melihat nilai parameter COMPRESSION, CHS, CHS_L2, dan TTL.

Atur partisi

Saat membuat tabel lebar, Anda dapat menentukan lima partisi sebelumnya. Kunci awal untuk partisi-partisi ini adalah 1.000 dan kunci akhirnya adalah 9.000.

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

Verifikasi hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memeriksa apakah tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Shard Details, lihat nilai parameter startKey dan endKey untuk setiap shard.

Tentukan kunci awal untuk beberapa partisi

Saat membuat tabel lebar, Anda dapat menentukan lima kunci awal sebelumnya. Tabel tersebut kemudian akan dibuat dengan enam partisi secara default.

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

Verifikasi hasil

  • Anda dapat menjalankan DESCRIBE table sensor; untuk memverifikasi bahwa tabel berhasil dibuat.

  • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di database target. Di area Shard Details, lihat nilai parameter startKey dan endKey untuk setiap shard.

Tentukan secara eksplisit kolom kunci partisi

Sebagian besar skenario kueri melibatkan kueri data instan dari satu perangkat. Untuk skenario ini, Anda dapat menentukan secara eksplisit device_id sebagai kolom kunci partisi untuk pemartisian 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)
) PARTITION BY HASH(device_id);

Verifikasi hasil

Anda dapat menjalankan pernyataan DESCRIBE TABLE sensor; untuk memverifikasi hasil pembuatan tabel.

Buat tabel data spatio-temporal

  • Buat tabel yang mendukung tipe data spasial apa pun (Geometry). Anda dapat menulis data dengan tipe data spasial apa pun ke tabel tersebut.

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

    Tulis data dengan tipe data spasial apa pun.

    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 yang mendukung tipe Point. Anda hanya dapat menulis data titik ke tabel tersebut.

    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 yang mendukung tipe Polygon. Anda hanya dapat menulis data poligon ke tabel tersebut.

    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 yang mendukung tipe LineString. Anda hanya dapat menulis data garis ke tabel tersebut.

    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 yang mendukung tipe MULTIPOINT. Anda hanya dapat menulis data multipoint ke tabel tersebut.

    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 yang mendukung tipe MULTILINESTRING. Anda hanya dapat menulis data multilinestring ke tabel tersebut.

    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 yang mendukung tipe MULTIPOLYGON. Anda hanya dapat menulis data multipolygon ke tabel tersebut.

    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 yang mendukung tipe GEOMETRYCOLLECTION. Anda hanya dapat menulis data koleksi geometri ke tabel tersebut.

    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 yang terdiri dari beberapa kolom dengan tipe data spasial (Geometry).

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