Situs ini diterjemahkan otomatis ke berbagai bahasa dengan perangkat lunak yang dikembangkan oleh Kohei Koyanagi. Untuk akurasi, silakan lihat versi asli dalam bahasa Inggris .

Pendekatan Dua Pengenal Splync: UUID dan Angka Auto-Increment

Splync Menggunakan Dua Pengenal untuk ID Sensitif

Dalam database Splync, setiap pengguna dan proyek diidentifikasi oleh dua ID yang berbeda: UUID dan angka auto-increment. Angka auto-increment adalah yang paling familiar — ini hanya penghitung: 1, 2, 3, dan seterusnya. Splync menggunakan angka ini dalam database server untuk mengatur hampir semua tabel karena sederhana, cepat, dan efisien untuk join. Namun, kami tidak pernah mengekspos angka internal ini ke aplikasi. Misalnya, jika Anda adalah pengguna ke-42 yang mendaftar, ID internal Anda di database adalah 42. Namun aplikasi iOS Anda tidak akan pernah melihat "42." Sebaliknya, aplikasi menggunakan UUID untuk mewakili Anda. Kami menerapkan pendekatan yang sama untuk proyek — ID proyek mungkin "7" di dalam database, tetapi aplikasi selalu merujuknya dengan UUID yang panjang.

Apa Itu UUID

UUID adalah singkatan dari Universally Unique Identifier. Splync menggunakan UUID versi 4, varian 1, sesuai dengan RFC 4122 — salah satu standar yang paling banyak diadopsi. Ini adalah string yang dihasilkan secara acak, seperti 949ca11c-a6ed-48a3-b40a-fa9727494917. Sebuah UUID biasanya ditulis sebagai 32 karakter heksadesimal yang dibagi menjadi lima bagian dipisahkan oleh tanda hubung. Ini dirancang untuk menjadi unik secara global, artinya tidak akan bentrok bahkan di server atau database yang berbeda. Secara matematis, ada sekitar 16^32 = 2^128 kombinasi yang mungkin. Namun, karena enam bit dicadangkan untuk menunjukkan varian dan versi, jumlah total UUID versi-4, varian-1 yang berbeda adalah sekitar 2^122, atau sekitar 5,3 x 10^36 — angka yang sangat besar memastikan keunikan praktis.

Seberapa Kecil 1 / 5.300.000.000.000.000.000.000.000.000.000.000.000

Setiap pasangan UUIDv4 memiliki peluang sekitar 1 dalam 5,3 × 10^36 untuk cocok. Angka itu sangat kecil hingga hampir tidak dapat dibayangkan. Untuk membayangkannya, bayangkan melempar 47 dadu sekaligus. Kemungkinan mendapatkan semuanya satu — setiap dadu menunjukkan "1" — sekitar 1 dalam 6^47, atau sekitar 1 dalam 3,7 × 10^36. Itu adalah tingkat kemungkinannya sama dengan tabrakan UUID. Sekarang, bayangkan setiap orang di Bumi — sekitar delapan miliar dari kita — melempar 47 dadu setiap milidetik selama satu triliun tahun. Itu sekitar 2,5 × 10^32 total percobaan. Bahkan setelah semua itu, kemungkinan seseorang, di suatu tempat, mendapatkan 47 satu sekaligus masih hanya satu dalam sepuluh ribu. Itulah seberapa tidak mungkin dua UUIDv4 bertabrakan. Ini bukan "langka." Ini absurd secara kosmis — semacam kebetulan yang akan membuat matematikawan menjatuhkan kopi mereka dan memeriksa apakah ada kesalahan di alam semesta.

Apakah Mudah Menghasilkan UUID

Sekilas, menghasilkan UUID mungkin tampak sederhana — bagaimanapun, ini hanya string alfanumerik yang tampak acak. Tapi cobalah menulisnya sendiri dengan pena dan kertas. Anda bisa menuliskan 36 karakter, tentu saja, tetapi jika Anda mengulangi latihan ini ribuan kali, pola yang jelas akan muncul. Mungkin Anda lebih suka angka tertentu seperti 3 atau 8, dan jarang menggunakan huruf seperti x. Komputer dapat mendeteksi bias tersebut secara instan. Peretas yang jahat bisa menganalisis kebiasaan Anda dan mempersempit string rahasia "acak" Anda dalam sehari. Kemudian, bagaimana jika Anda juga menggunakan komputer dan memanggil rand(), fungsi acak klasik, untuk menghasilkan setiap digit. Itu lebih baik — tetapi tidak cukup baik. Banyak generator nomor "acak" di lingkungan pemrograman umum adalah pseudorandom, artinya mereka mengikuti urutan matematis yang dapat diprediksi dimulai dari benih internal, yang biasanya didasarkan pada waktu sistem. Jika seseorang menemukan atau menebak benih itu, mereka dapat mereproduksi setiap nilai yang dihasilkan generator Anda.

Seberapa Acak Sempurna UUID

Keacakan sempurna sebenarnya tidak ada — seperti halnya dadu sempurna tidak ada, atau lemparan dadu yang benar-benar acak tidak ada. Setiap proses fisik atau digital mengikuti beberapa aturan dasar. Meski begitu, matematikawan dan insinyur telah menghabiskan waktu puluhan tahun untuk merancang algoritma yang sedekat mungkin dengan keacakan sejati. Ketika Splync membuat UUID versi-4 yang baru, itu tidak hanya "memilih angka secara acak" seperti melempar dadu. Ia meminta sistem operasi untuk jejak-jejak kecil ketidakpastian — misalnya, momen tepat ketika CPU Anda menyelesaikan tugas, kebisingan listrik lemah di dalam perangkat keras, atau fluktuasi waktu latar belakang dalam memori. Fragmen entropi ini dikumpulkan dan dicampur menjadi 128 bit data — urutan panjang satu dan nol. Hasilnya adalah kode yang praktis tidak mungkin ditebak atau diulang oleh pengguna aplikasi atau penyerang yang berpotensi jahat.

Pendekatan Dua Pengenal Splync

Splync menggunakan UUID untuk pengenal sensitif seperti ID pengguna dan ID proyek, karena mereka sangat acak dan aman. Di saat yang sama, di dalam servernya, Splync mengubah UUID itu menjadi angka auto-increment untuk pencarian lebih cepat dan analitik pada kumpulan data besar. Pendekatan dua pengenal ini mencapai keseimbangan antara keamanan dan kenyamanan — privasi eksternal dengan performa internal. Tujuan Splync adalah menjadi aplikasi pelacakan anggaran yang bebas stres, sederhana, dan aman. Di balik antarmuka pengguna yang terlihat, kami terus menyempurnakan arsitektur kami agar tetap mulus, aman, dan cerdas dengan tenang.