스노플레이크 ID

스노플레이크 ID(Snowflake ID) 또는 스노플레이크(snowflakes)는 분산 컴퓨팅에 사용되는 고유 식별자의 한 형태이다. 이 형식은 트위터(현 X)에 의해 만들어졌으며 트윗 ID에 사용된다. 모든 눈송이가 고유한 구조를 가지고 있다고 널리 알려져 있어 "스노플레이크 ID"라는 이름을 갖게 되었다. 이 형식은 디스코드와 인스타그램을 포함한 다른 회사들에서도 채택되었다. 마스토돈 소셜 네트워크는 수정된 버전을 사용한다.

 형식 
스노플레이크는 이진수로 64 비트이다. (부호 있는 정수에 맞추기 위해 63비트만 사용된다.) 처음 41비트는 선택된 에포크 이후 밀리초를 나타내는 타임스탬프이다. 다음 10비트는 충돌을 방지하는 기계 ID를 나타낸다. 추가 12비트는 동일한 밀리초에 여러 스노플레이크를 생성할 수 있도록 기계당 시퀀스 번호를 나타낸다. 최종 숫자는 일반적으로 십진수로 직렬화된다.

스노플레이크는 생성된 시간을 기반으로 하기 때문에 시간순으로 정렬할 수 있다. 또한, 스노플레이크가 생성된 시간은 스노플레이크로부터 계산할 수 있다. 이는 특정 날짜 이전 또는 이후에 생성된 스노플레이크(및 관련 객체)를 가져오는 데 사용될 수 있다.

+고정 헤더 형식 오프셋 옥텟 0 1 2 3 옥텟 비트 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 타임스탬프 - 첫 31비트 4 32 타임스탬프 - 마지막 10비트 기계 ID 기계 시퀀스 번호

 예시 
2022년 6월 @위키백과가 작성한 트윗은 스노플레이크 ID 를 가지고 있다. 이 숫자는 이진수 로 변환될 수 있으며, 파이프 기호는 ID의 세 부분을 나타낸다.
 첫 41비트(+1 최상위 0비트)는 십진수로 로 변환된다. 이 값에 X 에포크  (밀리초 단위의 유닉스 시간)를 더하면, 트윗의 유닉스 시간은 이다: 2022년 6월 28일 16:07:40.105 UTC.
 중간 10비트 는 기계 ID이다.
 마지막 12비트는 모두 0으로 디코딩되며, 이는 해당 밀리초에 해당 기계에서 처리된 첫 번째 트윗임을 의미한다.

 사용법 
이 형식은 2010년 6월 트위터에서 처음 발표되었다. 구현상의 어려움으로 인해, 그들은 업데이트를 연말까지 미루었다.

 트위터는 트윗, 다이렉트 메시지, 사용자, 목록 및 API를 통해 사용 가능한 기타 모든 객체에 스노플레이크 ID를 사용한다.
 10비트 기계 ID 필드는 주어진 구현에 따라 하위 필드로 더 분할될 수 있다. 예를 들어, 스칼라의 원본 트위터 스노플레이크 라이브러리 아카이브 버전은 이를 5비트 데이터센터 ID와 5비트 워커 ID로 분할한다.Source Code 
 디스코드도 스노플레이크를 사용하며, 에포크는 으로 설정되어 2015년의 0초에 해당한다.
 인스타그램은 수정된 버전을 사용하며, 타임스탬프에 41비트, 샤드 ID에 13비트, 시퀀스 번호에 10비트를 할당한다.
 마스토돈의 수정된 형식은 유닉스 에포크를 사용하므로 밀리초 단위 타임스탬프에 48비트가 할당된다. 나머지 16비트는 시퀀스 데이터용이다.Source Code 

 같이 보기 
 범용 고유 식별자

 각주 

 외부 링크 

 스노플레이크 ID 생성기 도구

분류:트위터
분류:고유 식별자
분류:분산 자료 구조