Topik ini menjelaskan sintaks untuk membuat tabel yang mendukung tipe data geometri.
Sintaks
create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] nama_tabel
'('
definisi_kolom
( ',' definisi_kolom )*
',' [kendala pk] PRIMARY KEY '(' primary_key ')'
')' WITH [ opsi_tabel ]
definisi_kolom ::= nama_kolom lql_type
primary_key ::= item_utama [ ',' item_utama ]
item_utama ::= nama_kolom (ASC|DESC)
| [z-order] '(' [ nama_kolom ( ',' nama_kolom )* ] ')'Sintaks ini mendukung IF NOT EXISTS. Anda dapat menentukan satu atau lebih kolom sebagai kunci utama.
Parameter
Nama tabel (table_identifier)
Nama tabel harus memenuhi persyaratan berikut:
Nama dapat berisi angka, huruf, koma (,), tanda hubung (-), dan garis bawah (_).
Nama tidak boleh dimulai dengan titik (.) atau tanda hubung (-).
Nama harus memiliki panjang antara 1 hingga 255 karakter.
Definisi kolom (column_definition)
Opsi | Diperlukan | Deskripsi |
Nama kolom (column_identifier) | Ya |
|
Tipe data (data type) | Ya | Untuk informasi lebih lanjut tentang tipe data yang didukung oleh sintaks ini, lihat Tipe data. Penting Jika Anda ingin menentukan tipe TIMESTAMP saat membuat tabel deret waktu, perhatikan hal-hal berikut:
|
Kendala NULL | Tidak | Menentukan apakah nilai dari opsi ini dapat bernilai NULL. Penting Lindorm SQL tidak memverifikasi nilai NULL dari opsi. Nilai-nilai ini diverifikasi oleh mesin. Metode verifikasi nilai NULL bergantung pada aturan verifikasi mesin. Aturan verifikasi bervariasi tergantung pada mesin. Oleh karena itu, nilai NULL mungkin tetap ditulis ke tabel meskipun Anda mengatur opsi ini ke NOT NULL. Untuk memastikan bahwa data dapat ditulis ke tabel, perhatikan persyaratan berikut:
|
Kunci utama (primary_key)
Kunci utama secara unik mengidentifikasi data dalam tabel. Kunci utama terdiri dari satu atau lebih kolom. Anda harus menentukan kunci utama saat membuat tabel.
Anda tidak dapat memodifikasi kunci utama. Pastikan Anda menentukan kunci utama yang sesuai saat membuat tabel.
Saat menggunakan sintaks CREATE TABLE untuk membuat tabel, perhatikan item yang dijelaskan dalam tabel berikut.
Mesin | Penggunaan kunci utama |
LindormTable |
|
LindormTSDB |
|
Ekspresi indeks (KEY|INDEX)
Untuk membuat tabel indeks menggunakan pernyataan CREATE TABLE, Anda dapat menggunakan kata kunci KEY atau INDEX untuk menentukan indeks yang ingin dibuat.
Ekspresi indeks (KEY|INDEX) hanya didukung oleh LindormTable versi 2.7.7 ke atas serta Lindorm SQL versi 2.8.6.0 ke atas. Untuk informasi lebih lanjut tentang cara melihat versi LindormTable dan Lindorm SQL, lihat Catatan Rilis LindormTable dan Versi SQL. Jika Anda tidak dapat memperbarui mesin Anda ke versi yang diperlukan di konsol, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).
Saat menggunakan ekspresi indeks, perhatikan hal-hal berikut:
Jika Anda tidak secara eksplisit menentukan nama indeks, sistem akan menghasilkan nama indeks. Format: <nama_tabel>_idx_${nomor_auto-increment}.
Indeks Sekunder dan Indeks Pencarian hanya dapat dibuat menggunakan ekspresi indeks. Untuk informasi lebih lanjut tentang jenis indeks, lihat bagian BUAT INDEKS topik "BUAT INDEKS".
Jika Anda membuat indeks sekunder dan tidak menentukan ekspresi INCLUDE, indeks yang dibuat mencakup semua kolom. Ini setara dengan mengatur atribut indeks INDEX_COVERED_TYPE ke COVERED_ALL_COLUMNS_IN_SCHEMA. Jika tabel yang dibuat adalah tabel dinamis, ini setara dengan mengatur atribut indeks INDEX_COVERED_TYPE ke COVERED_DYNAMIC_COLUMNS.
Untuk informasi lebih lanjut tentang atribut INDEX_COVERED_TYPE, lihat bagian Atribut Indeks (index_options) topik "BUAT INDEKS".
Jika Anda menentukan klausa KEY atau INDEX tetapi tidak secara eksplisit menentukan atribut MUTABILITY dan CONSISTENCY, tabel memiliki dua atribut tabel: CONSISTENCY ='strong' dan MUTABILITY='MUTABLE_LATEST'.
Untuk informasi lebih lanjut tentang atribut CONSISTENCY dan MUTABILITY, lihat bagian Atribut Tabel (table_options) topik "BUAT TABEL".
Jika ekspresi indeks termasuk dalam pernyataan CREATE TABLE, sistem pertama-tama membuat tabel lalu membuat indeks. Jika terjadi pengecualian saat membuat indeks, tabel dan indeks yang dibuat mungkin tetap ada di database dan tidak akan secara otomatis dibersihkan atau dihapus. Anda dapat melihat tabel dan indeks dengan mengeksekusi pernyataan seperti SHOW atau DESCRIBE, tetapi Anda mungkin tidak dapat menulis data ke atau menanyakan tabel atau indeks tersebut. Kami sarankan Anda membersihkan dan kemudian membuat ulang tabel dan indeks.
Partisi (partition_definition)
Partisi hanya didukung oleh LindormTSDB. Dalam tabel deret waktu, kolom kunci partisi yang ditentukan oleh klausa PARTITION BY harus merupakan kolom VARCHAR yang didefinisikan dalam kunci utama.
Saat membuat tabel, Anda dapat menggunakan klausa PARTITION BY HASH(column1, column2, ..., columnN) untuk menentukan kolom berdasarkan mana partisi hash dilakukan pada tabel. Contoh: PARTITION BY HASH(c1, p1).
Atribut tabel (table_options)
Parameter ini hanya didukung oleh LindormTable. Anda dapat menggunakan kata kunci WITH untuk menambahkan atribut yang dijelaskan dalam tabel berikut ke tabel yang ingin dibuat.
Atribut (option_identifer) | Tipe | Deskripsi |
COMPRESSION | STRING | Algoritma yang digunakan untuk mengompresi data dalam tabel. Nilai valid:
Catatan Dalam LindormTable versi lebih awal dari 2.3.4, algoritma kompresi apa pun tidak digunakan secara default. Dalam LindormTable 2.3.4 dan versi lebih baru, algoritma ZSTD digunakan secara default. |
TTL | INT | Nilai TTL data dalam tabel. Unit: detik. Catatan
|
COMPACTION_MAJOR_PERIOD | LONG | Interval di mana operasi Catatan Interval default dihitung menggunakan rumus berikut: Math.Min(TTL,1728000000ms). Jika Anda tidak menentukan TTL, nilai atribut ini diatur ke 1728000000 ms (setara dengan 20 hari) secara default. |
MUTABILITY | STRING | Atribut terkait indeks. Opsi ini menentukan mutabilitas tabel dasar. Nilai default: Nilai valid:
Untuk informasi lebih lanjut tentang nilai-nilai tersebut, lihat Indeks sekunder. Penting Nilai atribut MUTABILITY tidak dapat dimodifikasi setelah tabel indeks dibuat. Untuk menyesuaikan atribut ini, Anda harus menghapus semua tabel indeks terlebih dahulu. Kami sarankan Anda mencadangkan data Anda sebelum penyesuaian untuk menghindari kehilangan data. |
CONSISTENCY | STRING | Tingkat konsistensi tabel. Nilai default: eventual. Untuk instance lintas zona, parameter ini menentukan konsistensi data antara tabel utama dan tabel sekunder. Nilai valid:
Penting Untuk instance lintas zona, jika data dibaca dan kemudian ditulis dalam operasi penambahan, penggabungan, dan pembaruan indeks, Anda harus mengatur parameter CONSISTENCY tabel utama ke |
NUMREGIONS | INT | Jumlah wilayah data dalam tabel yang ingin Anda buat. |
CHS | INT | Periode waktu setelah data disimpan menggunakan penyimpanan dingin. Unit: detik. Catatan
|
STARTKEY dan ENDKEY | Tipe data sama dengan kolom pertama dalam kunci utama yang ditentukan oleh PRIMARY KEY | Kunci awal dan kunci akhir setiap wilayah. Catatan
|
SPLITKEYS | Tipe data sama dengan kolom pertama dalam kunci utama yang ditentukan oleh PRIMARY KEY | Kunci awal semua wilayah pra-pemisah. Catatan
|
SPLITALGO | STRING | Algoritma pemisahan yang digunakan untuk pra-partisi. Dua algoritma berikut didukung:
|
DYNAMIC_COLUMNS | STRING | Menentukan apakah akan mengaktifkan kolom dinamis. Nilai default: False. Nilai valid:
Catatan Kolom dinamis hanya mendukung tipe data VARBINARY. Untuk informasi lebih lanjut tentang kolom dinamis, lihat Kolom dinamis. |
VERSIONS | STRING | Jumlah versi yang disimpan untuk data kolom. Nilai parameter ini adalah bilangan bulat lebih besar dari atau sama dengan 1. Nilai default parameter ini adalah 1, yang menunjukkan bahwa hanya satu versi yang disimpan untuk data kolom. Lindorm memungkinkan Anda menyimpan beberapa versi data kolom. Untuk informasi lebih lanjut, lihat Gunakan petunjuk untuk mengimplementasikan versi data. Penting Jika Anda mengatur VERSIONS ke nilai besar, kinerja kueri dan penyimpanan tabel mungkin menurun. Kami sarankan Anda tidak mengatur atribut ini ke nilai besar. Nilai yang direkomendasikan: 1. |
BLOB_BUCKET_NAME | STRING | Nama Bucket OSS yang dibuat untuk tabel yang berisi kolom BLOB. Nama bucket harus memenuhi persyaratan berikut:
Catatan
|
LindormTable versi sebelum 2.2.16 tidak mendukung kata kunci WITH. Dalam hal ini, Anda harus mengapit nama atribut dengan sepasang tanda kutip (''). Nilai atribut dapat dikonfigurasi berdasarkan tipe data atribut tersebut. Jika nilai atribut adalah string, Anda harus mengapit string tersebut dengan sepasang tanda kutip (''). Contoh: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.
Contoh
Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang mendukung semua tipe data geometri:
CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis berbagai jenis data geometri ke tabel:
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))'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek titik:
CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid);Anda dapat mengeksekusi pernyataan berikut untuk menulis objek titik ke tabel:
UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek poligon:
CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek poligon ke tabel:
UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek LineString:
CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek LineString ke tabel:
UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek MultiPoint:
CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek MultiPoint ke tabel:
UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek MultiLineString:
CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek MultiLineString ke tabel:
UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek MultiPolygon:
CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek MultiPolygon ke tabel:
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)))'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang hanya mendukung objek GeometryCollection:
CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));Anda dapat mengeksekusi pernyataan berikut untuk menulis objek GeometryCollection ke tabel:
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)))'));Anda dapat mengeksekusi pernyataan berikut untuk membuat tabel yang berisi beberapa kolom dengan data geometri yang berbeda:
CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));