Code Snippet – MySQL Tutorial : Membuat Random Unique Key Dengan Fungsi UUID()

code-snippet

Eaaaaa, hasrat untuk menulis lagi tinggi-tingginya di malam minggu ini. Gara-gara dari beberapa hari yang lalu saya penasaran dengan sistem website kaskus yang baru. Dimana untuk setiap thread dan reply post yang dikirimkan oleh usernya, memiliki sebuah random unique ID yang tidak seperti biasanya saya temui. Random unique ID seperti ini pernah saya temui di database NoSQL MongoDB yang secara otomatis akan membuatnya, sehingga kita tidak perlu repot-repot lagi untuk mendefinisikannya sendiri. Kalo dari tebakan saya sih, website kaskus yang baru masih memakai database MySQL ;). Iseng deh tadi saya browsing-browsing tentang random unique ID di MySQL dan akhirnya ketemu dengan yang namanya UUID(). Kedengarannya memang tidak asing dengan UUID, karena dulu saya sempat saat dapat mata kuliah kriptografi kenalan dengan yang namanya UUID.

Setelah hasil jalan-jalan tadi, saya mendapat pencerahan tentang format tipe data yang digunakan untuk tabelnya, yaitu menggunakan Varchar(36) dan Binary(24). Setelah merangkum dari beberapa artikel dan diskusi dari forum-forum luar, ternyata lebih efisien menggunakan tipe data Binary. Mulai dari point index data dan size data yang dihasilkan. Muncul asumsi di otak saya (ini pendapat pribadi lho yaw), ini mirip seperti saat saya dulu mencoba membuat aplikasi image processing dengan C#, dimana memang lebih cepat menggunakan data biner/hitam putih (dalam hal ini seperti tipe data binary) dibandingkan langsung menggunakan data RGB 255/warna (dalam hal ini tipe data varchar). Mungkin ada pendapat lain dari rekan-rekan tentang hal tersebut?? πŸ˜€

Nah, lanjut ke topik tentang membuatΒ Random Unique Key Dengan Fungsi UUID(), disini saya contohkan dengan membuat sebuah tabel dengan 2 field :

CREATE TABLE IF NOT EXISTS `tbl_post` (
  `id_post` binary(24) NOT NULL,
  `judul` varchar(50) NOT NULL,
  PRIMARY KEY (`id_post`)
) ENGINE=InnoDB

Kemudian kita coba jalankan sebuah query untuk insert data ke dalam tabel tersebut. Query di bawah ini saya jalankan sebanyak 5 kali :

INSERT INTO tbl_post(id_post) VALUES (REPLACE(UUID(),'-',''))

Dan akan menghasilkan data seperti gambar di bawah ini.

Sudah mirip dengan website kaskus kan πŸ˜‰ ..??? Untuk kekurangan dan kelebihannya saya belum begitu tau untuk ke depannya. Satu yang saya takutkan dari model random unique ID semacam ini, yaitu kemungkinan adanya duplikasi ID walau kemungkinannya kecil untuk hal-hal semacam itu. Mungkin ada rekan-rekan yang sudah pernah mencoba model random unique ID semacam ini untuk jumlah data yang sudah jutaan? Mari kita coba diskusikan disini πŸ™‚

7 comments

  1. ebuh Reply

    kuq id dosen ?? hehe, id post ga? sip, keren gannn,, tp tetep takut ntar bisa sama. he

  2. arie Reply

    Bli..bisa bantu coding CI untuk aplikasi perpustakaan gak, untuk TA nie, biayanya nanti di PM inbox ya bli…ditunggu.