Frage

Ich habe darüber nachgedacht, Sie implementieren dieses system, aber kann nicht helfen, aber das Gefühl, es gibt einen Haken irgendwo.Einer der Punkte, der mit GUID über inkrementierende int ist, dass, in der Zukunft, wenn Sie an Zusammenführen von Datenbanken zusammen, Sie hätten keine Auseinandersetzungen über den Primärschlüssel/id.Aber mein Ansatz ist, legen Sie die Schrittweite der Größe X ein, wobei X die Anzahl der Server, die ich wahrscheinlich in der Zukunft haben.Dann, auf jedem server, haben die Samen einen Schritt über die seed-Nummer auf den vorherigen server.So, während des Mischens, gäbe es keine Konflikte mit der primary key.Ist dies eine sichere, normale Methode oder habe ich gegangen, geistige :)?Vielen Dank

War es hilfreich?

Lösung

In multi-master-SQL-Replikation, Sie haben in der Regel Primärschlüssel definiert als:

  • GUIDs
  • int s mit einer Schrittweite Größe > Zahl der Installationen
  • int ist mit einem festen offset

Der Nachteil von GUIDs ist, können Sie schwieriger zu Lesen und nehmen etwas mehr Platz.Jedoch, es ermöglicht Sie zu skalieren, zu n Instanzen.

Ganze zahlen sind ein bisschen leichter zu behandeln.Sie haben auch den Vorteil, dass Sie in der Lage, um leicht zu erkennen, welcher server einen Datensatz erstellt.Der Nachteil ist, müssen Sie entweder die Vorhersagen, die maximale Anzahl von Datenbanken, die möglicherweise zusammengeführt werden, oder erraten Sie die maximale Anzahl von Zeilen, die eine einzelne Instanz einfügen.

Ein Beispiel für einen festen offset:Seite A beginnt bei 0, Seite B beginnt bei 1.000.000 und Seite C startet 2000000.Dieses Schema funktioniert gut, bis einer Website fügt eine million Zeilen.Dieses Schema funktioniert möglicherweise gut für Autos in Autohäusern, in denen es unwahrscheinlich ist, dass ein Händler würde jemals verkaufen mehr als 1.000.000 Autos, und Sie haben Hunderte von Händlern über die Lebensdauer der Anwendung.

Andere Tipps

Was macht mir Angst hier ist Ihre Verwendung von „höchstwahrscheinlich“. Sie gehen davon aus über die Zukunft hier, und das ist in der Regel nicht eine gute Sache, mit Dingen wie dies zu tun. Warum nicht eine GUID verwenden?

Was ist, wenn Sie einen zusätzlichen Server über hinzufügen, was Sie dachten, Sie haben würde? Ich konnte sehen, die Dinge immer wirklich sehr schnell kompliziert.

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