ID Unik Berskala Kosmik
(jasonfantl.com)- Membahas cara memberikan ID yang benar-benar tidak duplikat untuk perangkat atau objek, dengan membandingkan pendekatan acak (random) dan deterministik
- Pendekatan acak dapat membuat probabilitas tabrakan praktis menjadi 0 dengan memakai jumlah bit yang cukup besar, dengan berbagai tingkat mulai dari UUID (122 bit) hingga batas komputasi seluruh alam semesta (798 bit)
- Untuk pendekatan deterministik, artikel ini mengusulkan beberapa skema seperti penghitung terpusat, hierarki delegatif (Dewey), pohon biner (Binary), dan token (Token), lalu menganalisis karakteristik pertumbuhan panjang ID tiap metode melalui simulasi
- Juga disajikan pembuktian matematis bahwa semua skema deterministik tidak dapat menghindari pertumbuhan linear dalam kasus terburuk
- Kesimpulannya, metode yang praktis dan efisien bahkan pada skala kosmik adalah pembuatan ID acak, sedangkan pendekatan deterministik terbukti tidak efisien
Kebutuhan akan ID unik dan perumusan masalah
- Identifikasi objek adalah dasar semua sistem seperti manufaktur, logistik, komunikasi, dan keamanan, dan pada skala besar pemberian ID tanpa duplikasi menjadi tantangan utama
- Bahkan jika umat manusia meluas hingga skala galaksi, tetap dibutuhkan sistem ID tanpa duplikasi
- Masalahnya dirumuskan sebagai: “bagaimana membuat ID yang sama sekali tidak pernah bertabrakan?”
Pendekatan acak (Random)
- Metode paling sederhana adalah memilih angka secara acak
- Dapat dibuat di mana saja tanpa pengelolaan pusat atau sinkronisasi
- Probabilitas tabrakan dapat dikendalikan dengan menambah jumlah bit, hingga bisa diatur mendekati 0 secara praktis
- UUID (122 bit) diperkirakan mulai mengalami tabrakan saat menghasilkan sekitar $2^{61}$ ID
- Jika mempertimbangkan batas komputasi seluruh alam semesta (10¹²⁰ kali), dibutuhkan 798 bit
- Berdasarkan unit atom (10⁸⁰ buah) diperlukan 532 bit, sementara 1g nanobot (10⁵⁶ buah) memerlukan 372 bit
- Menjamin keacakan yang sesungguhnya sangat penting, dan disarankan menggunakan CSPRNG atau sumber bilangan acak kuantum
- Seed umum atau ID konstan (misalnya all-zero) perlu dilarang
Pendekatan deterministik (Deterministic)
- Metode penghitung terpusat menerbitkan ID secara berurutan dari satu server
- Karena ada masalah aksesibilitas, diusulkan struktur delegasi antar satelit/perangkat (Dewey)
- Skema Dewey: ID hierarkis berbentuk
A.B.C, direpresentasikan dengan pengodean Elias omega- Bergantung pada struktur pohon, pertumbuhannya bisa logaritmik atau linear
- Skema Binary membagi ruang ID ke dalam pohon biner, dan dalam beberapa kasus lebih efisien daripada Dewey
- 2-Adic Valuation menjamin keunikan secara matematis, sebagai bentuk variasi dari Binary
- Skema Token menunjukkan pertumbuhan logaritmik pada struktur berantai, tetapi berubah menjadi linear saat lebar struktur membesar
Pembuktian bahwa pertumbuhan linear tidak dapat dihindari
- Dengan asumsi bahwa semua jalur pemberian ID harus unik, artikel ini menghitung jumlah jalur yang mungkin
- Saat jumlah node adalah n, jumlah ID yang dibutuhkan meningkat menjadi $2^{n-1}$
- Karena itu, panjang ID minimal adalah O(n), artinya pertumbuhan linear dalam kasus terburuk tak terhindarkan
- Tidak ada algoritme yang dapat mempertahankan pertumbuhan logaritmik untuk semua kasus
Simulasi model ekspansi
- Eksperimen dilakukan memakai berbagai model pertumbuhan seperti Random Recursive Tree, Preferential Attachment, dan Fitness Model
- Pada skala kecil (2.048 node), Binary unggul, sementara Dewey dan Token berbeda tergantung kondisi
- Pada model Preferential, Dewey paling efisien
- Pada model Fitness, Dewey dan Binary menunjukkan performa serupa
- Dalam eksperimen skala satu juta node pun, Dewey dan Token tetap mempertahankan pertumbuhan logaritmik
- Panjang ID dapat didekati dengan bentuk ≈ 6.55 × ln(n)
Model ekspansi skala galaksi dan alam semesta
- Penyebaran antarplanet dimodelkan sebagai gelombang (front) dengan kecepatan tetap
- Tiap planet menghasilkan sekitar 10⁹ ID sebelum menyebar ke planet berikutnya
- Dengan radius galaksi sekitar 2.121 planet, panjang ID saat ekspansi penuh menjadi sekitar 288.048 bit
- Jika ekspansi antargalaksi (sekitar 7.816 tahap) juga diperhitungkan, diperlukan sekitar 2,2 miliar bit (281MB)
- Pendekatan deterministik tidak efisien, dan pendekatan acak (di bawah 798 bit) jauh lebih efisien
Keamanan dan pertimbangan tambahan
- Untuk mencegah pemalsuan ID, dapat diterapkan sistem verifikasi berbasis tanda tangan
- Pada ID acak, kunci publik dapat digunakan sebagai ID; pada skema deterministik, induk menandatangani kunci anak
- Diperlukan pula kode koreksi kesalahan dan manajemen versi
- Untuk objek yang tidak bisa menyimpan ID (misalnya planet), pengelolaan dilakukan dengan memetakan beberapa ID
- Artikel ini juga membahas apakah ID harus tetap berlanjut saat komponen diganti, seperti pada paradoks Kapal Theseus
- Konsep terkait: Decentralized Identifiers (DID), Ancestry Labeling Schemes
Kesimpulan
- Skema deterministik menarik secara teoretis, tetapi rendah nilai praktisnya
- Pembuatan ID acak tetap realistis dan efisien bahkan pada skala kosmik
- Menjadikan probabilitas tabrakan ID “praktis 0” adalah pilihan yang paling aman dan paling praktis
4 komentar
Pastikan membaca artikel aslinya. Penjelasannya sangat menarik karena memvisualisasikannya dengan rumus dan simulasi.
Kalau dibuat berbasis waktu, itu harus dianggap sebagai sesuatu yang linear, ya..?
Sepertinya saya perlu melihat naskah aslinya. Ini cerita yang menarik.
Kalau sampai bertabrakan, berarti sialnya sudah seukuran kosmik... (?)
Komentar Hacker News
Analisis ini sama sekali tidak sepenuhnya adil. Saat merancang UUID, lokalitas (locality), yaitu kecepatan cahaya, diperhitungkan, tetapi dalam perhitungan probabilitas tabrakan hal itu diabaikan. Secara nyata, agar tabrakan menjadi bermakna, dua UUID harus berada dalam kontak kausal (causal contact) setelah dibuat. Karena itu, menerapkan paradoks ulang tahun (birthday paradox) secara sederhana adalah pendekatan yang keliru. Jika lokalitas diperhitungkan, ukuran UUID yang dibutuhkan tampaknya akan jauh lebih kecil daripada 800 bit yang disebut di artikel. Saya belum menghitung secara matematis, tetapi rasanya tidak akan lebih dari 256 bit. Saya sangat suka HN karena ini salah satu dari sedikit tempat di mana diskusi teknis yang sangat teliti seperti ini benar-benar berlangsung serius
Saat menghitung jumlah objek yang dapat diberi alamat, perlu dipertimbangkan bahwa alamat tiap objek setidaknya harus disimpan sekali di suatu tempat. Jika untuk menyimpan satu bit dibutuhkan partikel Npb, maka semakin banyak bit alamat, semakin sedikit jumlah objek yang bisa diberi alamat. Karena itu, jumlah maksimum objek yang dapat dialamati bisa dicari dengan relasi berbentuk Nthg = Np / (Npb * f(Ntng))
Saya pernah harus berargumen bahwa ID acak 256 bit sudah cukup sehingga tidak perlu pemeriksaan tabrakan. Rekan-rekan saya ingin menambahkan logika verifikasi tabrakan yang rumit, tetapi saya menjelaskan bahwa 2^256 setara dengan skala jumlah atom di alam semesta teramati. Saya meyakinkan mereka bahwa sebelum tabrakan terjadi, kemungkinan pusat data meledak jutaan kali justru lebih tinggi. Pada akhirnya kami sampai pada kesimpulan bahwa 128 bit saja juga sudah cukup
Ada perhitungan bahwa jika setiap atom diberi ID, dibutuhkan sekitar 532 bit. Tetapi dalam kenyataannya, kita mungkin juga ingin memberi ID pada kelompok atom, misalnya mikrocip, mobil, dan sebagainya, sehingga ukurannya bisa lebih besar
Ada ide untuk merepresentasikan ID dengan setumpuk kartu. Jika masing-masing dari 52 kartu direpresentasikan sebagai karakter Unicode, hasilnya mudah dibaca, sulit diedit manual, dan bagus untuk pengenalan pola. Jika set kartu sungguhan dikocok lalu dibaca kamera, itu juga bisa dipakai sebagai seed acak. Ada ide serupa di DiceKeys
Visualisasi dan wawasannya keren. Saya merancang basis data dengan mengutamakan pengenal acak sekecil mungkin. Saya menganggap pengenal universal semacam ini pada dasarnya adalah satu-satunya ‘golden disk’. Dalam bidang pengelolaan data ilmiah maupun ilmu perpustakaan, konsep seperti ini diremehkan. Banyak masalah organisasi skala besar sebetulnya bisa diselesaikan dengan desain pengenal yang lebih baik.
Tulisan terkait: Identifiers Deep Dive, Trible Structure
Saya sedang membaca sekitar halaman 281 dari The Galaxy, and the Ground Within karya Becky Chambers.
Contoh pesan dalam buku:
Saya sangat menyukai seri ini. Menarik bahwa dalam setting semesta multi-spesies itu digunakan sistem alamat jalur yang disepakati secara terpusat
Saya baru-baru ini mengetahui Snowflake ID. Ini digunakan di Twitter, Discord, Instagram, Mastodon, dan lain-lain. Metode ini mengurangi ukuran ID dengan kombinasi timestamp + acak, dan sayang sekali artikel itu tidak membahasnya.
Lihat wiki Snowflake ID dan video Tom Scott.
Jika sebagian bit timestamp Snowflake diganti dengan bit acak, tampaknya bisa menghasilkan 4 miliar ID per detik
Saya penasaran apakah ID bisa dibuat berdasarkan fenomena yang dapat diamati. Mungkin keunikannya bisa dijamin berkat karakteristik yang dibedakan oleh waktu dan jarak. Misalnya, pola cahaya bintang pada saat tertentu hanya bisa dilihat oleh satu orang. Ini mirip dengan pemanfaatan noise sebagai entropi seperti pada lava lamp. Jika sistem koordinat seluruh alam semesta bisa didefinisikan, rasanya kombinasi waktu lokal + x + y + z + salt dapat menghasilkan ID yang unik
Metode UUID acak jauh lebih unggul dari sisi umur pakai. Jumlah perangkat yang bisa aktif bersamaan itu terbatas, dan berbeda dengan UUID berbasis pohon, saat perangkat dibuang, ID-nya bisa digunakan kembali. Secara realistis, algoritma campuran yang menggabungkan root berbasis lokasi + bit acak turunan tampaknya paling praktis