우리 모델의 개체를 식별하기 위해 고유 한 64 비트 키 (의사) - 무작위로 생성하고 싶습니다. 시스템의 모든 사용자에 대해 가능한 한 고유 한 키 (모든 N 키가 함께 사용될 때 충돌 가능성을 최소화해야 함)가 필요합니다.고유 한 64 비트 키를 생성하는 방법
우리는 데이터가 저렴하기 때문에 일반적인 GUID는 현재 의문입니다. 동일한 컨텍스트에서 1 백만 개 이상의 키가 필요하다고 예상하지 않기 때문에 64 비트이면 충분하다고 생각할 수 있습니다 (충돌 확률은 ~ 10e-7 정도).
부수적으로, 나는 또한 잘 분산/고유해야 할 단일 64 비트 키로 해당 키의 튜플을 폴드/해시하는 체계가 필요합니다.
어쨌든 좋은 (잘 분산 된) 해시 함수가 필요하므로 반으로 GUID를 배율 할 수 있습니까 (GUID의 고정 비트를 어떻게 든 계산할 수 있습니다)? 아니면 로컬 RNG를 사용하는 것이 더 낫습니까? 우주/세대 간의 독특함을 극대화하기 위해 RNG를 어떻게 뿌릴까요? 어떻게 강한 RNG가 필요한가요?
저는 효율성 (한 점까지)을 특별히 찾고 있지는 않지만 확률이 그들의 약속을 지키고 있는지 확인하고 싶습니다.
우리는 현재 독창성을 보장하는 32 비트 키의 범위를 배포하는 서버를 보유하고 있지만 이러한 종류의 간단한 카운터를 사용하면 피하기 위해 노력하고 있습니다 (단일 지점 오류, 연결 문제). – fparadis2
카운터 대신 이전 ID를 사용할 수 있습니다. 이렇게하면 각 MD5가 두 가지를 제공하기 때문에 많은 "독립적 인"카운터를 가질 수 있습니다. – Rotsor
또는 다른 출처에 대한 접두사가 있어야합니다. 일단 해시를 사용하면 선택 사항은 끝이 없습니다. 예를 들어, 각 컴퓨터는 MAC 주소와 카운터 등을 해시 할 수 있습니다. –