Traffine I/O

Bahasa Indonesia

2023-03-10

Pemetaan Tipe Data antara MySQL dan PostgreSQL

Pendahuluan

Sebagai sistem database, baik MySQL maupun PostgreSQL menawarkan berbagai tipe data, masing-masing dengan properti dan batasan yang unik.

Artikel ini membandingkan tipe data antara MySQL dan PostgreSQL. Berikut adalah tabel perbandingannya.

MySQL (Kapasitas) PostgreSQL (Kapasitas)
TINYINT (1B) -
SMALLINT (2B) SMALLINT (2B)
INT (4B) INT (4B)
BIGINT (8B) BIGINT (8B)
FLOAT (4B) NUMERIC (4B)
DATE DATE
DATETIME -
TIME TIME
TIMESTAMP TIMESTAMP
CHAR (255B) CHAR (1GB)
VARCHAR (65KB) VARCHAR (1GB)
TINYTEXT (255B) -
TEXT (65KB) TEXT (1GB)
MEDIUMTEXT (16MB) -
LONGTEXT (4GB) -

Pemetaan Tipe Data Numerik

Berikut ini adalah pemetaan tipe data numerik antara MySQL dan PostgreSQL.

TINYINT di MySQL

Di MySQL, TINYINT adalah tipe data integer kecil. Ukurannya satu byte, yang memungkinkan rentang nilai dari -128 hingga 127 untuk nilai bertanda atau 0 hingga 255 untuk nilai tak bertanda. PostgreSQL tidak memiliki kesetaraan langsung untuk TINYINT. Namun, dalam banyak kasus, TINYINT dapat didekati menggunakan tipe SMALLINT atau tipe BOOLEAN tergantung pada konteksnya.

SMALLINT di MySQL dan PostgreSQL

Baik MySQL maupun PostgreSQL memiliki tipe data SMALLINT. Di MySQL, SMALLINT adalah integer dua byte. Untuk nilai tak bertanda, ia dapat menyimpan angka dari 0 hingga 65535. Untuk nilai bertanda (default), rentangnya adalah -32768 hingga 32767. Tipe SMALLINT di PostgreSQL sepenuhnya sejajar dengan MySQL; menggunakan dua byte penyimpanan dan mendukung rentang nilai yang sama.

INT di MySQL dan PostgreSQL

INT adalah tipe data integer yang umum digunakan baik di MySQL maupun PostgreSQL. Ia menggunakan empat byte penyimpanan. Rentang nilai untuk INT di MySQL adalah -2147483648 hingga 2147483647 untuk nilai bertanda atau 0 hingga 4294967295 untuk nilai tak bertanda. PostgreSQL tidak memiliki tipe data integer tak bertanda, namun tipe INT-nya sejajar dengan rentang tipe INT bertanda di MySQL, sehingga memberikan kompatibilitas untuk sebagian besar kasus penggunaan umum.

BIGINT di MySQL dan PostgreSQL

BIGINT adalah tipe integer terbesar di MySQL dan PostgreSQL. Ia menggunakan delapan byte penyimpanan. Rentang untuk BIGINT bertanda di MySQL adalah -9223372036854775808 hingga 9223372036854775807. Untuk nilai BIGINT tak bertanda, rentangnya adalah 0 hingga 18446744073709551615. Seperti halnya dengan tipe INT, tipe BIGINT di PostgreSQL memiliki rentang yang sama dengan BIGINT bertanda di MySQL.

FLOAT di MySQL dan NUMERIC di PostgreSQL

FLOAT di MySQL adalah tipe data bilangan pecahan empat byte. Ia dapat menyimpan nilai desimal, dan rentang presisi tergantung pada nilai spesifiknya. Di sisi lain, tipe NUMERIC di PostgreSQL dapat secara presisi menyimpan angka dengan sejumlah digit yang besar. Ukurannya bervariasi tetapi dapat dengan nyaman menangani jenis data yang biasanya disimpan dalam tipe FLOAT di MySQL.

Pemetaan Tipe Data Tanggal dan Waktu

Representasi tanggal dan waktu merupakan aspek yang penting dalam database karena digunakan dalam berbagai aplikasi seperti pencatatan peristiwa, pelacakan aktivitas, dan analisis deret waktu. Berikut ini adalah bagaimana MySQL dan PostgreSQL menangani pemetaan tipe data ini.

DATE di MySQL dan PostgreSQL

Baik di MySQL maupun PostgreSQL, tipe data DATE digunakan untuk menyimpan tanggal. Ia menyimpan tahun, bulan, dan hari dengan format YYYY-MM-DD. Rentangnya di MySQL adalah '1000-01-01' hingga '9999-12-31', sedangkan di PostgreSQL, rentangnya adalah dari 4713 SM hingga 5874897 M, yang memberikan jangkauan yang lebih luas.

