Tipe data Hologres kompatibel dengan PostgreSQL. Topik ini menjelaskan tipe data dan array yang didukung oleh Hologres.
Tipe Data
Tipe data Hologres merupakan subset dari tipe data PostgreSQL. Tabel berikut menjelaskan tipe data yang didukung oleh Hologres.
Tipe Data | Versi yang Didukung | Panjang | Deskripsi | Rentang Nilai | Contoh |
INTEGER (INT atau INT4) | Semua versi Hologres | 4 byte | Bilangan bulat umum. | -2147483648 hingga 2147483647 | 2147483647 |
BIGINT (INT8) | Semua versi Hologres | 8 byte | Bilangan bulat dalam rentang besar. | -9223372036854775808 hingga 9223372036854775807 | 9223372036854775807 |
BOOLEAN (BOOL) | Semua versi Hologres | 1 byte | Tipe data Boolean. |
| True. |
REAL (FLOAT4) | Semua versi Hologres | 4 byte | Data memiliki presisi variabel. Hasilnya tidak presisi. Catatan Dalam PostgreSQL, jika Anda tidak menentukan presisi untuk FLOAT, tipe data DOUBLE PRECISION (FLOAT8) digunakan secara default. | Angka dengan hingga enam digit desimal presisi | 123.123 |
DOUBLE PRECISION (FLOAT8) | Semua versi Hologres | 8 byte | Data memiliki presisi variabel. Hasilnya tidak presisi. | Angka dengan hingga 15 digit desimal presisi | 123.123456789123 |
TEXT | Semua versi Hologres | Panjang variabel | String karakter dengan panjang variabel. Dibandingkan dengan tipe data VARCHAR(n) dan CHAR(n), tipe data TEXT lebih fleksibel. Kami merekomendasikan Anda menggunakan tipe data TEXT daripada tipe data VARCHAR(n) dan CHAR(n). | Tidak ada | abcdefg |
TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ) | Semua versi Hologres | 8 byte | Timestamp dengan zona waktu. Nilainya akurat hingga milidetik. Catatan PostgreSQL standar menggunakan tanda plus (+) atau tanda minus (-) dan offset zona waktu dalam nilai tipe data | 4713 SM hingga 294276 M | 2004-10-19 10:23:54+02 |
DECIMAL (NUMERIC) | Semua versi Hologres | Panjang variabel | Presisi dan skala harus ditentukan.
| Angka dengan maksimum 38 digit, termasuk bilangan bulat dan tempat desimal | DECIMAL(38, 10) |
DATE | Hologres V0.8 dan setelahnya | 4 byte | Nilainya akurat hingga hari. | 4713 SM hingga 5874897 M | 2004-10-19 |
TIMESTAMP | Hologres V0.8 dan setelahnya | 8 byte | Timestamp tanpa zona waktu. Nilainya akurat hingga mikrodetik. | 4713 SM hingga 5874897 M | 2020-01-01 01:01:01.123456 |
CHAR(n) | Hologres V0.8 dan setelahnya | String karakter dengan panjang tetap n karakter. | Ukuran data harus kurang dari atau sama dengan 1 GB. | String karakter dengan panjang tetap |
|
VARCHAR(n) | Hologres V0.8 dan setelahnya | String karakter dengan panjang variabel yang tidak dapat melebihi n karakter. | Ukuran data harus kurang dari atau sama dengan 1 GB. | String karakter dengan panjang variabel terbatas | abcdefg |
SERIAL (serial auto-increment) | Hologres V0.8 dan setelahnya | Untuk informasi lebih lanjut, lihat PostgreSQL SERIAL. | Tidak ada. | Tidak ada | Tidak ada |
SMALLINT | Hologres V0.9 dan setelahnya | 2 byte | Bilangan bulat dalam rentang kecil. | -32768 hingga +32767 | 32767 |
JSON dan JSONB | Hologres V0.9 dan setelahnya | Untuk informasi lebih lanjut, lihat Tipe data JSON. | Tidak ada. | Tidak ada | Tidak ada |
BYTEA | Hologres V0.9 dan setelahnya | Panjang variabel. Untuk informasi lebih lanjut, lihat Tipe Data Biner. | String biner dengan panjang variabel. | Ukuran data kurang dari atau sama dengan 1 GB | Tidak ada |
RoaringBitmap | Hologres V0.10 dan setelahnya | Panjang variabel. Untuk informasi lebih lanjut, lihat Fungsi Roaring Bitmap. | Array INT yang efisien yang mendukung komputasi bitmap dari array konstan. | Tidak ada | Tidak ada |
RoaringBitmap64 | Hologres V3.1 dan setelahnya | Panjang variabel. Untuk informasi lebih lanjut, lihat Fungsi Roaring Bitmap. | Array BIGINT yang efisien yang mendukung komputasi bitmap dari array konstan. | Tidak ada | Tidak ada |
BIT(n) | Hologres V0.9 dan setelahnya | String biner dengan panjang n bit. | String biner dengan panjang tetap. | Ukuran data kurang dari atau sama dengan 1 GB | Tidak ada |
VARBIT(n) | Hologres V0.9 dan setelahnya | String biner dengan panjang variabel yang tidak dapat melebihi n bit. | String biner dengan panjang bit terbatas. | Ukuran data kurang dari atau sama dengan 1 GB | Tidak ada |
INTERVAL | Semua versi Hologres | 16 byte | Tidak ada. | -178000000 tahun hingga 178000000 tahun | interval '1 year' |
TIMETZ | Hologres V0.9 dan setelahnya | 12 byte | Nilai waktu dengan zona waktu. Nilainya akurat hingga mikrodetik. | 00:00:00 hingga 24:00:00 | 12:00:00+08 |
TIME | Hologres V0.9 dan setelahnya | 8 byte | Nilai waktu tanpa zona waktu. Nilainya akurat hingga mikrodetik. | 00:00:00 hingga 24:00:00 | 12:00:00 |
INET | Hologres V0.9 dan setelahnya | Untuk informasi lebih lanjut, lihat Tipe Alamat Jaringan. | Tipe data ini memungkinkan Anda menyimpan alamat host IPv4 atau IPv6 dalam domain data. | Tidak ada | 192.168.100.128/25 |
MONEY | Hologres V0.9 dan setelahnya | 8 byte. Untuk informasi lebih lanjut, lihat Tipe Mata Uang. | Tipe data ini memungkinkan Anda menyimpan jumlah mata uang dengan presisi fraksional tetap. | -92233720368547758.08 hingga +92233720368547758.07 | $12.34 |
OID | Hologres V0.9 dan setelahnya | 4 byte | Pengenal objek dalam bentuk numerik. | Tidak ada | 1024 |
UUID | Hologres V0.9 dan setelahnya | 16 byte | Pengenal unik universal dengan panjang tetap 128 bit. Catatan Algoritma yang disediakan oleh modul uuid-ossp tidak didukung. | 00000000-0000-0000-0000-000000000000 hingga ffffffff-ffff-ffff-ffff-ffffffffffff | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 |
Contoh pernyataan SQL berikut menunjukkan penggunaan tipe data TIMESTAMP WITH TIME ZONE, DATE, dan DECIMAL:
CREATE TABLE test_data_type (
tswtz_column TIMESTAMP WITH TIME ZONE,
date_column date,
decimal_column decimal(38, 10),
char_column char(20),
varchar_volumn varchar(225)
);
INSERT INTO test_data_type
VALUES ('2004-10-19 08:08:08', '2004-10-19', 123.456, 'abcd', 'a');
SELECT * FROM test_data_type;
tswtz_column | date_column | decimal_column | char_column | varchar_volumn
------------------------+-------------+----------------+----------------------+----------------
2004-10-19 08:08:08+08 | 2004-10-19 | 123.4560000000 | abcd | a
(1 row)Contoh pernyataan SQL berikut menunjukkan penggunaan tipe data BIT, VARBIT, dan BYTEA:
// Tipe data BIT dan VARBIT
CREATE TABLE test (a BIT(3), b BIT VARYING(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');
ERROR: panjang string bit 2 tidak sesuai dengan tipe bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
a | b
-----+-----
101 | 00
100 | 101
//Tipe data BYTEA
SET bytea_output = 'escape';
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
----------------
abc klm *\251T
RESET bytea_output; -- 'hex' secara default
SELECT 'abc \153\154\155 \052\251\124'::bytea;
bytea
--------------------------
\x616263206b6c6d202aa954
(1 row)Tipe Array
Hologres mendukung array satu dimensi untuk tipe berikut:
int4[]
int8[]
float4[]
float8[]
boolean[]
text[]
Contoh pernyataan SQL berikut menunjukkan cara menggunakan tipe array di atas:
Deklarasi array.
CREATE TABLE array_example( int4_array int4[], int8_array int8[], float4_array float4[], float8_array float8[], boolean_array boolean[], text_array text[]);Masukkan array.
Gunakan kata kunci ARRAY.
INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES (ARRAY[1, 2, 3, 4], ARRAY[1, 2, 3, 4], ARRAY[1.0, 2.0], ARRAY[1.0, 2.0, 3.0], ARRAY[true, true, false], ARRAY['foo1', 'foo2', 'foo3']);Gunakan ekspresi
{}.INSERT INTO array_example( int4_array, int8_array, float4_array, float8_array, boolean_array, text_array) VALUES ('{1, 2, 3, 4}', '{1, 2, 3, 4}', '{1.0, 2.0}', '{1.0, 2.0, 3.0}', '{true, true, false}', '{"foo1", "foo2", "foo3"}');
Kueri data dari array.
Kueri elemen dalam array.
SELECT int4_array[3] FROM array_example;Kueri beberapa elemen dalam array.
SELECT int4_array[1:2] FROM array_example;
Pemetaan Tipe Data antara MaxCompute dan Hologres
Tabel berikut menjelaskan pemetaan tipe data antara MaxCompute dan Hologres saat membuat tabel asing dari tabel MaxCompute.
Tipe data yang didukung oleh MaxCompute | Tipe data yang didukung oleh Hologres | Versi yang Didukung | Deskripsi |
| TEXT | Semua versi Hologres. | Tidak ada. |
BIGINT | INT8 | Semua versi Hologres. | Tidak ada. |
INT |
| Semua versi Hologres. | Tidak ada. |
FLOAT |
| Semua versi Hologres. | Tidak ada. |
DOUBLE |
| Semua versi Hologres. | Tidak ada. |
BOOLEAN | BOOL | Semua versi Hologres. | Tidak ada. |
DATETIME | TIMESTAMP WITH TIME ZONE | Semua versi Hologres. | Tipe data DATETIME MaxCompute menentukan waktu tanggal dalam UTC+8. Rentang waktunya adalah 0000-01-01 hingga 9999-12-31, akurat hingga milidetik. |
DECIMAL | NUMERIC | Semua versi Hologres. | Jika presisi atau skala tidak ditentukan untuk tipe data DECIMAL di MaxCompute, DECIMAL (38,18) digunakan secara default. Presisi dan skala akan dikonversi otomatis saat membuat tabel asing menggunakan pernyataan IMPORT FOREIGN SCHEMA. Untuk informasi lebih lanjut tentang pernyataan tersebut, lihat IMPORT FOREIGN SCHEMA. |
TIMESTAMP | TIMESTAMP WITH TIME ZONE | Hologres V0.8 dan setelahnya. |
|
CHAR(n) | Secara default, CHAR(n) digunakan. Hologres juga memungkinkan Anda memetakan CHAR(n) di MaxCompute ke TEXT. Untuk memetakan ke TEXT, tambahkan konfigurasi | Hologres V0.8 dan setelahnya. | Entri tipe data CHAR(n) di MaxCompute adalah string karakter dengan panjang tetap n karakter. Nilai maksimum n adalah 255. Jika Anda menyisipkan string karakter yang lebih pendek dari panjang yang diperlukan, Hologres menambahkan spasi ke string karakter untuk meningkatkan panjangnya. |
VARCHAR(n) | Secara default, VARCHAR(n) digunakan. Hologres juga memungkinkan Anda memetakan VARCHAR(n) di MaxCompute ke TEXT. Untuk memetakan ke TEXT, tambahkan konfigurasi | Hologres V0.8 dan setelahnya. | Entri tipe data VARCHAR(n) di MaxCompute adalah string karakter dengan panjang variabel n karakter. Nilai valid n: 1 hingga 65535. |
DATE | DATE | Hologres V0.8 dan setelahnya. | Tidak ada. |
SMALLINT | Secara default, INT2 digunakan. Hologres juga memungkinkan Anda memetakan SMALLINT di MaxCompute ke INT8. Untuk memetakan ke INT8, tambahkan konfigurasi | Semua versi Hologres, di mana tipe data untuk Hologres V0.8 adalah INT4 dan tipe data untuk Hologres V0.9 adalah INT2. | Tidak ada. |
TINYINT | Secara default, INT2 digunakan. Hologres juga memungkinkan Anda memetakan TINYINT di MaxCompute ke INT8. Untuk memetakan ke INT8, tambahkan konfigurasi | Semua versi Hologres, di mana tipe data untuk Hologres V0.8 adalah INT4 dan tipe data untuk Hologres V0.9 adalah INT2. | Tidak ada. |
CHAR | Tidak didukung. | Tidak didukung. | Tidak ada. |
ARRAY<INT> | INT4[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
ARRAY<BIGINT> | INT8[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
ARRAY<FLOAT> | FLOAT4[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
ARRAY<DOUBLE> | FLOAT8[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
ARRAY<BOOLEAN> | BOOLEAN[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
ARRAY<STRING> | TEXT[] | Hologres V0.8 dan setelahnya. | Tidak ada. |
BINARY | BYTEA | Hologres V0.9 dan setelahnya. | Tidak ada. |
ARRAY<TINYINT> | Tidak didukung. | Tidak didukung. | Tidak ada. |
ARRAY<SMALLINT> | Tidak didukung. | Tidak didukung. | Tidak ada. |
Untuk tabel MaxCompute yang berisi bidang dengan tipe data yang tidak didukung oleh Hologres, jika Anda tidak menentukan bidang ini dalam kueri, data dari bidang lain dapat dikueri.
Pemetaan Tipe Data antara Realtime Compute for Apache Flink atau Blink dan Hologres
Tabel berikut menjelaskan pemetaan tipe data antara Realtime Compute for Apache Flink atau Blink dan Hologres.
Realtime Compute for Apache Flink atau Blink hanya mendukung beberapa tipe data tabel sumber log biner Hologres. Untuk informasi lebih lanjut, lihat Gunakan Realtime Compute for Apache Flink atau Blink untuk mengonsumsi data log biner Hologres secara real-time.
Tipe data yang didukung oleh Realtime Compute for Apache Flink atau Blink | Tipe data yang didukung oleh Hologres | Versi Hologres yang Didukung | Versi Realtime Compute for Apache Flink atau Blink yang Didukung |
INT |
| Semua versi Hologres. | Semua versi. |
BIGINT | INT8 | Semua versi Hologres. | Semua versi. |
VARCHAR | TEXT | Semua versi Hologres. | Semua versi. |
DOUBLE |
| Semua versi Hologres. | Semua versi. |
BOOLEAN | BOOL | Semua versi Hologres. | Semua versi. |
DECIMAL | NUMERIC Catatan Saat menjalankan pernyataan CREATE TABLE AS untuk menyinkronkan data dari Realtime Compute for Apache Flink ke Hologres, perhatikan hal-hal berikut:
| Semua versi Hologres. | Semua versi. |
DATE | DATE | Hologres V0.8 dan setelahnya. | Semua versi. |
TIMESTAMP | TIMESTAMP WITH TIME ZONE | Semua versi Hologres. | Semua versi. |
FLOAT |
| Semua versi Hologres. | Semua versi. |
TIME | TIME dan TIMETZ | Semua versi Hologres. Catatan Dalam Hologres V2.1.24 atau setelahnya, fitur rencana tetap dapat digunakan untuk mempercepat eksekusi pernyataan SQL untuk menulis data tipe TIME dan TIMETZ. Untuk informasi lebih lanjut, lihat Percepat eksekusi pernyataan SQL dengan menggunakan rencana tetap. |
|
VARCHAR | JSONB | Hologres V0.10 dan setelahnya. |
|
VARCHAR | JSON | Hologres V0.9 dan setelahnya. |
|
BYTES | RoaringBitmap | Hologres V0.10 dan setelahnya. |
|
VARCHAR | GEOMETRY dan GEOGRAPHY | Semua versi Hologres. Catatan Dalam Hologres V2.1 atau setelahnya, Anda dapat menggunakan fitur rencana tetap untuk mempercepat eksekusi pernyataan SQL untuk menulis data tipe GEOMETRY dan GEOGRAPHY. Untuk informasi lebih lanjut, lihat Percepat eksekusi pernyataan SQL dengan menggunakan rencana tetap. |
|
TINYINT | SMALLINT | Semua versi Hologres. |
|
SMALLINT | SMALLINT | Semua versi Hologres. |
|
ARRAY<INT> | int4[] | Hologres V0.8 dan setelahnya. |
|
ARRAY<BIGINT> | int8[] | Hologres V0.8 dan setelahnya. |
|
ARRAY<FLOAT> | float4[] | Hologres V0.8 dan setelahnya. |
|
ARRAY<DOUBLE> | float8[] | Hologres V0.8 dan setelahnya. |
|
ARRAY<BOOLEAN> | boolean[] | Hologres V0.8 dan setelahnya. |
|
ARRAY<VARCHAR> | TEXT[] | Hologres V0.8 dan setelahnya. |
|
CHAR | Tidak didukung. | Tidak didukung. | Tidak didukung. |
BINARY | Tidak didukung. | Tidak didukung | Tidak didukung. |
Pemetaan tipe data antara MySQL dan Hologres
Tabel berikut menjelaskan pemetaan tipe data antara MySQL dan Hologres. Untuk informasi lebih lanjut tentang cara memigrasikan data dari MySQL ke Hologres, lihat Migrasikan data dari MySQL ke Hologres.
Tipe data yang didukung oleh MySQL | Tipe data yang didukung oleh Hologres |
BIGINT | BIGINT |
BINARY(n) | BYTEA |
BIT | BOOLEAN |
|
|
DATE | DATE |
DATETIME | TIMESTAMP [TANPA ZONA WAKTU] |
|
|
DOUBLE | DOUBLE PRECISION |
FLOAT | REAL |
|
|
MEDIUMINT | INTEGER |
NUMERIC(p,s) | NUMERIC(p,s) |
SMALLINT | SMALLINT |
| BYTEA |
TINYINT | SMALLINT |
| TEXT |
TIME | TIME [TANPA ZONA WAKTU] |
TIMESTAMP | TIMESTAMP [DENGAN ZONA WAKTU] |
| BYTEA |
VARCHAR(n) | VARCHAR(n) |
VARCHAR(max) | TEXT |
Pemetaan tipe data antara Data Lake Formation (DLF) dan Hologres
Tipe data yang didukung oleh DLF | Tipe data yang didukung oleh Hologres |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
BOOLEAN | BOOLEAN |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DATE | DATE |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
STRING | TEXT |
BINARY | BYTEA |
DECIMAL(m,n) | NUMERIC(m,n) |
VARCHAR(n) | CHARACTER VARYING(n) |
CHAR(n) | CHARACTOR(n) |
ARRAY<type> | ARRAY<hologres_data_type> Jenis data berikut didukung:
|
Pemetaan tipe data antara Hive dan Hologres
Tipe data yang didukung oleh Hive | Tipe data yang didukung oleh Hologres |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL | NUMERIC |
NUMERIC | NUMERIC |
DATE | DATE |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
STRING | TEXT |
VARCHAR | VARCHAR |
CHAR | CHAR |
BINARY | BYTEA |
BOOL | BOOLEAN |
ARRAY<type> | ARRAY<hologres_data_type> Tipe data berikut didukung:
|
Pemetaan tipe data antara Apache Hudi dan Hologres
Tabel berikut menjelaskan pemetaan tipe data antara Apache Hudi dan Hologres V1.3 dan versi yang lebih baru.
Tipe data yang didukung oleh Apache Hudi | Tipe data yang didukung oleh Hologres |
IntegerType | INT |
LongType | BIGINT |
FloatType | REAL |
DoubleType | DOUBLE PRECISION |
DecimalType | NUMERIC |
TimestampType | TIMESTAMP WITHOUT TIME ZONE |
DateType | DATE |
YearMonthIntervalType | Tidak didukung |
DayTimeIntervalType | Tidak didukung |
StringType | TEXT |
VarcharType | Tidak didukung |
CharType | Tidak didukung |
BooleanType | BOOL |
BinaryType | BYTEA |
ByteType | Tidak didukung |
ShortType | Tidak didukung |
ArrayType(elementType, containsNull) | ARRAY<hologres_data_type> Tipe data berikut didukung:
|
Pemetaan tipe data antara Delta Lake dan Hologres
Tabel berikut menjelaskan pemetaan tipe data antara Delta Lake dan Hologres V1.3 dan yang lebih baru.
Tipe data yang didukung oleh Delta Lake | Tipe data yang didukung oleh Hologres |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(p,s) | NUMERIC |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
DATE | DATE |
INTERVAL intervalQualifier | Tidak didukung |
STRING | TEXT |
BOOLEAN | BOOLEAN |
BINARY | BYTEA |
ARRAY<elementType> | ARRAY<hologres_data_type> Tipe data berikut didukung:
|
Pemetaan tipe data antara Paimon dan Hologres
Tipe data yang didukung oleh Paimon | Tipe data yang didukung oleh Hologres |
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(p,s) | DECIMAL |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
DATE | DATE |
CHAR | CHAR |
VARCHAR | VARCHAR |
BINARY | BYTEA |
ARRAY | ARRAY<hologres_data_type> Jenis data berikut didukung:
|
Pemetaan tipe data antara Iceberg dan Hologres
Tipe data yang didukung oleh Iceberg | Tipe data yang didukung oleh Hologres |
BOOLEAN | BOOLEAN |
INT | INTEGER |
LONG | BIGINT |
FLOAT | REAL |
DOUBLE | DOUBLE PRECISION |
DECIMAL(P,S) | NUMERIC(P,S) |
DATE | DATE |
TIME | TEXT. Spark tidak mendukung tipe data TIME. Jika Anda menulis data tipe TIME dari Flink ke DLF, tipe data tersebut akan dikonversi dari TIME menjadi STRING. |
TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
TIMESTAMPTZ | Tidak didukung. |
STRING | TEXT |
UUID | Tidak didukung untuk Flink dan Spark. |
FIXED(L) | BYTEA |
BINARY | BYTEA |
LIST | ARRAY<hologres_data_type> Tipe data berikut didukung:
|
STRUCT | Tidak didukung. |
MAP | Tidak didukung. |