Selama ini kita mungkin hanya tahu autoincreament saja sebagai primary key karena sangat mudah di buat tinggal di setting saja kolom id sebagai autoincrement dan kita akan mendapatkan primary key unik yang berurutan.

Lalu primary key tersebut biasanya kita oanggil dengan cara seperti in :

http://myapplication.com/user?id=105
http://myapplication.com/user/105

sebenarnya tidak ada yang salah dengan hal tersebut , dan sudah berapa juta programmer di seluruh dunia yang menggunakanya sebagai primary ley dari tablenya.

Tetapi kalu kita fikirkan kembli primary key autoincrement ternyata terdapat kekuranganya, nah saya akan menunjukanya, baiklah coba kalian perhatikan ini :

http://myapplication.com/user?id=105

Angka 105 adalah angka yang di hasilkan autoincrement secara urut dengan cara otomatis, nah angka tersebut sangat mudah tertebak karena autoincrement akan menghasilkan angka secara urut dan cukup berbahaya jika user asal menmbak id nya melalui address bar.

Lalu kelemahan selanjutnya adalah jika kita memilki 2 server tetapi memiliki database yang sama, dan suatu waktu data-data tersebut ingin di gabungkan maka akan terjadi conflict karena primarykey nya bentrok.

Nah bagaimana cara menanggulangi hal tersebut ?

UUID LAH JAWABANYA

Apa itu UUID ?  UUID adalah kumpulan 32 karakter (String) yang dibuat secara acak (random) dengan teknik khusus yang dijamin unik untuk setiap data. Dalam waktu 1 detik pun, jika di-_generate_ 1000 UUID, kecil kemungkinan ada UUID yang sama. Sehingga lebih cocok untuk digunakan sebagai Primary Key.

Contoh UUID (tanpa strip):

25769c6cd34d4bfeba98e0ee856f3e7a
00b245066523042a3bf4698f30617f0e
0179ec949e72ed4df4e0182965a71073

Lalu bagaimana cara instalasinya dengan php ? kita harus menggunakan composer untuk menginstalnya. dengan perintah berikut ini :

composer require ramsey/uuid

Cara mnggunkanya adalah sebagai berikut ini :

require 'vendor/autoload.php';
 
use Ramsey\Uuid\Uuid;
 
// Generate a version 1 (time-based) UUID object
$uuid1 = Uuid::uuid1();
echo $uuid1->toString() . "\n"; // 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"; // 11a38b9a-b3da-360f-9353-a5a725514269
 
// Generate a version 4 (random) UUID object
$uuid4 = Uuid::uuid4();
echo $uuid4->toString() . "\n"; // 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"; // c4a760a8-dbcf-5254-a0d9-6a4474bd1b62

Tipe data jika menggunakan UUID tidak bisa menggunakan integer, melainkan harus berupa karakter seperti varchar atau text, dengan lengt value adalah 32 karakter.

JIka kita menggunakan UUID 2 masalah utama yang telah kita jabarkan di atas sebelumnya akan teratasi dengan baik.

Oke sampai di sini dulu , semoga bermanfaat dan sampai bertamu pada artikel selanjutnya.