DATETIME di MySQL

DATETIME adalah tipe data di MySQL yang digunakan untuk menyimpan tanggal dan waktu. Rentangnya dari '1000-01-01 00:00:00' hingga '9999-12-31 23:59:59'. Tipe data ini sangat berguna untuk menyimpan titik waktu yang presisi. PostgreSQL tidak memiliki kesetaraan yang tepat untuk tipe data DATETIME; sebagai gantinya, PostgreSQL menggunakan TIMESTAMP tanpa zona waktu untuk tujuan yang serupa.

TIME di MySQL dan PostgreSQL

Tipe data TIME digunakan untuk merepresentasikan waktu dalam sehari baik di MySQL maupun PostgreSQL. Di MySQL, TIME dapat merepresentasikan durasi atau waktu dalam sehari dengan rentang '-838:59:59' hingga '838:59:59'. Di PostgreSQL, TIME dapat menyimpan waktu dalam sehari tanpa zona waktu, dan rentangnya adalah '00:00:00' hingga '24:00:00'.

TIMESTAMP di MySQL dan PostgreSQL

Baik MySQL maupun PostgreSQL mendukung tipe data TIMESTAMP. Di MySQL, TIMESTAMP digunakan untuk menyimpan pasangan tanggal dan waktu. Rentangnya dari '1970-01-01 00:00:01' UTC hingga '2038-01-19 03:14:07' UTC. Sebaliknya, tipe data TIMESTAMP di PostgreSQL dapat menampung tanggal dan waktu dari 4713 SM hingga 294276 M. PostgreSQL menawarkan fleksibilitas yang lebih besar, karena mendukung baik TIMESTAMP WITH TIME ZONE maupun TIMESTAMP WITHOUT TIME ZONE.

Pemetaan Tipe Data String

Menyimpan dan memanipulasi data string adalah tugas umum dalam database.

CHAR di MySQL dan PostgreSQL

Di MySQL, tipe data CHAR digunakan untuk menyimpan string karakter dengan panjang tetap. Panjangnya dapat ditentukan dalam byte dan rentangnya dari 0 hingga 255 byte. CHAR di PostgreSQL, juga dikenal sebagai CHARACTER, berperilaku serupa tetapi dengan satu perbedaan utama - panjang maksimum di PostgreSQL jauh lebih besar, yaitu 1GB.

VARCHAR di MySQL dan PostgreSQL

Tipe data VARCHAR di MySQL dan PostgreSQL digunakan untuk menyimpan string karakter dengan panjang variabel. VARCHAR di MySQL dapat menyimpan hingga 65.535 byte data, sementara VARCHAR (atau CHARACTER VARYING) di PostgreSQL dapat menyimpan hingga 1GB.

TINYTEXT di MySQL

TINYTEXT adalah tipe khusus MySQL yang digunakan untuk menyimpan string dengan panjang variabel. Ia dapat menyimpan hingga 255 byte data. Tidak ada kesetaraan langsung untuk tipe ini di PostgreSQL, tetapi kasus penggunaannya dapat dicakup oleh tipe TEXT.

TEXT di MySQL dan PostgreSQL

Di MySQL, tipe data TEXT digunakan untuk menyimpan string dengan panjang variabel dengan panjang maksimum 65.535 byte. PostgreSQL juga menawarkan tipe data TEXT, tetapi dapat menyimpan string hingga 1GB. Perbedaan kapasitas ini perlu dipertimbangkan saat melakukan migrasi database.

MEDIUMTEXT di MySQL

Tipe data MEDIUMTEXT di MySQL adalah tipe string dengan panjang variabel yang lainnya. Ia dapat menyimpan string dengan panjang maksimum 16.777.215 byte (atau 16MB). Seperti halnya TINYTEXT, tidak ada kesetaraan langsung untuk tipe MEDIUMTEXT di PostgreSQL, tetapi tipe TEXT umum dapat menangani data serupa karena kapasitasnya yang besar.

LONGTEXT di MySQL

LONGTEXT adalah tipe data MySQL yang digunakan untuk menyimpan sejumlah besar teks, dengan panjang maksimum 4.294.967.295 byte (atau 4GB). PostgreSQL tidak memiliki kesetaraan langsung untuk tipe LONGTEXT, tetapi tipe TEXT di PostgreSQL seharusnya cukup untuk sebagian besar aplikasi karena kapasitasnya yang besar, yaitu 1GB.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!