Generate UUID secara otomatis untuk fungsi INSERT di Database | PostgreSQL


Pengantar

Berkaca dari projek sebelumnya ketika baru pertama kali menggunakan tipe data UUID. Saya dan tim kesulitan untuk insert data UUID kedalam database, karena pada projek-projek sebelumnya selalu menggunakan autoincrement-nya Integer sebagai Primary Key. Berbeda dengan autoincrement, UUID tidak bisa autoincrement secara otomatis. Untuk mengatasinya, kami membuat program untuk generate UUID, baru nanti kami copy dan paste ke excel atau query yang diinginkan lalu jalankan query-nya.

Apa itu UUID?

UUID adalah singkatan dari Universally Unique Identifier. Pada intinya sih, UUID itu adalah kumpulan dari 32 karakter/string yang diacak. Sehingga kecil kemungkinan akan muncul data UUID yang sama di dalam satu data. Dengan polanya yang acak, UUID sangat menguntungkan Developer dari serangan Hacker. Kalau dengan autoincrement integer hacker bisa menduga PK dari suatu tabel, dan dengan menggunakan looping bisa langsung mengambil semua data dari suatu tabel. Berbeda dengan UUID, maka hacker akan kesulitan untuk menduga karena UUID dibuat secara acak.

Generate UUID

Sebelumnya, untuk generate UUID kami menggunakan library UUID Generator di Laravel. Misal, kita punya 400 data yang mau diinputkan ke databse. Jadi langkahnya, kita buat aplikasi di Laravel untuk generate 400 UUID, kemudian hasilnya kita copy dan paste di excel atau query. Setelah itu baru kita jalankan query-nya. Hal ini memakan waktu yang lama dan tidak efisien.

Setelah mencari referensi, ternyata di PostgreSQL sendiri sudah punya ekstensi untuk Generate UUID. Tinggal install dan gunakan. Nama ekstensinya adalah pgcrypto. Pgcrypto sendiri sebenarnya punya banyak fungsi yang lain, tapi untuk kali ini kita fokuskan untuk generate UUID saja.

Apa saja langkahnya?

  • Install ekstensi pgcrypto di PostgreSQL. Caranya jalankan:
CREATE EXTENSION "pgcrypto";
  • Setelah dijalankan, maka kita sudah dapat menggunakan fungsi gen_random_uuid() untuk generate UUID. Contoh querynya seperti dibawah:
INSERT INTO items VALUES(gen_random_uuid(), Ozi Priawadi, 28, ‘Blogger’, ‘Bengkulu’) ;

Kesimpulan 

Dengan menggunakan ekstensi pgcrypto, sangat memudahkan kita untuk insert data dengan tipe UUID. Tinggal install, lalu panggil dengan gen_random_uuid(). Selesai! Data UUID berhasil dimasukkan ke database.