Langsung ke konten utama

Menggunakan UUID di PHP

 

Menggunakan UUID di PHP

Menggunakan UUID (Universally Unique Identifier) di PHP

PHPTutorial - 18 Jan 2017

UUID (Universally Unique Identifier) ialah kumpulan 36 karakter (string) yang dibuat secara acak (random) dan unik dengan teknik khusus. UUID terdiri dari 32 karakter alphanumerik dan 4 karakter tanda hubung (strip). Dikarenakan karakter UUID yang unik, sangat kecil kemungkinan sebuah karakter UUID akan sama bahkan jika di-generate dalam tempo 1 detik sekalipun. UUID umumnya digunakan sebagai Primary Key.

Mengapa Menggunakan UUID ?

Timbul pertanyaan, mengapa seorang programmer harus menggunakan UUID ? Apa manfaat dengan menggunakan UUID ? Setidaknya ada beberapa alasan Anda untuk menggunakan UUID.

#1 Mengamankan Data Anda

Umumnya, programmer sering menggunakan Auto-Increment Integer sebagai Primary Key dalam tabel-tabel database-nya. Sehingga ketika data diakses akan menggunakan URL seperti berikut :

http://aplikasiku.com/profile/99
http://aplikasiku.com/profile?id=99

Dengan URL seperti diatas, pengguna aplikasi dengan sangat mudah dapat mengetahui berapa ID profile yang dimiliki-nya. Bahkan bila pengguna iseng ingin mengetahui data profile orang lain, user cukup mengganti ID profile pada URL dengan sembarang angka misal 1 atau 200 dan seterusnya. Tentu hal ini sangat membahayakan, dikarenakan aplikasi Anda nantinya sangat berpotensi untuk di retas dan dilakukan pencurian data.

#2 Menghindari Konflik Primary Key

Anggap saja saat ini Anda sedang mengembangkan sebuah aplikasi di satu perusahaan dan digunakan di beberapa cabang. Setiap cabang rata-rata memiliki jumlah data berkisar 2.000.000 record dan memiliki ID transaksi yang dimulai dari 1 s/d 2.000.000. Begitu pula pada cabang lainnya memiliki ID transaksi yang sama, dimulai dari 1 s/d 2.000.000.

Ternyata beberapa tahun kemudian perusahaan tersebut meminta data disetiap cabang dapat digabungkan terpusat agar lebih mudah untuk dikelola dan diakses. Lantas bagaimana Anda akan menggabungkan data dari semua cabang ? Apakah Anda akan meng-import data setiap cabang begitu saja ?
Tentu tidak bisa, dikarenakan akan terjadi konflik disebabkan setiap cabang memiliki ID yang sama.

Untuk mengatasi masalah diatas, maka sangat disarankan agar Anda menggunakan UUID sebagai Primary Key pada tabel aplikasi yang Anda bangun.

Bila Anda belum mengenal composer, sebelum melanjutkan tutorial ini disarankan untuk membaca tutorial menggunakan composer.

Menggunakan UUID di PHP

Seperti dijelaskan sebelumnya, UUID memiliki 36 karakter (string) dan unik. Contoh UUID :

29bb076b-edb0-4774-9c9b-97a4ca04e9ea
2a57f200-be05-4581-b822-e17152046066

Untuk menggunakan UUID di PHP, kita akan menggunakan library Ramsey. Tambahkan library ini di composer.json dengan perintah :

composer require ramsey/uuid

Untuk menggunakannya gunakan perintah seperti contoh berikut :

<?php
require 'vendor/autoload.php';
 
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
 
try {
 
    // Generate a version 1 (time-based) UUID object
    $uuid1 = Uuid::uuid1();
    echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd
 
    // Generate a version 3 (name-based and hashed with MD5) UUID object
    $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269
 
    // Generate a version 4 (random) UUID object
    $uuid4 = Uuid::uuid4();
    echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a
 
    // Generate a version 5 (name-based and hashed with SHA1) UUID object
    $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62
 
} catch (UnsatisfiedDependencyException $e) {
 
    // Some dependency was not met. Either the method cannot be called on a
    // 32-bit system, or it can, but it relies on Moontoast\Math to be present.
    echo 'Caught exception: ' . $e->getMessage() . "\n";
 
}

