Generišite univerzalno jedinstvene identifikatore (UUID) za razne aplikacije. Kreirajte i verziju 1 (na bazi vremena) i verziju 4 (nasumične) UUID-ove za korišćenje u distribuiranim sistemima, bazama podataka i još mnogo toga.
Универзално јединствено идентификатор (UUID) је 128-битни број који се користи за идентификацију информација у рачунарским системима. UUID-ови су стандартизовани од стране Отворене софтверске фондације (OSF) као део Распределеног рачунарског окружења (DCE). Ови идентификатори су дизајнирани да буду јединствени у простору и времену, што их чини идеалним за разне апликације у расподељеним системима и изван њих.
Овај алат за генерисање UUID-ова вам омогућава да креирате и верзију 1 (на основу времена) и верзију 4 (случајно) UUID-ове. Ови идентификатори су корисни у разним сценаријима где је потребна јединствена идентификација, као што су кључеви база података, расподељени системи и мрежни протоколи.
UUID се обично представља као 32 хексадецималне цифре, приказане у пет група одвојених хипенима, у облику 8-4-4-4-12 за укупно 36 знакова (32 алфанумеричка знака и 4 хипена). На пример:
1550e8400-e29b-41d4-a716-446655440000
2
128 бита UUID-а је подељено у специфична поља, при чему свако носи различите информације у зависности од верзије UUID-а:
Ево дијаграма који илуструје структуру UUID-а:
Постоји неколико верзија UUID-ова, од којих свака има свој метод генерисања:
Овај алат се фокусира на генерисање верзије 1 и верзије 4 UUID-ова.
UUID-ови верзије 1 се генеришу коришћењем следећих компоненти:
Формула за генерисање UUID-а верзије 1 може се изразити као:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
UUID-ови верзије 4 се генеришу коришћењем криптографски јаких генератора случајних бројева. Формула је једноставно:
1UUID = random_128_bit_number
2
Са специфичним битовима подешеним да указују на верзију (4) и варијанту.
UUID-ови имају бројне апликације у различитим областима рачунарских наука и софтверског инжењеринга:
Кључеви база података: UUID-ови се често користе као примарни кључеви у базама података, посебно у расподељеним системима где више чворова може истовремено генерисати записе.
Распределени системи: У великим расподељеним системима, UUID-ови помажу у јединственом идентификовању ресурса, трансакција или догађаја у више чворова или дата центара.
Адресирање садржаја: UUID-ови се могу користити за креирање јединствених идентификатора за садржај у системима за складиштење заснованим на адреси садржаја.
Управљање сесијама: Веб апликације често користе UUID-ове за управљање корисничким сесијама, осигуравајући да свака сесија има јединствени идентификатор.
Идентификација IoT уређаја: У апликацијама Интернета ствари (IoT), UUID-ови се могу користити за јединствено идентификовање појединачних уређаја у мрежи.
Иако су UUID-ови широко коришћени, постоје алтернативни приступи за генерисање јединствених идентификатора:
ID-ови са аутоматским инкрементом: Једноставни и често коришћени у системима са једном базом података, али нису погодни за расподељене средине.
ID-ови на основу времена: Могу бити корисни за податке у временском редоследу, али могу имати проблеме са колизијом у сценаријима са великом конкоренцијом.
Snowflake ID-ови: Развили их Твитер, ови ID-ови комбинују временски жиг и број радника за генерисање јединствених ID-ова у расподељеним системима.
ULID (Универзално јединствено лексикографски сортирано идентификатор): Новија алтернатива која има за циљ да буде пријатнија за људе и сортирана од UUID-ова.
Концепт UUID-ова први пут је уведен у Аполоновом мрежном рачунарском систему и касније стандаризован од стране Отворене софтверске фондације (OSF) као део Распределеног рачунарског окружења (DCE) 1990-их. Прва спецификација објављена је 1997. године као ISO/IEC 11578:1996 и касније ревидирана 2005. године као део ISO/IEC 9834-8:2005.
Кључни догађаји у историји UUID-а:
Током времена, UUID-ови су постали основни алат у расподељеним системима и дизајну база података, са различитим имплементацијама и адаптацијама у различитим програмским језицима и платформама.
Ево примера генерисања UUID-ова у различитим програмским језицима:
1import uuid
2
3## Генерисање UUID-а верзије 4 (случајно)
4random_uuid = uuid.uuid4()
5print(f"UUID верзије 4: {random_uuid}")
6
7## Генерисање UUID-а верзије 1 (на основу времена)
8time_based_uuid = uuid.uuid1()
9print(f"UUID верзије 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Генерисање UUID-а верзије 4 (случајно)
4const randomUuid = uuidv4();
5console.log(`UUID верзије 4: ${randomUuid}`);
6
7// Генерисање UUID-а верзије 1 (на основу времена)
8const timeBasedUuid = uuidv1();
9console.log(`UUID верзије 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Генерисање UUID-а верзије 4 (случајно)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID верзије 4: " + randomUuid);
8
9 // Генерисање UUID-а верзије 1 (на основу времена)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID верзије 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Генерисање UUID-а верзије 4 (случајно)
4random_uuid = SecureRandom.uuid
5puts "UUID верзије 4: #{random_uuid}"
6
7## Руби нема уграђену методу за UUID-ове верзије 1
8## Требаће вам гем као што је 'uuidtools' за то
9
1<?php
2// Генерисање UUID-а верзије 4 (случајно)
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 "UUID верзије 4: " . $randomUuid . "\n";
11
12// PHP нема уграђену методу за UUID-ове верзије 1
13// Требаће вам библиотека као што је 'ramsey/uuid' за то
14?>
15
Otkrijte više alata koji mogu biti korisni za vaš radni proces