Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apakah membuat unique primary id dengan angka increment pada database masih relevan untuk sekarang? #726

Open
MasIzzudin opened this issue Feb 7, 2025 · 1 comment

Comments

@MasIzzudin
Copy link

Halo Pak Eko, saya seorang mobile developer yang ingin belajar BE developer.
Saya pernah membuat sistem database lokal yang bisa terhubung langsung dengan database API.
Dari pengalaman itu ada yang membuat API dengan id untuk primary key data menggunakan UUID dan ada juga yang menggunakan INTEGER INCREMENT UNIQUE ID.

Jujur saya kalau melihat id dengan INTEGER itu pusing pak hahaha, soalnya dari beberapa field itu ada yang menggunakan angka yang sama, contoh saya get API produk dan dia mempunyai id 1, lalu di dalam data produk itu ada field array lagi yang berisikan unit dengan id yang juga 1. Yang saya ingin tanyakan dengan membuat id seperti itu apakah terlihat bagus untuk proses development? karena menurut saya itu sangat menyusahkan dan sangat tidak enak untuk dilihat.

Terima kasih dan semoga pertanyaan saya mudah untuk dipahami.

@nooballday
Copy link

saya bantu jawab.

ada beberapa point yang perlu dipahami ketika ingin mendevelop sebuah system. 3 dari sekian banyak yang saya prioritaskan adalah:

  1. system harus benar, data yang di record harus sesuai dengan yang diharapkan oleh system.
  2. keamanan data
  3. kecepatan dari system

nah dari 2 opsi menggunakan id atau auto increment id (int/bigint), kedua point tersebut semuanya bersinggungan dengan 3 point prioritas diatas.

1. system harus benar.

menggunakan id dan uuid semuanya bisa memberikan hasil yang benar dan unique, bedanya ketika menggunakan id itu hanya unique di environment tersebut saja (misal di instance database) jadi ketika ada merge dengan instance lain, otomatis akan ada kemungkinan bentrok dari sisi uniqueness dan juga perlu diketahui jika ada yang melakukan TRUNCATE maka incrementnya akan dimulai dari awal, dan apabila ada ada yang bergantung pada tersebut (melalui constraint foreign key) otomatis data akan salah.

UUID tidak ada masalah uniqueness meskipun cross intances, cross environments atau cross apapun, karena UUID unique across galaxy haha.

2. kemanan data

kalau anda pernah melihat website dengan url https://www.tokoonline.com/purchases/223

dari URL sudah keliatan kalau purchase id menggunakan incremental id, kalau server tidak memiliki pengecekan data ownership kita bisa saja mengetikan /purchase/224 dan mengakses data yang bukan milik kita, dan itu bisa fatal dari sisi security.

uuid tidak memiliki masalah tersebut.

3. kecepatan dari system

kalau incremental ID banyak sekali kekurangannya, lalu kemudian kenapa incremental ID masih dipakai? ada beberapa hal, salah satunya adalah kecepatan, otomatis karena datanya increment pencarian akan lebih cepat.

namun tentu saja harga yang harus dibayar oleh UUID yaitu kecepatan, dan space yang dipakai lebih besar. nah skg udah ada yang namanya time based UUID atau UUID v7 untuk mengakali uuid yang ga bisa di sort.

https://buildkite.com/resources/blog/goodbye-integers-hello-uuids/


untuk point bagus di proses development harus mengambil banyak parameter/factor, jadi tidak ada 1 atau 2 jawaban yang bisa menjawab semua kebutuhan dari bagusnya proses development saran saya buatlah prioritas apa yang mau dicapai ketika membuat sebuah system.

dari 3 point yang saya jelaskan diatas, anda bebas memilih menggunakan yang mana sesuai kebutuhan system, namun kalau saya pribadi tidak enak dilihat adalah nomor 189128373 di prioritas list ketika mengembangkan system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants