Verwenden Sie eine Hash-Funktion für die Eingabezeichenfolge. Der ausgegebene Hash wäre der Primärschlüssel/die ID des Datensatzes.
Dann können Sie prüfen, ob die DB diesen Hash/id/Primärschlüssel hat:
- Wenn nicht, handelt es sich um eine neue Zeichenfolge; Sie fügen einen neuen Datensatz hinzu, der die Zeichenfolge und den Hash als id enthält.
- Falls ja: Prüfen Sie, ob die Zeichenfolge des geladenen Datensatzes mit der Eingabezeichenfolge übereinstimmt.
- wenn die Zeichenkette dieselbe ist: es handelt sich um ein Duplikat
- wenn die Zeichenfolge unterschiedlich ist: dies ist eine Kollision. Verwenden Sie eine Kollisionsauflösung Schema zu lösen. (Nachstehend ein paar Beispiele)
Sie müssen abwägen, welche Hash-Funktion/welches Schema/welche Hash-Stärke Sie verwenden wollen, je nach Geschwindigkeit und erwarteter Anzahl von Zeichenfolgen und Anforderungen/Garantien für Hash-Kollisionen.
Es gibt mehrere Möglichkeiten, Kollisionen aufzulösen:
- Verwenden Sie eine 2. Hash-Funktion, um einen neuen Hash in derselben Tabelle zu erstellen.
- Markieren Sie den Datensatz (z. B. mit NULL) und wiederholen Sie den Vorgang mit einer stärkeren zweiten Hash-Funktion (mit größerem Bereich) in einer sekundären "Kollisions"-Tabelle. Wenn die Zeichenfolge bei der Abfrage als kollidiert markiert wird (z. B. mit NULL), führen Sie die Suche in der Kollisionstabelle erneut durch. Sie können auch Folgendes verwenden dynamisches perfektes Hashing um sicherzustellen, dass es bei dieser zweiten Tabelle nicht zu weiteren Kollisionen kommt.
Je nachdem, wie beständig dies sein muss und wie viel Speicherplatz Sie voraussichtlich benötigen bzw. wie viele Zeichenketten Sie benötigen, könnten Sie dies natürlich auch ohne Datenbank direkt im Speicher durchführen, was wesentlich schneller wäre.