Çeşitli uygulamalar için Evrensel Benzersiz Tanımlayıcılar (UUID'ler) oluşturun. Dağıtık sistemlerde, veritabanlarında ve daha fazlasında kullanılmak üzere hem versiyon 1 (zaman tabanlı) hem de versiyon 4 (rastgele) UUID'ler oluşturun.
Evrensel Benzersiz Tanımlayıcı (UUID), bilgisayar sistemlerinde bilgileri tanımlamak için kullanılan 128 bitlik bir sayıdır. UUID'ler, Dağıtılmış Bilgi İşlem Ortamı (DCE) kapsamında Açık Yazılım Vakfı (OSF) tarafından standartlaştırılmıştır. Bu tanımlayıcılar, hem mekânda hem de zamanda benzersiz olacak şekilde tasarlanmıştır, bu da onları dağıtılmış sistemler ve ötesinde çeşitli uygulamalar için ideal hale getirir.
Bu UUID üretici aracı, hem versiyon 1 (zaman tabanlı) hem de versiyon 4 (rastgele) UUID'ler oluşturmanıza olanak tanır. Bu tanımlayıcılar, veritabanı anahtarları, dağıtılmış sistemler ve ağ protokolleri gibi benzersiz tanımlamanın gerekli olduğu çeşitli senaryolar için yararlıdır.
Bir UUID genellikle 32 onaltılık basamak olarak temsil edilir ve beş grup halinde, toplamda 36 karakter (32 alfanümerik karakter ve 4 tire) olacak şekilde tirelerle ayrılarak gösterilir. Örneğin:
1550e8400-e29b-41d4-a716-446655440000
2
Bir UUID'nin 128 biti, her biri UUID versiyonuna bağlı olarak farklı bilgiler taşıyan belirli alanlara ayrılmıştır:
İşte UUID yapısını gösteren bir diyagram:
UUID'lerin birkaç versiyonu vardır, her birinin kendi üretim yöntemi vardır:
Bu araç, Versiyon 1 ve Versiyon 4 UUID'leri oluşturma üzerine odaklanmaktadır.
Versiyon 1 UUID'leri aşağıdaki bileşenleri kullanarak üretilir:
Versiyon 1 UUID'si oluşturma formülü şu şekilde ifade edilebilir:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
Versiyon 4 UUID'leri, kriptografik olarak güçlü bir rastgele sayı üreteci kullanılarak üretilir. Formül basitçe:
1UUID = random_128_bit_number
2
Belirli bitler versiyonu (4) ve varyantı belirtmek için ayarlanır.
UUID'lerin bilgisayar bilimi ve yazılım mühendisliği alanlarında birçok uygulaması vardır:
Veritabanı Anahtarları: UUID'ler, özellikle birden fazla düğümün aynı anda kayıt oluşturabileceği dağıtılmış sistemlerde veritabanlarında genellikle birincil anahtar olarak kullanılır.
Dağıtılmış Sistemler: Büyük ölçekli dağıtılmış sistemlerde, UUID'ler kaynakları, işlemleri veya olayları benzersiz bir şekilde tanımlamak için yardımcı olur.
İçerik Adresleme: UUID'ler, içerik adresli depolama sistemlerinde içerik için benzersiz tanımlayıcılar oluşturmak için kullanılabilir.
Oturum Yönetimi: Web uygulamaları genellikle kullanıcı oturumlarını yönetmek için UUID'ler kullanır ve her oturumun benzersiz bir tanımlayıcıya sahip olmasını sağlar.
IoT Cihaz Tanımlaması: Nesnelerin İnterneti (IoT) uygulamalarında, UUID'ler bir ağdaki bireysel cihazları benzersiz bir şekilde tanımlamak için kullanılabilir.
UUID'ler yaygın olarak kullanılsa da, benzersiz tanımlayıcılar oluşturmak için alternatif yaklaşımlar vardır:
Otomatik artan kimlikler: Tek veritabanı sistemlerinde basit ve yaygın olarak kullanılır, ancak dağıtılmış ortamlar için uygun değildir.
Zaman damgası tabanlı kimlikler: Zaman sıralı veriler için yararlı olabilir, ancak yüksek eşzamanlılık senaryolarında çakışma sorunlarıyla karşılaşabilir.
Snowflake Kimlikleri: Twitter tarafından geliştirilen bu kimlikler, dağıtılmış sistemlerde benzersiz kimlikler oluşturmak için zaman damgası ve işçi numarasını birleştirir.
ULID (Evrensel Benzersiz Lexikografik Olarak Sıralanabilir Tanımlayıcı): UUID'lerden daha insan dostu ve sıralanabilir olmayı amaçlayan daha yeni bir alternatiftir.
UUID kavramı ilk olarak Apollo Ağ Bilgi İşlem Sistemi'nde tanıtılmış ve daha sonra 1990'larda Açık Yazılım Vakfı (OSF) tarafından standartlaştırılmıştır. İlk spesifikasyon 1997'de ISO/IEC 11578:1996 olarak yayımlanmış ve daha sonra 2005'te ISO/IEC 9834-8:2005'in bir parçası olarak revize edilmiştir.
UUID tarihindeki önemli kilometre taşları:
Zamanla, UUID'ler dağıtılmış sistemler ve veritabanı tasarımı için temel bir araç haline gelmiş, farklı programlama dilleri ve platformlar arasında çeşitli uygulamalar ve uyarlamalar yapılmıştır.
İşte çeşitli programlama dillerinde UUID oluşturma örnekleri:
1import uuid
2
3## Versiyon 4 (rastgele) UUID oluştur
4random_uuid = uuid.uuid4()
5print(f"Versiyon 4 UUID: {random_uuid}")
6
7## Versiyon 1 (zaman tabanlı) UUID oluştur
8time_based_uuid = uuid.uuid1()
9print(f"Versiyon 1 UUID: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Versiyon 4 (rastgele) UUID oluştur
4const randomUuid = uuidv4();
5console.log(`Versiyon 4 UUID: ${randomUuid}`);
6
7// Versiyon 1 (zaman tabanlı) UUID oluştur
8const timeBasedUuid = uuidv1();
9console.log(`Versiyon 1 UUID: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Versiyon 4 (rastgele) UUID oluştur
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("Versiyon 4 UUID: " + randomUuid);
8
9 // Versiyon 1 (zaman tabanlı) UUID oluştur
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("Versiyon 1 UUID: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Versiyon 4 (rastgele) UUID oluştur
4random_uuid = SecureRandom.uuid
5puts "Versiyon 4 UUID: #{random_uuid}"
6
7## Ruby'de Versiyon 1 UUID'leri için yerleşik bir yöntem yoktur
8## Bunun için 'uuidtools' gibi bir gem kullanmanız gerekir
9
1<?php
2// Versiyon 4 (rastgele) UUID oluştur
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "Versiyon 4 UUID: " . $randomUuid . "\n";
11
12// PHP'de Versiyon 1 UUID'leri için yerleşik bir yöntem yoktur
13// Bunun için 'ramsey/uuid' gibi bir kütüphane kullanmanız gerekir
14?>
15
İş akışınız için faydalı olabilecek daha fazla aracı keşfedin