문제

가능한 복제 :
Guid / UUID 데이터베이스 키의 장점 및 단점

SQL Server 2005/8 DB에서 Guid를 기본 키로 사용하는 것이 필수적인 상황이 있습니까? 예를 들어, MS Sync Framework의 사용이 이것 또는 데이터 복제를 강제합니까?

도움이 되었습니까?

해결책

복제를 통해 동기화하는 여러 데이터베이스가 필요한 경우 Guids를 키로 사용합니다.

Guids를 사용하는 또 다른 이유는 일부 원격 클라이언트에서 행을 생성하려는 경우 Winforms 앱을 사용한 다음 웹 서비스 등을 통해 서버에 제출하려는 경우입니다.

이렇게하면 고유하지 않은 자동 증분 INT를 기반으로 자신의 클러스터 인덱스를 지정하는 것이 좋습니다. 클러스터 된 인덱스가 안내 인 테이블에 행을 삽입하는 상당한 오버 헤드 일 수 있습니다.

업데이트 : 다음은 다음과 같은 테이블을 설정하는 방법의 예입니다.

CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
    CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED 
    (
   [realGuidId] ASC
    )
)

CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable] 
(
[intId] ASC
)

예를 들어 평소처럼 테이블에 삽입됩니다.

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')

업데이트 : 나는 정말 좋은 Dotnetrocks 에피소드를 들었습니다. 쇼 #447

다른 팁

분산 데이터베이스와 모든 분산 된 데이터의 데이터와 동기화 된 하나의 중앙 데이터베이스가있는 응용 프로그램을 구축 할 때 Composite 기본 키를 갖고 싶지 않기 때문에 Guids를 기본 키로 사용하고 있습니다. 지도를 통해 나는 모든 DBS에서 데이터를 중앙 DB로 가져 오면 충돌 (제약 위반)이 없을 것이라고 확신합니다.

* 두 곳에서 동일한 지침을 생성 할 가능성은 거의 없지만 불가능하지는 않습니다.

데이터베이스가 중앙 집중화되지 않았거나 일부 컬렉션이 원격으로 수행되는 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top