Anforderung:
Wir müssen den Händlern eine zufällige, lang genug Nummer/Zeichenfolge zuweisen, so dass sie eindeutig identifizierbar sind (wollen Sie nicht, dass jemand die Kennung erraten). Dies ist erforderlich, da wir diese Nummer/Zeichenfolge als QR-Code drucken und an Händler weitergeben, damit unsere Benutzer den QR-Code lesen und die Informationen über den Händler erhalten können.Implementieren von UUID für bessere Leistung
aktuelle Implementierung: eine eindeutige ID zu speichern, erzeugt durch TimeBasedGenerator von JUG UUID-Generator
wir können nicht ids drucken, wie sie sequentiell sein wird, so haben wir ein neues Feld (externalId) eingeführt. Als ich mehr recherchierte, stellte ich fest, dass es Leistungsprobleme mit UUID gibt. Alle Artikel sprechen über UUId als Primärschlüssel, ich benutze UUID nicht als Primärschlüssel, sondern als sekundären Bezeichner. Ich bin nicht besorgt über Einfügungen und Updates, da sie im Vergleich zur Suche weniger sein werden. Da der Benutzer uns die UUID sendet, die er aus dem gedruckten QR-Code liest, müssen wir den Händler anhand dieses UUID-Feldes suchen. Daher wird sich die Leistung stark auswirken.
Lösung nach mir:
statt UUID werden wir eine Kombination von ID geben: UUID, so dass, wenn wir die Anfrage bekommen können wir die Händler mit ID und prüfen, ob die externalId (UUID) vorhanden aufgeteilt und holen in unsere DB passt zu der bereitgestellten, wenn sie übereinstimmt, geben wir den Händler nicht weise zurück.
Wird diese Lösung die Leistung erheblich erhöhen oder wird die Zeit, die durch die Zeichenfolgenoperationen benötigt wird, den Effekt zunichte machen.
Gibt es einen besseren Ansatz, dies zu tun?
Dank
Haben Sie etwas über RSA gesucht/gelesen? Es gibt ein Sicherheitspaket in Java, das RSA-Schlüssel erstellen kann. Es wird zufällig generiert und kann codiert und decodiert werden. Hier ist eine Dokumentation: https://docs.oracle.com/javase/tutorial/security/apisign/gensig.html –