이런 유형의 질문이 많이 나온다는 것을 알고 있지만 아직 결정을 내리는 데 도움이되는 강력한 주장을 읽지 않았습니다. 저를 참아주세요!
나는 거대한 데이터베이스를 가지고 있습니다-하루에 약 10,000,000 개의 레코드가 증가합니다. 데이터는 관계형이며 성능상의 이유로 BULK COPY로 테이블을로드합니다. 이러한 이유로 행의 키를 생성해야하며 IDENTITY 열에 의존 할 수 없습니다.
64 비트 정수-bigint는 사용하기에 충분히 넓지 만 고유성을 보장하려면 내 ID를 만들 수있는 중앙 집중식 생성기가 필요합니다. 현재 서비스에서 X 시퀀스 번호를 예약하고 충돌을 보장하지 않는 생성기 서비스가 있습니다. 그러나 이것의 결과는 내가 가진 모든 서비스 가이 하나의 중앙 집중식 발전기에 의존하기 때문에 시스템을 배포 할 수있는 방법이 제한되어 있으며 부과 된 다른 종속성 (예 : 네트워크 액세스 필요)에 만족하지 않습니다 이 디자인으로. 때때로 문제가되었습니다.
이제 순차 GUID를 기본 키 (SQL 외부에서 생성)로 사용하려고합니다. 내 테스트에서 확인할 수있는 한, 이것의 유일한 단점은 더 넓은 데이터 유형의 디스크 공간 오버 헤드 (인덱스에서의 사용으로 인해 악화됨)입니다. bigint 대안에 비해 쿼리 성능이 눈에 띄게 느려지는 것을 목격하지 않았습니다. BULK COPY로 테이블을로드하는 것은 약간 느리지 만 많이는 아닙니다. 순차적 GUID 구현으로 인해 GUID 기반 인덱스가 조각화되지 않습니다.
기본적으로, 내가 간과하고 싶은 다른 고려 사항이 있는지 알고 싶습니다. 현재 나는 도약을 시도하고 GUID를 사용하기 시작했다. 나는 결코 데이터베이스 전문가가 아니므로 어떤 지침도 정말로 감사하겠습니다.