Ich habe ungefähr 4 Millionen Datensätze pro Tag und muss 7 Jahre online bleiben. Wir sehen uns also 10,2 Milliarden Datensätze an, die ich durchsuchen muss. Die Benutzer erwarten, dass die Suche für eine Benutzeroberfläche schnell genug ist, was zu 3-5 Sekunden führt
Aufgrund der Politik, die außerhalb meiner Kontrolle liegt, kann ich keine Standard-Datenbanklösung verwenden, da dies bedeutet, dass ich die Datenbank einem anderen Team zur Verwaltung übergeben muss (nicht fragen), was bedeutet, dass ich die Fähigkeit zur Optimierung von Hardware und Hardware verliere Software, da sie einen einheitlichen Service für Datenbanken haben und (intern) vom GB in Rechnung gestellt werden. Ich bin sicher, ich werde Kommentare bekommen, die darauf hinweisen, dass ich den Punkt mache, den ich bereits habe, und das Management versteht, was sie von mir verlangen, ist lächerlich.
Ich habe versucht, Lucene als Kern meiner Lösung zu verwenden. Speichern der tatsächlichen Daten, unterteilt nach Typ und Tag, in Flatfiles. Verwenden Sie dann ein Lucene-Dokument, um einige der Felder zu indizieren, nach denen gesucht wird, wobei das einzige "gespeicherte" Feld die ID des Datensatzes ist (damit ich es aus der Einfachdatei lesen kann).
Ich bin nicht genau über Lucene oder Festplatten informiert, aber nach meinem Verständnis wird es anfängliche E / A / Suchzeit für die Suche im Index geben. Wenn ich dann alle Lucene-Dokument-IDs habe, lese ich die Dokumente, die weitere E / A verursachen Ich suche Zeit, dann lese ich den aktuellen Datensatz aus der Wohnung ... Ich kann mir angesichts der Größe des Datensatzes nicht vorstellen, dass dies sehr schnell gehen wird, worüber ich mir ein wenig Sorgen mache.
Lucene hat eine maximale Dokumentgröße von 2,1 Milliarden pro Index, daher werde ich hier mehrere Angaben benötigen.
Sieht dieser Ansatz auf den ersten Blick so aus, als könnte er funktionieren?
Die Daten, die ich speichere, sind Ereignisaktionsdaten. Die meisten Abfragen werden nach Ereignis-ID gruppiert und erhalten die letzten Ereignisaktionsdetails für ein bestimmtes Ereignis. Einige der Abfragen analysieren Ereignisse großer Mengen und ihre einzelnen Ereignisaktionen.