Alat pembangun · UUID penjana
UUID Versi 1 hingga 8 Diterangkan: Yang Mana Perlu Anda Hasilkan?
· Latar belakang
uuid kriptografi pelayar-apis
Lapan versi berkongsi satu format tetapi menyelesaikan masalah yang berbeza: pesanan masa, kebolehulangan, rawak atau susun atur tersuai. Siaran ini menerangkan setiap satu dan memberikan laluan keputusan.
Satu format, lapan resipi — mengapa versi menggigit penting apabila anda memilih fungsi perpustakaan
Piawaian UUID mentakrifkan format 128-bit sebagai tiga puluh enam aksara heksadesimal dengan tanda sempang. RFC 9562 mentakrifkan lapan resipi berbeza—versi satu hingga lapan—untuk mengisi bit tersebut dengan corak dan makna yang berbeza. Versi nibble (watak pertama kumpulan ketiga) mengenal pasti kaedah yang menghasilkan nilai, berfungsi sebagai label. Memilih versi yang salah bermakna menyimpan maklumat temporal yang tidak diperlukan, kehilangan jaminan pesanan untuk prestasi pangkalan data, atau salah faham peranan keselamatan pengecam. Siaran ini membincangkan setiap versi, masalah konkrit yang diselesaikannya, apabila pembangun menghadapinya dalam amalan, dan menyediakan rangka kerja keputusan untuk memilih versi yang betul untuk keperluan sistem khusus anda.
v1 dan v6: masa tambah nod — reka letak berasaskan masa asal dan versi tersusun semula yang disusun dengan betul
Versi 1 menggabungkan cap masa 60-bit dengan pengecam nod (asalnya alamat MAC, walaupun pelaksanaan moden menggunakan nilai rawak untuk mengelakkan maklumat perkakasan bocor). Cap masa merekodkan 100-nanosaat selang sejak Oktober 15, 1582. Medan nod boleh mendedahkan apabila pengecam dijana dan dari mana ia berasal secara geografi, itulah sebabnya pelaksanaan moden mengelakkan alamat MAC. Versi 6 menyusun semula cap masa dan maklumat nod yang sama untuk meningkatkan kebolehisihan dengan mengalihkan bit masa tertib tinggi ke hadapan, menjadikan UUID v6 mengisih dengan betul dalam susunan leksikografi. Jika aplikasi anda memerlukan UUID yang secara semula jadi disusun mengikut masa penciptaan dengan lokaliti indeks yang unggul, v6 ialah pilihan moden.
v2: DCE Security — varian yang jarang digunakan yang membenamkan POSIX pengecam
Versi 2 jarang digunakan dalam sistem baharu. Ia membenamkan POSIX pengguna atau pengecam kumpulan ke dalam reka letak UUID, menjadikannya sahaja berguna dalam persekitaran warisan yang pengecam tersebut membawa maksud organisasi. Reka bentuk v2 menganggap model pengkomputeran khusus (DCE Security) yang tidak biasa dalam sistem teragih moden. Kebanyakan organisasi mengaitkan UUID dengan pengguna atau kumpulan dalam lapisan aplikasi mereka melalui gabungan pangkalan data atau jadual carian, bukan dengan mengekodkan ID pengguna ke dalam pengecam itu sendiri. Pengasingan kebimbangan ini memudahkan anda menukar model kebenaran, memindahkan data pengguna dan mengekalkan jejak audit. Pengekodan kelayakan terus ke dalam UUID mewujudkan gandingan yang ketat dan menjadikan sistem lebih sukar untuk berkembang.
v3 dan v5: berasaskan nama — ID deterministik dicincang dari ruang nama dan nama dengan MD5 atau SHA-1
Versi 3 dan 5 UUID adalah deterministik: ruang nama dan nama yang sama sentiasa menghasilkan pengecam yang sama, sesuai untuk mewakili pemetaan stabil daripada data luaran. Versi 3 menggunakan MD5 dan versi 5 menggunakan SHA-1 sebagai algoritma cincang, mencerminkan umur dan penerimaan mereka masing-masing. Apabila rekod pelanggan tiba untuk import, v5 UUID yang diperoleh daripada ruang nama tetap akan menjadi sama merentas berbilang larian import, menghalang rekod pendua. Determinisme ini bermakna UUID boleh dihasilkan semula dan boleh diramalkan kepada sesiapa sahaja yang mengetahui ruang nama dan input. Nilai praktikal bersinar dalam senario penyepaduan data: menyelaraskan rekod pelanggan daripada berbilang sistem, menghalang pendua dalam import berulang dan memberikan ID yang stabil kepada item.
v4: rawak — 122 bits daripada CSPRNG dan pilihan lalai apabila membuat pesanan tidak penting
Versi 4 ialah pilihan lalai apabila pesanan tidak diperlukan dan anda mahukan penjanaan bebas tanpa penyelarasan pusat. A v4 UUID adalah terdiri daripada 122 bits daripada sumber rawak selamat secara kriptografi, dengan enam bit ditetapkan kepada nilai tetap (versi nibble 4 dan RFC 9562 bit varian 10). Rawak ialah keseluruhan titik: setiap panggilan menghasilkan nilai yang berbeza, perlanggaran kekal tidak mungkin hilang, dan tiada keadaan atau penyelarasan luaran diperlukan. Ia adalah versi ToolAcre menjana menggunakan crypto.randomUUID() atau crypto.getRandomValues(). Versi ini sesuai untuk rujukan objek, data tidak berstruktur dan kebanyakan peranan di luar kunci utama atau konteks pengisihan.
v7 dan v8: Masa dan tersuai Unix — versi tertib masa moden untuk kunci pangkalan data dan pintu keluar untuk susun atur yang dipesan lebih dahulu
Versi 7, diseragamkan dalam RFC 9562, membawa sifat tertib masa moden ke dalam format UUID. Ia menggunakan cap masa milisaat Unix 48-bit, 12 bits ketepatan sub-milisaat dan 62 bit rawak digabungkan. Cap masa milisaat Unix adalah baik sehingga tahun 10889, menjadikannya sesuai untuk sistem. Hasilnya diisih dengan betul dalam susunan leksikografi dan sesuai dengan lajur 128-bit UUID standard tanpa pengendalian atau penukaran pengekodan khas. Jika aplikasi anda memerlukan pengecam yang mengisih mengikut masa pembuatan dalam format UUID standard, v7 ialah amalan terbaik semasa. Versi 8 ialah tangkapan semua piawai untuk format yang ditentukan pelaksanaan, berguna sahaja jika anda memerlukan reka letak bit tertentu yang tidak diliputi oleh v1-v7.
Contoh yang berkesan — laluan keputusan digunakan pada tiga senario: rujukan API awam, kunci utama dan ID stabil untuk rekod yang diimport
Tiga senario dunia sebenar menggambarkan pemilihan versi: Pertama, rujukan API awam mesti stabil merentas API tika, tidak boleh membocorkan masa penciptaan dan mesti sama merentas pelayan dimulakan semula supaya kejadian berbeza menjana rujukan yang sama untuk dokumen yang sama. Gunakan v5 dengan ruang nama dan nama dokumen yang stabil. Kedua, kunci utama untuk jadual yang terus berkembang perlu unik, tidak boleh menyebabkan pemecahan indeks, dan mesti boleh dijana oleh mana-mana contoh aplikasi tanpa koordinasi pusat. Gunakan v7 untuk pengecam boleh diisih dengan sokongan ekosistem UUID standard. Ketiga, rekod arkib yang memerlukan carian stabil memerlukan pengecam yang tidak boleh diubah.
Bawa pulang: pilih mengikut harta, bukan mengikut kebiasaan — penjana ToolAcre menghasilkan UUID rawak daripada CSPRNG pelayar untuk kes yang memerlukan v4
Pemilihan versi mengikut reka bentuk skema dan keperluan sistem anda, bukan dari konvensyen atau kebiasaan. UUID rawak (v4) adalah lalai kerana ia tidak memerlukan keadaan atau penyelarasan dan menghasilkan pengecam bebas yang sesuai untuk kebanyakan peranan. Versi tertib masa (v6, v7) menyelesaikan masalah ketempatan indeks dengan kos kebocoran maklumat temporal atau keperluan penyegerakan jam. Versi deterministik (v3, v5) menghalang import pendua dan mendayakan pemetaan luaran yang stabil dengan kos kebolehramalan—sesiapa yang mengetahui ruang nama anda boleh mengiranya semula. ToolAcre menjana UUID v4 rawak daripada penjana selamat kriptografi pelayar. Apabila anda memerlukan versi yang berbeza, semakan yang dibentuk dengan baik mengesahkan penghuraian pengecam sebagai sah.