Die Antwort von Matt Sheppard ist großartig (mod up), aber ich würde diese Faktoren berücksichtigen, wenn ich an eine Spindel denke:
- Struktur: Bricht es offensichtlich in Stücke oder machen Sie Kompromisse?
- Verwendung: Wie werden die Daten analysiert / abgerufen / erfasst?
- Lebensdauer: Wie lange sind die Daten nützlich?
- Größe: Wie viele Daten gibt es?
Ein besonderer Vorteil von CSV-Dateien gegenüber RDBMS besteht darin, dass sie leicht komprimiert und auf praktisch jeden anderen Computer übertragen werden können. Wir führen große Datenübertragungen durch, und alles ist einfach genug. Wir verwenden nur eine große CSV-Datei und können mit Tools wie rsync einfach skripten. Um die Wiederholung großer CSV-Dateien zu verringern, können Sie beispielsweise YAML verwenden . Ich bin mir nicht sicher, ob ich etwas wie JSON oder XML speichern würde, es sei denn, Sie hatten erhebliche Beziehungsanforderungen.
Bei nicht erwähnten Alternativen sollten Sie Hadoop , eine Open-Source-Implementierung von MapReduce , nicht außer Acht lassen. Dies sollte gut funktionieren, wenn Sie eine TONNE lose strukturierter Daten haben, die analysiert werden müssen, und Sie möchten sich in einem Szenario befinden, in dem Sie nur 10 weitere Maschinen hinzufügen können, um die Datenverarbeitung zu handhaben.
Zum Beispiel habe ich versucht, die Leistung zu analysieren, bei der es sich im Wesentlichen um alle Zeitnummern verschiedener Funktionen handelt, die auf rund 20 Computern protokolliert wurden. Nachdem ich versucht hatte, alles in ein RDBMS zu stecken, wurde mir klar, dass ich die Daten nach der Aggregation wirklich nicht erneut abfragen muss. Und es ist nur in seinem aggregierten Format für mich nützlich. Also behalte ich die Protokolldateien bei, komprimiere sie und lasse die aggregierten Daten in einer Datenbank.
Hinweis: Ich bin eher daran gewöhnt, mit "großen" Größen zu denken.