UUID memiliki 4 versi yang dapat Anda gunakan sesuai kebutuhan, yaitu :

  • Versi 1 : UUID yang dihasilkan berdasarkan alamat MAC kartu jaringan dan timer.
  • Versi 3 : UUID yang dihasilkan dari hash MD5 namespace
  • Versi 4 : UUID yang dihasilkan dari angka random (pseudo-random)
  • Versi 5 : UUID yang dihasilkan dari hash SHA-1 namespace

Jika Anda membutuhkan ID yang unik, disarankan menggunakan UUID versi 1 atau 4. Namun jika Anda menginginkan UUID yang sama, maka gunakan versi 3 atau 5. Yang umum digunakan ialah UUID versi 4.

Source : https://www.eplusgo.com/menggunakan-uuid-di-php/

Komentar

Postingan populer dari blog ini

Belajar Laravel Roles & Permission

 Kali ini kita akan belajar login roles permission menggunakan pake spatie Instal Laravel Roles & Permission Karena kita menggunakan package, maka kita harus menginstal terlebih dulu. Ohya, saya asumsikan kawan-kawan sudah punya proyek  Laravel  yang masih baru & sudah melakukan konfigurasi untuk  database  dan sudah menjalankan  auth scaffolding Laravel . composer require spatie/laravel-permission Setelah terinstal, langkah berikutnya adalah kita menerbitkan  file   migrations  dari  package  ini. php artisan vendor:publish --provider= "Spatie\Permission\PermissionServiceProvider" Berikutnya, jalankan  migration nya. php artisan migrate Setelah dijalankan maka akan ada beberapa tabel yang dibuat oleh migration dari  package  ini. Penggunaan Pertama setelah melakukan proses instalasi. Untuk menggunakan package Laravel Permission ini kita tambahkan dulu  trait   HasRoles  ke model  User . us...

Rekomendari ekstensi vs code

  GitLens Pada GitLens kita bisa preview commitan sebelum di push, dan bisa melihat perubahan pada baris kode ( dibikin oleh siapa, diubah oleh siapa ), Serta masih banyak fitur lain dari GitLens ini. Visual Studio IntelliCode Sebenarnya auto suggest bawaan dari VS Code itu sendiri sudah lumayan bagus, saya menggunakan ini agar auto suggest bisa lebih detail suggestion yang diberikan, bisa diibaratkan Improve dalam hal suggestion ( Intellisense nya ). Sublime Text Keymap and Settings Importer Bagi teman-teman yang migrasi dari Sublime Text 3 ke Visual Studio Code dan merasa aneh dengan keymap di VS Code, bisa nih dicoba in keymap sublime text di VS Code. Secara keseluruhan keymap nya sama persis dengan keymap sublime text. File Utils Bagi teman-teman yang sering menggunakan VS Code tapi terbatas pada klik kanan di tampilan side folder project nya, yang hanya bisa copy dan paste. Nah pada ekstensi ini ada beberapa penambahan seperti Duplicate, Move, dan masih banyak lagi. Prettier E...

Model, View & Controller (MVC)

Model View Controller (MVC) Apa itu MVC?  MVC atau  Model View Controller  adalah sebuah pola desain arsitektur dalam sistem pengembangan website yang terdiri dari tiga bagian, yaitu:  Model,  bagian yang mengelola dan berhubungan langsung dengan database; View , bagian yang akan menyajikan tampilan informasi kepada pengguna; Controller , bagian yang menghubungkan model dan view dalam setiap proses request dari user.  Alur Kerja MVC Oke, setelah mempelajari apa itu MVC, sekarang saatnya memahami bagaimana alur kerja dari MVC. Mari lihat bagan berikut ini: Bagian  view  akan merequest informasi untuk bisa ditampilkan kepada pengguna. Request tersebut kemudian diambil oleh  controller  dan diserahkan bagian  model  untuk diproses;  Model akan mengolah dan mencari data informasi tersebut di dalam database; Model memberikan kembali pada controller untuk ditampilkan hasilnya di view;  Controller mengambil hasil olahan yang...