Kizazi cha CUID: Chombo cha Kutengeneza Vitambulisho vya Kipekee
Zalisha vitambulisho vya kipekee vinavyopingana (CUIDs) kwa ajili ya mifumo iliyosambazwa, hifadhidata, na programu za wavuti. Chombo hiki kinaunda CUIDs ambazo zinaweza kupanuka, kupangwa, na kuna uwezekano mdogo wa kukutana.
Mwanzo wa CUID
Tengeneza kitambulisho kisichoweza kugongana kwa haraka na kwa urahisi.
Muundo wa CUID
Wakati:
Bila mpangilio:
Nyaraka
CUID Generator
Utangulizi
CUID (Collision-resistant Unique IDentifier) ni kitambulisho cha kipekee kilichoundwa ili kuwa na upinzani wa mgongano, kupanuka kwa usawa, na kupangwa kwa mpangilio. CUIDs ni muhimu sana katika mifumo iliyosambazwa ambapo vitambulisho vya kipekee vinahitaji kuundwa bila uratibu kati ya nodi.
Muundo wa CUIDs
CUID kwa kawaida ina sehemu zifuatazo:
- Wakati: Uwakilishi wa wakati wa sasa
- Hesabu: Hesabu inayopanda ili kuhakikisha kipekee ndani ya milisekunde moja
- Alama ya mteja: Kitambulisho cha kipekee kwa mashine au mchakato unaounda CUID
- Sehemu ya nasibu: Takwimu za nasibu za ziada ili kupunguza zaidi uwezekano wa mgongano
Muundo halisi unaweza kutofautiana kulingana na utekelezaji wa CUID, lakini sehemu hizi zinafanya kazi pamoja ili kuunda kitambulisho kipekee na kinachoweza kupangwa.
Hapa kuna uwakilishi wa picha wa muundo wa kawaida wa CUID:
Jinsi CUIDs Zinavyoundwa
CUIDs zinaundwa kwa kutumia mchanganyiko wa sehemu za msingi wa wakati na za nasibu. Mchakato kwa kawaida unajumuisha:
- Kupata wakati wa sasa
- Kuongeza hesabu (ambayo inarejea mara kwa mara)
- Kuunda alama ya mteja (kawaida hufanywa mara moja kwa kila kikao au kuanzisha programu)
- Kuongeza takwimu za nasibu
- Kuunganisha vipengele hivi katika muundo maalum
CUID inayotokana kwa kawaida inawakilishwa kama mfuatano wa herufi na nambari.
Faida na Matumizi
CUIDs hutoa faida kadhaa ikilinganishwa na mifumo mingine ya kitambulisho kipekee:
- Upinzani wa mgongano: Mchanganyiko wa wakati, hesabu, na takwimu za nasibu unafanya mgongano kuwa wa chini sana, hata katika mifumo iliyosambazwa.
- Upanuzi wa usawa: CUIDs zinaweza kuundwa kwa uhuru kwenye mashine nyingi bila uratibu.
- Upangaji wa mpangilio: Sehemu ya wakati inaruhusu kupanga CUIDs kwa muda.
- Rafiki wa URL: CUIDs kwa kawaida zinaundwa kwa herufi zinazofaa kwa URL.
Matumizi ya kawaida ya CUIDs ni pamoja na:
- Funguo kuu za hifadhidata
- Mifumo iliyosambazwa ambapo ID za kipekee zinahitaji kuundwa kwenye nodi nyingi
- ID za kikao katika programu za wavuti
- Kufuatilia matukio katika mifumo ya uchanganuzi
- Kuitwa kwa faili au rasilimali katika mifumo ya uhifadhi wa wingu
Mifano ya Kanuni
Hapa kuna mifano ya kuunda CUIDs katika lugha mbalimbali za programu:
1// JavaScript (ukitumia maktaba ya 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (ukitumia maktaba ya 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (ukitumia gem ya 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (ukitumia maktaba ya 'com.github.f4b6a3.cuid')
2import com.github.f4b6a3.cuid.Cuid;
3
4public class CuidExample {
5 public static void main(String[] args) {
6 String id = Cuid.createCuid();
7 System.out.println(id);
8 }
9}
10
1// C# (ukitumia pakiti ya 'Cuid.Net' ya NuGet)
2using Cuid;
3
4class Program
5{
6 static void Main(string[] args)
7 {
8 string id = CuidGenerator.Generate();
9 Console.WriteLine(id);
10 }
11}
12
1// PHP (ukitumia pakiti ya 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (ukitumia pakiti ya 'github.com/lucsky/cuid')
2package main
3
4import (
5 "fmt"
6 "github.com/lucsky/cuid"
7)
8
9func main() {
10 id := cuid.New()
11 fmt.Println(id)
12}
13
1// Swift (ukitumia pakiti ya 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (ukitumia utekelezaji wa kawaida)
2#include <iostream>
3#include <chrono>
4#include <random>
5#include <sstream>
6#include <iomanip>
7
8std::string generateCUID() {
9 auto now = std::chrono::system_clock::now();
10 auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
11 auto value = now_ms.time_since_epoch();
12 long duration = value.count();
13
14 std::random_device rd;
15 std::mt19937 gen(rd());
16 std::uniform_int_distribution<> dis(0, 35);
17
18 std::stringstream ss;
19 ss << 'c';
20 ss << std::hex << std::setfill('0') << std::setw(8) << duration;
21 for (int i = 0; i < 8; i++) {
22 int r = dis(gen);
23 ss << (char)(r < 10 ? '0' + r : 'a' + r - 10);
24 }
25 return ss.str();
26}
27
28int main() {
29 std::string id = generateCUID();
30 std::cout << id << std::endl;
31 return 0;
32}
33
1% MATLAB (ukitumia utekelezaji wa kawaida)
2function id = generateCUID()
3 timestamp = dec2hex(round(posixtime(datetime('now'))*1000), 8);
4 random = '';
5 for i = 1:8
6 random = [random char(randi([48 57 97 122]))];
7 end
8 id = ['c' timestamp random];
9end
10
11% Matumizi
12id = generateCUID();
13disp(id);
14
1## R (ukitumia utekelezaji wa kawaida)
2library(lubridate)
3
4generate_cuid <- function() {
5 timestamp <- format(as.numeric(now()) * 1000, scientific = FALSE)
6 timestamp <- substr(timestamp, 1, 8)
7 random <- paste0(sample(c(0:9, letters[1:6]), 8, replace = TRUE), collapse = "")
8 paste0("c", timestamp, random)
9}
10
11## Matumizi
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (ukitumia utekelezaji wa kawaida)
2Function GenerateCUID() As String
3 Dim timestamp As String
4 Dim random As String
5 Dim i As Integer
6
7 timestamp = Right("00000000" & Hex(CLng(CDbl(Now()) * 86400000)), 8)
8
9 For i = 1 To 8
10 random = random & Mid("0123456789abcdef", Int(Rnd() * 16) + 1, 1)
11 Next i
12
13 GenerateCUID = "c" & timestamp & random
14End Function
15
16' Matumizi katika seli
17'=GenerateCUID()
18
Historia na Maendeleo
CUIDs zilianzishwa na Eric Elliott mwaka 2012 kama suluhisho la tatizo la kuunda vitambulisho vya kipekee katika mifumo iliyosambazwa. Wazo hili lilichochewa na mfumo wa ID wa Twitter wa Snowflake lakini ulitengenezwa ili uweze kutekelezwa kwa urahisi na kutumika katika majukwaa mbalimbali.
Maendeleo ya CUIDs yalichochewa na hitaji la mfumo wa kitambulisho wa rahisi, unaopingana na mgongano ambao unaweza kufanya kazi katika lugha tofauti za programu na mazingira. Lengo la Elliott lilikuwa kuunda mfumo ambao ni rahisi kutekeleza, hauhitaji uratibu wa kati, na unaweza kupanuka kwa usawa.
Tangu kuanzishwa kwake, CUID imepita katika hatua kadhaa za maboresho:
- Utekelezaji wa awali wa CUID ulilenga urahisi na urahisi wa matumizi.
- Kadri matumizi yalivyokua, jamii ilichangia utekelezaji katika lugha mbalimbali za programu.
- Mwaka 2021, CUID2 ilianzishwa ili kushughulikia baadhi ya mipaka ya CUID ya awali na kutoa utendaji bora zaidi na upinzani wa mgongano.
- CUID2 iliboresha ile ya awali kwa kutumia jenereta ya nambari za nasibu yenye usalama zaidi na kuongeza urefu wa jumla wa kitambulisho.
Mabadiliko ya CUIDs yanaakisi mahitaji yanayobadilika ya mifumo iliyosambazwa na juhudi endelevu za kulinganisha urahisi, usalama, na utendaji katika kuunda vitambulisho vya kipekee.
Marejeleo
- Hifadhi rasmi ya CUID GitHub
- Mspecification ya CUID2
- Elliott, Eric. "Kuunda ID za Kipekee katika Mazingira ya Kusambazwa." Medium, 2015.
- "Vitambulisho vya kupinga mgongano kwa Mifumo ya Kusambazwa." DZone, 2018.
Zana hii ya kizazi cha CUID inakuwezesha kuunda haraka CUIDs kwa miradi yako. Bonyeza tu kitufe cha "Unda" ili kuunda CUID mpya, na tumia kitufe cha "Nakili" ili kukinakili kwenye clipboard yako kwa matumizi rahisi katika programu zako.
Maoni
Bonyeza toast ya maoni kuanza kutoa maoni kuhusu zana hii
Zana Zinazohusiana
Gundua zaidi zana ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi