🛠️

Whiz Tools

Build • Create • Innovate

습윤 둘레 계산기 - 다양한 채널 모양 지원

사다리꼴, 직사각형/정사각형, 원형 파이프 등 다양한 채널 모양에 대한 습윤 둘레를 계산합니다. 수리 공학 및 유체 역학 응용에 필수적입니다.

ULID 생성기

생성된 ULID:

ULID 구조


타임스탬프 (10자)

무작위성 (16자)
📚

문서

ULID 생성기

소개

ULID(Universally Unique Lexicographically Sortable Identifier)는 타임스탬프와 임의 데이터를 결합하여 26자 문자열을 생성하는 고유 식별자입니다. ULID는 높은 정도의 고유성과 무작위성을 유지하면서 레키시컬 정렬이 가능하도록 설계되었습니다.

ULID의 구조

ULID는 두 가지 주요 부분으로 구성됩니다:

  1. 타임스탬프(10자): 처음 10자는 Unix Epoch(1970-01-01) 이후 밀리초 단위의 시간을 나타냅니다.
  2. 무작위성(16자): 나머지 16자는 암호학적으로 안전한 무작위 데이터를 사용하여 생성됩니다.

결과적으로 생성된 26자 문자열은 Crockford의 base32 알파벳(0-9 및 A-Z, I, L, O, U 제외)을 사용하여 인코딩됩니다.

공식

ULID는 다음 단계를 사용하여 생성됩니다:

  1. 48비트 타임스탬프(Unix Epoch 이후 밀리초)를 생성합니다.
  2. 80비트의 암호학적으로 안전한 무작위 데이터를 생성합니다.
  3. 결합된 128비트를 Crockford의 base32 인코딩을 사용하여 인코딩합니다.

계산

ULID 생성기는 다음 단계를 수행합니다:

  1. 현재 시간을 밀리초 단위로 가져옵니다.
  2. 암호학적으로 안전한 난수 생성기를 사용하여 10바이트(80비트)의 무작위 데이터를 생성합니다.
  3. 타임스탬프와 무작위 데이터를 결합하여 128비트 정수로 만듭니다.
  4. 128비트 정수를 Crockford의 base32 인코딩을 사용하여 인코딩합니다.

사용 사례

ULID는 다양한 시나리오에서 유용합니다:

  1. 데이터베이스 키: ULID는 데이터베이스 레코드의 고유 식별자로 사용될 수 있으며, 고유성과 정렬 가능성을 보장합니다.
  2. 분산 시스템: 분산 환경에서 ULID는 노드 간의 조정 없이 생성될 수 있습니다.
  3. 로깅 및 추적: ULID는 로그 항목이나 이벤트를 태그하는 데 사용될 수 있으며, 정렬 가능하고 고유한 식별자를 제공합니다.
  4. URL 친화적인 ID: ULID는 URL 안전하며 웹 애플리케이션에서 URL의 식별자로 사용할 수 있습니다.

대안

ULID는 다재다능하지만 고려할 수 있는 다른 고유 식별자 시스템이 있습니다:

  1. UUID(Universally Unique Identifier): 타임스탬프 구성 요소가 없는 128비트 식별자입니다.
  2. KSUID(K-Sortable Unique IDentifier): ULID와 유사하지만 다른 타임스탬프 인코딩을 사용합니다.
  3. 스노우플레이크 ID: Twitter의 분산 고유 ID 생성 시스템으로, 타임스탬프와 작업자 ID를 포함합니다.

역사

ULID는 2016년 Alizain Feerasta에 의해 UUID의 대안으로 소개되었습니다. ULID는 특히 정렬 가능성과 가독성 측면에서 UUID의 일부 한계를 해결하기 위해 설계되었습니다. ULID 사양은 도입 이후 안정적으로 유지되었으며, 다양한 프로그래밍 언어에서 여러 구현이 가능합니다.

예제

다음은 다양한 프로그래밍 언어에서 ULID를 생성하는 코드 예제입니다:

1// JavaScript 구현
2function generateULID() {
3  const timestamp = Date.now().toString(36).padStart(10, '0');
4  const randomness = crypto.getRandomValues(new Uint8Array(16))
5    .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6  return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10

이 예제들은 JavaScript, Python 및 Java에서 ULID를 생성하는 방법을 보여줍니다. 이러한 함수를 특정 요구 사항에 맞게 조정하거나 고유 식별자가 필요한 더 큰 시스템에 통합할 수 있습니다.

참고 문헌

  1. "ULID 사양." GitHub, https://github.com/ulid/spec. 2024년 8월 2일 접속.
  2. "Crockford의 Base32 인코딩." Base32 인코딩, http://www.crockford.com/base32.html. 2024년 8월 2일 접속.
  3. "UUID 대 ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. 2024년 8월 2일 접속.