2016-12-13 4 views
0

Ich untersuche derzeit mit sha1 Hashing, die in MS SQL-Server als Binär (20) gespeichert werden. Betrachtet man die derzeit verfügbaren Datentypen in Solr 4.x, ist der einzige, der groß genug erscheint, binär. Ich bin jedoch unsicher, ob die Verwendung von binary als eindeutiger Schlüssel eine gute Idee ist. Außerdem werden wir in naher Zukunft von Solr 4.x Standalone auf Solr 6.x Cloud umsteigen.Solr 4.x: Sollte ich binary als uniquekey verwenden?

Antwort

1

Per bester Praxis der eindeutige Schlüssel sollte einen kurzen einzigartigen String (siehe Java UUID zum Beispiel) sein. Binär als eindeutigen Schlüssel zu verwenden, ist keine gute Idee oder empfohlen. Eine tragfähige Lösung allerdings für Ihr Problem kann in this page von Solr Dokumentation:

Cryptographic Hash

Ein kryptographischer Hash-Algorithmus als die Schaffung N sehr Zufallsbits aus den Eingangsdaten gedacht werden kann . Der MD5-Algorithmus erzeugt 128 Bits. Dies bedeutet, dass 2 Eingabedatensätze eine Chance von 1 in 2^128 von haben und dasselbe MD5 erstellen. Es gibt einen Standardausdruck von diesem als 32 Hexadezimalzeichen. RFC-1321. Mehrere MD5 Digest-Algorithmen Pakete für verschiedene Sprachen folgen nicht diesem Standard. Der UUID Standard enthält immer die Zeit bei der Erstellung der UUID, die einige der oben genannten Anwendungsfälle ausschließt. Sie können die Uhr Anforderung betrügen und ignorieren. Am besten ist es, das UUID-Text-Format zu verwenden: 550e8400-e29b-41d4-a716-446655440000 statt 550e8400e29b41d4a716446655440000. (Sie werden viele dieser Schlüssel lesen.) Ein Vorteil bei der Verwendung eines crypto-generierten eindeutigen Schlüssels ist, dass Sie eine zufällige Teilmenge von Dokumenten über Platzhalter auswählen können. Wenn die UUID-Daten als Zeichenfolge im 32-Zeichen-RFC-Format 'd3adbe3fdeadb3e4deadbee4deadb3ef' gespeichert sind, wird die Abfrage "ID: a *" eine zufällige 1/16 des gesamten Dokumentsatzes auswählen. "id: aa *" wählt 1/256 des Dokumentensatzes aus, wiederum sehr zufällig. Statistische Analyse und Daten Extraktionsprojekte können dies verwenden, um kleine Teilmengen statt den gesamten Index zu gehen.

Derselbe Ansatz funktioniert gut mit jeder Version von Solr.

+0

Wir beide MS SQL Server & Solr 4.x verwenden (derzeit standalone aber SolrCloud bewegen). Ich benutze den sha1 Hashing Algorithmus, um Duplikate zu vermeiden (Also die Verwendung von solr oder sql zu gen uuid ist out ... obwohl ich nicht wusste, dass ich die Clocking Komponente in Java entfernen könnte, die den gleichen Hashwert mit der gleichen Eingabezeichenfolge (?) Und wir verwenden Java für unsere Web App. Was ich brauchte: 1. Java vergleicht Solr Feld und MS SQL Spalte 2. Solr vergleicht Solr Feld und MS SQL Spalte auf Datenimport Leider MS SQL hashbytes() gibt varbinary zurück (20). – BillS

+0

Was ich getan habe, war Apache-Codec DigestUtils.shaHex ("einige Zeichenfolge"), um einen eindeutigen Hex-String-Schlüssel zu erstellen, der der Primärschlüssel in SQL und der eindeutige Schlüssel in Solr ist. Je mehr ich darüber nachdachte Ich habe mich nicht wohl gefühlt, binär als Schlüssel in solr zu verwenden. Danke für die Hilfe – BillS

Verwandte Themen