Ringkasan: tutorial ini memperkenalkan Anda ke MySQL UUID, menunjukkan Anda untuk menggunakannya sebagai Primary Key (PK) untuk tabel, dan membahas pro dan kontra menggunakannya sebagai kunci utama.
Pengantar MySQL UUID
UUID adalah singkatan dari Universally Unique IDentifier. UUID didefinisikan berdasarkan RFC 4122, “Ruang Nama URN Pengenal Unik Universal (UUID)).
UUID dirancang sebagai angka yang unik secara global dalam ruang dan waktu. Dua nilai UUID diharapkan berbeda, bahkan mereka dihasilkan pada dua server independen.
Di MySQL, nilai UUID adalah angka 128-bit yang direpresentasikan sebagai string utf8 dari lima angka heksadesimal dalam format berikut:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
Untuk menghasilkan nilai UUID, Anda menggunakan fungsi UUID () sebagai berikut:
UUID() Fungsi UUID () mengembalikan nilai UUID sesuai dengan UUID versi 1 yang dijelaskan di RFC 4122.
Misalnya, pernyataan berikut menggunakan fungsi UUID () untuk menghasilkan nilai UUID:
mysql> SELECT UUID();
+--------------------------------------+
| uuid() |
+--------------------------------------+
| 965234ad-6a92-11e7-8846-b05adad3f0cr |
+--------------------------------------+
MySQL UUID vs. Auto-Increment INT sebagai Primary Key
Yang Pro
Menggunakan UUID untuk kunci utama membawa keuntungan berikut:
- Nilai UUID unik di seluruh tabel, database, dan bahkan server yang memungkinkan Anda menggabungkan baris dari database yang berbeda atau mendistribusikan database di seluruh server.
- Nilai UUID tidak mengungkapkan informasi tentang data Anda sehingga lebih aman digunakan di URL. Misalnya, jika pelanggan dengan id 10 mengakses akunnya melalui http://www.example.com/customers/10/ URL, mudah untuk menebak bahwa ada pelanggan 11, 12, dll., Dan ini bisa jadi target serangan.
- Nilai UUID dapat dibuat di mana saja yang menghindari perjalanan bolak-balik ke server database. Ini juga menyederhanakan logika dalam aplikasi. Misalnya, untuk memasukkan data ke dalam tabel induk dan tabel anak, Anda harus memasukkan ke dalam tabel induk terlebih dahulu, mendapatkan id yang dihasilkan, lalu memasukkan data ke dalam tabel anak. Dengan menggunakan UUID, Anda dapat menghasilkan nilai Primary Key dari tabel induk di depan dan menyisipkan baris ke dalam tabel induk dan anak pada saat yang sama dalam sebuah transaksi.
Kontra
Selain kelebihan, nilai UUID juga memiliki beberapa kekurangan:
- Menyimpan nilai UUID (16-byte) membutuhkan lebih banyak penyimpanan daripada integer (4-byte) atau bahkan integer besar (8-byte).
- Debugging sepertinya lebih sulit, bayangkan ekspresi WHERE id = 'df3b7cb7-6a95-11e7-8846-b05adad3f0ae' daripada WHERE id = 10
- Menggunakan nilai UUID dapat menyebabkan masalah kinerja karena ukurannya dan tidak diurutkan.
Solusi UUID MySQL
Di MySQL, Anda dapat menyimpan nilai UUID dalam format kompak (BINARY) dan menampilkannya dalam format yang dapat mudah dipahami (VARCHAR) dengan bantuan fungsi berikut:
UUID_TO_BINBIN_TO_UUIDIS_UUID
Catatan bahwa fungsi UUID_TO_BIN (), BIN_TO_UUID (), dan IS_UUID () hanya tersedia di MySQL 8.0 atau yang lebih baru.
Fungsi UUID_TO_BIN () mengubah UUID dari format yang dapat dibaca manusia (VARCHAR) menjadi format format kompak (BINARY) untuk penyimpanan dan fungsi BIN_TO_UUID () mengubah UUID dari format kompak (BINARY) ke format yang dapat dibaca manusia (VARCHAR) untuk ditampilkan.
Fungsi IS_UUID () mengembalikan 1 jika argumennya adalah UUID format string yang valid. Jika argumen bukan format string yang valid UUID, fungsi IS_UUID mengembalikan 0. Jika argumennya adalah NULL, fungsi IS_UUID () mengembalikan NULL.
Berikut ini adalah UUID format string yang valid di MySQL:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
aaaaaaaabbbbccccddddeeeeeeeeeeee
{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}
Contoh MySQL UUID
Mari kita lihat contoh penggunaan UUID sebagai kunci utama.
Pernyataan berikut membuat tabel baru bernama pelanggan:
CREATE TABLE customers (
id BINARY(16) PRIMARY KEY,
name VARCHAR(255)
); Untuk memasukkan nilai UUID ke kolom id, Anda menggunakan fungsi UUID () dan UUID_TO_BIN () sebagai berikut:
INSERT INTO customers(id, name)
VALUES(UUID_TO_BIN(UUID()),'John Doe'),
(UUID_TO_BIN(UUID()),'Will Smith'),
(UUID_TO_BIN(UUID()),'Mary Jane');Untuk membuat kueri data dari kolom UUID, Anda menggunakan fungsi BIN_TO_UUID () untuk mengonversi format biner ke format yang dapat dibaca manusia:
SELECT
BIN_TO_UUID(id) id,
name
FROM
customers; Dalam tutorial ini, Anda telah mempelajari tentang MySQL UUID dan cara menggunakannya untuk kolom Primary Key.

No comments:
Post a Comment