Datenbank oder doch textfiles
Hallo,
Ich möchte Orderbücher aus einem Exchange auslesen und später auswerten.
Ein Orderbuch ist dabei ein JSON Objekt, das durchaus mal 200kb groß werden kann.
Bisher speichere ich diese Orderbücher für je 24h in einer MYSQL Tabelle (id, timestamp, json). Dabei erreiche ich in 24h eine Tabellengröße von ~1,5GB
Ich verarbeite 15 Währungspaare,das wären also ~100mb/Tag und Währungspaar.
Wenn die Daten nun für 1 Jahr erfasst würden, ergäben sich pro Währungspaar Tabellen mit ~36GB größe.
Einmal im Monat sollen nun einige Kennwerte aus den gesammelten Daten ermittelt werden.
Dazu werden die JSON Objekte in Monatsschritten durchgearbeitet. Dies geschieht pro JSON Objekt etwa 10000 mal.
Macht es in so einem Fall das JSON Objekt in der DB zu speichern oder nur den timestamp und dann das jsonobejkt in einem text file das zum beispiel PAAR_TIMESTAMP.json heißt ?
Danke schon mal für eure Antworten.
Ich möchte Orderbücher aus einem Exchange auslesen und später auswerten.
Ein Orderbuch ist dabei ein JSON Objekt, das durchaus mal 200kb groß werden kann.
Bisher speichere ich diese Orderbücher für je 24h in einer MYSQL Tabelle (id, timestamp, json). Dabei erreiche ich in 24h eine Tabellengröße von ~1,5GB
Ich verarbeite 15 Währungspaare,das wären also ~100mb/Tag und Währungspaar.
Wenn die Daten nun für 1 Jahr erfasst würden, ergäben sich pro Währungspaar Tabellen mit ~36GB größe.
Einmal im Monat sollen nun einige Kennwerte aus den gesammelten Daten ermittelt werden.
Dazu werden die JSON Objekte in Monatsschritten durchgearbeitet. Dies geschieht pro JSON Objekt etwa 10000 mal.
Macht es in so einem Fall das JSON Objekt in der DB zu speichern oder nur den timestamp und dann das jsonobejkt in einem text file das zum beispiel PAAR_TIMESTAMP.json heißt ?
Danke schon mal für eure Antworten.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 456277
Url: https://administrator.de/contentid/456277
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
Gruß,
Peter
Zitat von @WPFORGE:
Bisher speichere ich diese Orderbücher für je 24h in einer MYSQL Tabelle (id, timestamp, json). Dabei erreiche ich in 24h eine Tabellengröße von ~1,5GB
Und wenn du das alles per Textdatei tust, was wird gesparrt bzw. wie klein ist dann alles?Bisher speichere ich diese Orderbücher für je 24h in einer MYSQL Tabelle (id, timestamp, json). Dabei erreiche ich in 24h eine Tabellengröße von ~1,5GB
Gruß,
Peter
Moin,
es geht ja wohl um die ewige Frage ob man Binär- oder andere größe Daten in einer DB speichern soll.
Grundsätzliche Antwort: Nein, aber...
Zuerst würde ich die Datei [id].json nennen.
Das ist absolut eindeutet.
Dann noch das Feld [created] dazu.
Aber: Wenn Du Informationen aus dem JSON für Deine Suche benötigst, funktioniert das natürlich nicht.
Dann entweder
A) Doch JSON in der DB speichern
oder
B) Relevante Daten extrahieren und JSON in Datei speichern.
Stefan
es geht ja wohl um die ewige Frage ob man Binär- oder andere größe Daten in einer DB speichern soll.
Grundsätzliche Antwort: Nein, aber...
Zuerst würde ich die Datei [id].json nennen.
Das ist absolut eindeutet.
Dann noch das Feld [created] dazu.
Aber: Wenn Du Informationen aus dem JSON für Deine Suche benötigst, funktioniert das natürlich nicht.
Dann entweder
A) Doch JSON in der DB speichern
oder
B) Relevante Daten extrahieren und JSON in Datei speichern.
Stefan
Ich würde vermuten das Textdateien minimal mehr Speicher konsumieren als die selben Daten in der DB. Das ist aber eigentlich egal, speichern musst du es ja. Eigentlich ist nur relevant wie viel schneller du darauf zugreifen und es verarbeiten kann.
Ich kenne JSON leider nicht sehr gut aber selbst MySQL scheint Funktionen für JSON zu bieten. Oder auch
https://www.postgresql.org/docs/9.3/functions-json.html
Ich kenne JSON leider nicht sehr gut aber selbst MySQL scheint Funktionen für JSON zu bieten. Oder auch
https://www.postgresql.org/docs/9.3/functions-json.html
Moin,
bitte nicht auf PostgreSQL 9.3 verweisen, das ist schon gar nicht mehr unter Support. Aktuell ist Version 11. Dieses kann JSON in binärer Form speichern und indexbasiert durchsuchen. (JSONB).
Für unsere Kunden haben wir auch noch eine extra Extension:
"The zson2q extension provides a datatype for compressed JSONB, using a compression dictionary. The type is almost exactly like the JSONB type, but where commonly occurring strings are stored as indexes into a dictionary, thus allowing for reduced storage requirements and access times."
bitte nicht auf PostgreSQL 9.3 verweisen, das ist schon gar nicht mehr unter Support. Aktuell ist Version 11. Dieses kann JSON in binärer Form speichern und indexbasiert durchsuchen. (JSONB).
Für unsere Kunden haben wir auch noch eine extra Extension:
"The zson2q extension provides a datatype for compressed JSONB, using a compression dictionary. The type is almost exactly like the JSONB type, but where commonly occurring strings are stored as indexes into a dictionary, thus allowing for reduced storage requirements and access times."
Hallo,
wie gelangen die Dateien der JSON Dateien in die Datenbank?
In der JSON Datei ist vermutlich aufgrund der vielen Tags viel Overhead enthalten.
Um welche Anzahl an Datensätzen und welche Datentypen geht es in den Dateien / insgesamt?
Ich habe kürzlich ETL Jobs für den automatisierten Abruf / Download und Import in eine Datenbank erstellt.
Es ging dabei um eine geringe Anzahl an Datensätzen, jedoch war hierbei der Overhead der JSON Datei deutlioch größer als der Nutzdatenanteil.
Als Tool habe ich hierfür Talend Open Studio verwendet. Schnell umgesetzt und automatisiert.
VG
the joker2305
wie gelangen die Dateien der JSON Dateien in die Datenbank?
In der JSON Datei ist vermutlich aufgrund der vielen Tags viel Overhead enthalten.
Um welche Anzahl an Datensätzen und welche Datentypen geht es in den Dateien / insgesamt?
Ich habe kürzlich ETL Jobs für den automatisierten Abruf / Download und Import in eine Datenbank erstellt.
Es ging dabei um eine geringe Anzahl an Datensätzen, jedoch war hierbei der Overhead der JSON Datei deutlioch größer als der Nutzdatenanteil.
Als Tool habe ich hierfür Talend Open Studio verwendet. Schnell umgesetzt und automatisiert.
VG
the joker2305