Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen wir die Verwendung von UUIDs zu ermöglichen, für die notwendige zwei-Wege-Synchronisierung mit der master-Datenbank. Für diese werden wir speichern die UUID als BINARY(16) Primärschlüssel.

Das problem, das ich gelernt habe, nach einiger recherche ist, dass der Zeitaufwand für nicht-sequenzielle Primärschlüssel fügt Laufe der Zeit zu erhöhen, und dass diese Einsätze führen zu einer Fragmentierung (als beantwortet hier). Der Vorteil für AUTO_INCREMENT ist, dass die neuen Zeilen werden in der Regel nur Hinzugefügt, um das Ende der Tabelle und so wird es nicht laufen in der Geschwindigkeit Probleme mit UUIDs.

Meine Frage ist, ob oder nicht es ist eine bessere Idee zur Verwendung eines AUTO_INCREMENT - Spalte als Primärschlüssel und dann haben die UUID Spalte als nicht null eindeutiger index? Vermutlich wird dies die Geschwindigkeit Vorteile der sequentiellen inserts unter Beibehaltung der notwendigen UUIDs erforderlich für die Synchronisation von verteilten Datenbanken.

Die einzige Frage, die ich sehen kann ist, dass die UUID muss als Referenz verwendet werden (mit foreign key-Einschränkungen) zu anderen Tabellen (d.h. eine Liste der Probleme, an eine Prüfung, die wiederum an einer Seite, alle, die beteiligt sind in den Beilagen und so alle UUIDs). Semantisch macht es mehr Sinn, für die Primärschlüssel der Referenz, sondern als ein verteiltes system, wir können nicht AUTO_INCREMENTS für diese. Gibt es Nachteile mit einem (nicht-null) unique-index, eher als Primärschlüssel für diese Referenzen (und, natürlich, die JOINs, die kommen mit Ihnen)?

Es ist vielleicht auch erwähnenswert, dass die master - (online) - Datenbank verwendet MySQL (InnoDB) und der dezentralen (offline -) Datenbanken verwenden SQLite.

Edit:

Bedenkt, dass es ist vielleicht besser, die UUID als Primärschlüssel (als das ist semantisch, was es ist), würde ich den Vorteil der sequentiellen inserts, wenn ich die UUID als Primärschlüssel und die AUTO_INCREMENT Spalte als nicht null eindeutiger index? Oder ist es nur der primäre Schlüssel ist von Bedeutung bei der Bestimmung, wo eine neue Zeile eingefügt werden?

Schreibe einen Kommentar