메인 콘텐츠로 건너뛰기
X의 각 오브젝트 — Tweet, Direct Message, User, List 등 — 는 고유한 ID를 가집니다. 플랫폼 초창기에는 이러한 ID가 충분히 작은 수였기 때문에 순차적으로 생성할 수 있었습니다. 시간이 지나 성장에 맞추기 위해 ID는 32비트에서 64비트로 전환되었습니다. 오늘날 X ID는 순차적이 아닌 시간 기반의 고유한 64비트 부호 없는 정수입니다. 전체 ID는 타임스탬프, 워커 번호, 시퀀스 번호로 구성됩니다. X는 이러한 ID를 안정적으로 생성하기 위해 “Snowflake”라는 내부 서비스를 개발했습니다(X 블로그에서 자세히 보기). 64비트처럼 큰 정수는 64비트 미만으로 정수를 표현하는 프로그래밍 언어에서 문제를 일으킬 수 있습니다. 예를 들어 JavaScript에서는 정수가 53비트로 제한됩니다. 이를 보완하기 위해 X API(v1/1.1)의 초기 설계에서는 ID 값을 정수와 문자열 두 가지 형식으로 모두 반환했습니다.
{"id": 10765432100123456789, "id_str": "10765432100123456789"}
브라우저의 JavaScript 콘솔에서 (10765432100123456789).toString() 명령을 실행하면 결과는 "10765432100123458000"이 됩니다. 변환 과정에서 64비트 정수의 정밀도가 손실되기 때문입니다(이를 때때로 “munging”이라고 하며, 데이터에 파괴적인 변경이 가해지는 것을 의미합니다). X API 1.1 버전까지는 정밀도 손실을 피하기 위해 숫자를 문자열 형태로 항상 사용해야 합니다. 최신 버전의 API에서는 모든 큰 정수 값이 기본적으로 문자열로 표현됩니다.