Dağıtık sistemler, veritabanları ve web uygulamaları için çarpışmaya dayanıklı benzersiz tanımlayıcılar (CUID'ler) oluşturun. Bu araç, ölçeklenebilir, sıralanabilir ve çarpışma olasılığı son derece düşük CUID'ler oluşturur.
Çarpışma direncine sahip bir kimlik hızlı ve kolay bir şekilde oluşturun.
CUID (Çakışma Dirençli Benzersiz Kimlik) çakışma direnci, yatay ölçeklenebilirlik ve sıralanabilirlik açısından tasarlanmış bir benzersiz kimliktir. CUID'ler, benzersiz kimliklerin düğümler arasında koordinasyon olmadan üretilmesi gereken dağıtık sistemlerde özellikle faydalıdır.
Bir CUID genellikle aşağıdaki bileşenlerden oluşur:
Tam yapı, CUID uygulamasına bağlı olarak değişebilir, ancak bu bileşenler birlikte benzersiz ve sıralanabilir bir tanımlayıcı oluşturmak için çalışır.
İşte tipik bir CUID yapısının görsel temsili:
CUID'ler, zaman tabanlı ve rastgele bileşenlerin bir kombinasyonu kullanılarak üretilir. Süreç genellikle şunları içerir:
Sonuçta elde edilen CUID genellikle harf ve rakamlardan oluşan bir dize olarak temsil edilir.
CUID'ler, diğer benzersiz tanımlayıcı sistemlerine göre birkaç avantaj sunar:
CUID'ler için yaygın kullanım alanları şunlardır:
İşte çeşitli programlama dillerinde CUID'lerin üretilmesine dair örnekler:
1// JavaScript (cuid kütüphanesini kullanarak)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (cuid kütüphanesini kullanarak)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (cuid gem'ini kullanarak)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (com.github.f4b6a3.cuid kütüphanesini kullanarak)
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# (Cuid.Net NuGet paketini kullanarak)
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 (endyjasmi/cuid paketini kullanarak)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (github.com/lucsky/cuid paketini kullanarak)
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 (CUID paketini kullanarak)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (özel bir uygulama kullanarak)
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 (özel bir uygulama kullanarak)
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% Kullanım
12id = generateCUID();
13disp(id);
14
1## R (özel bir uygulama kullanarak)
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## Kullanım
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (özel bir uygulama kullanarak)
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' Bir hücrede kullanım
17'=GenerateCUID()
18
CUID'ler, 2012 yılında Eric Elliott tarafından dağıtık sistemlerde benzersiz tanımlayıcılar üretme sorununa bir çözüm olarak geliştirilmiştir. Kavram, Twitter'ın Snowflake ID sisteminden esinlenmiştir ancak daha kolay uygulanabilir ve çeşitli platformlarda kullanılabilir hale getirilmiştir.
CUID'lerin geliştirilmesi, basit, çakışma direnci olan bir ID sistemine olan ihtiyacı karşılamak için yönlendirilmiştir. Elliott'un amacı, uygulanması kolay, merkezi koordinasyon gerektirmeyen ve yatay olarak ölçeklenebilen bir sistem oluşturmaktı.
İlk ortaya çıktığı günden bu yana CUID'ler birkaç aşamadan geçmiş ve geliştirilmiştir:
CUID'lerin evrimi, dağıtık sistemlerin değişen ihtiyaçlarını ve benzersiz tanımlayıcı üretiminde basitlik, güvenlik ve performans dengesini sağlama çabalarını yansıtmaktadır.
Bu CUID üretici aracı, projeleriniz için hızlı bir şekilde CUID'ler oluşturmanıza olanak tanır. Yeni bir CUID oluşturmak için "Üret" butonuna tıklayın ve "Kopyala" butonunu kullanarak panonuza kolayca kopyalayın.
İş akışınız için faydalı olabilecek daha fazla aracı keşfedin