Frage

  

Mögliche Duplizieren:
   Vor- und Nachteile der GUID / UUID Datenbankschlüssel

Gibt es Umstände, unter denen es wichtig ist, GUIDs als Primärschlüssel in einem SQL Server 2005/8 DB zu verwenden. Zum Beispiel ist die Verwendung der MS Sync Framework Kraft dieser oder Datenreplikation?

War es hilfreich?

Lösung

Sie würden guids als Schlüssel verwenden, wenn Sie über die Replikation mehrere Datenbanken zu synchronisieren erforderlich.

Ein weiterer Grund guids zu verwenden ist, wenn man wollte Reihen auf einem entfernten Client zB eine WinForms-Anwendung erstellen und sie dann auf den Server über Web-Services usw. einreichen.

Wenn Sie dies tun würde ich empfehlen, dass Sie sicherstellen, dass Sie Ihren eigenen gruppierten Index angeben, basierend auf einer automatischen Inkrementieren int, die nicht eindeutig ist. Es kann ein erheblicher Kopf Einfügen von Zeilen in eine Tabelle, wo der Clustered-Index ist ein guid.

Update: Hier ist ein Beispiel dafür, wie eine Tabelle wie folgt einzurichten:

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
)

Sie würden einfügen in die Tabelle als normal z.

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

Update: Ich zu einem wirklich guten dotnetrocks Folge zugehört, die über diese ihren Wert ein hören spricht - Show # 447

Andere Tipps

I GUIDs als Primärschlüssel verwenden, weil ich nicht will Composite Primärschlüssel habe, wenn ich mit verteilten Datenbanken bin der Aufbau von Anwendungen und einer zentralen Datenbank, die mit Daten aus allen verteilten derjenigediejenigedasjenige synchronisiert ist. Mit GUIDs Ich bin sicher, (fast *) Ich werde nicht einen Konflikt (Einschränkungsverletzung), wenn ich Daten aus allen DBs in die mittleren ziehen.

* es ist höchst unwahrscheinlich, dass die gleiche GUID in zwei verschiedenen Orten erzeugt hat, aber nicht unmöglich.

Wenn die Datenbank nicht zentralisiert oder ein Teil der Sammlung ist aus der Ferne durchgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top