Mysql
 sql >> Datenbank >  >> RDS >> Mysql

7.300.000.000 Zeilen effizient speichern

"Nun - wie würden Sie das beschriebene Problem angehen?"

Mit einfachen Flatfiles.

Hier ist der Grund

Sie haben 2.000.000 Entitäten. Partition basierend auf der Entitätsnummer:

level1= entity/10000
level2= (entity/100)%100
level3= entity%100

Jede Datendatei ist level1/level2/level3/batch_of_data

Sie können dann alle Dateien in einem bestimmten Teil des Verzeichnisses lesen, um Proben zur Verarbeitung zurückzugeben.

Wenn jemand eine relationale Datenbank haben möchte, dann laden Sie Dateien für eine gegebene Entitäts-ID in eine Datenbank für ihre Verwendung.

Bearbeiten Auf Tageszahlen.

  1. Die date_id /entity_id Eindeutigkeitsregel ist nicht etwas, das behandelt werden muss. Es ist (a) trivialerweise den Dateinamen auferlegt und (b) für Abfragen irrelevant.

  2. Die date_id "Rollover" bedeutet nichts - es gibt keine Abfrage, also müssen Sie nichts umbenennen. Die date_id sollte einfach unbegrenzt aus dem Epochendatum wachsen. Wenn Sie alte Daten löschen möchten, löschen Sie die alten Dateien.

Da sich keine Abfrage auf date_id stützt , es muss nie etwas damit gemacht werden. Es kann der Dateiname für alles sein, was darauf ankommt.

Zum Einschließen der date_id Schreiben Sie es in der Ergebnismenge in die Datei mit den anderen vier Attributen, die sich in jeder Zeile der Datei befinden.

Bearbeiten beim Öffnen/Schließen

Zum Schreiben müssen Sie die Datei(en) geöffnet lassen. Sie führen regelmäßige Leerungen (oder schließen/öffnen) durch, um sicherzustellen, dass die Daten wirklich auf die Festplatte gehen.

Sie haben zwei Möglichkeiten für die Architektur Ihres Schreibers.

  1. Haben Sie einen einzigen „Writer“-Prozess, der die Daten aus den verschiedenen Quellen konsolidiert. Dies ist bei relativ häufigen Abfragen hilfreich. Sie zahlen für das Zusammenführen der Daten zum Zeitpunkt des Schreibens.

  2. Mehrere Dateien gleichzeitig zum Schreiben geöffnet haben. Führen Sie diese Dateien beim Abfragen zu einem einzigen Ergebnis zusammen. Dies ist hilfreich, da Abfragen relativ selten sind. Sie zahlen für die Zusammenführung der Daten zum Zeitpunkt der Abfrage.