Ich bin neu in PostgreSQL und etwas neu in Datenbanken im Allgemeinen. Gibt es eine etablierte Methode, wie wir UUID- Werte in Postgres indizieren sollen ? Ich bin gespalten zwischen der Verwendung von Hashing und der Verwendung eines Trie, es sei denn, es ist bereits etwas eingebaut, das es automatisch verwendet. Was auch immer ich benutze, es wird riesige Datenmengen verarbeiten.
Die SP-GiST-Operatorfamilie "text_ops" indiziert mithilfe eines Tries. Da UUIDs ziemlich lang und sehr unterschiedlich sind, klingen sie ansprechend, obwohl ich immer nur vollständige Übereinstimmungssuchen durchführen würde.
Es gibt auch eine Hash-Option. Hashing ist O (1), und ich muss natürlich neben Gleichheit keine Vergleiche anstellen, aber da UUIDs ziemlich lang sind, befürchte ich, dass das Generieren von Hashes viel Zeit verschwenden würde.
Oder ist dies etwas, das zu sehr vom System und den Verwendungsspezifikationen abhängt?
Ich würde eher verwenden bigserial in den meisten Fällen, aber ich habe gehört, verwenden UUID für diese. Wir brauchen uuid, weil wir möglicherweise mehrere Server haben, die unterschiedliche Datenbanken verwenden. Es gibt also keine Garantie dafür, dass wir eindeutige Bigints haben. Wir könnten für jeden Server eine andere Sequenz (und einen anderen Startwert) verwenden, aber es ist immer noch nicht so flexibel wie UUIDs. Zum Beispiel wären wir nicht in der Lage, Datenbankeinträge von einem Server auf einen anderen zu migrieren, ohne die IDs und ihre Referenzen überall zu konvertieren.