@Kornblumberg: Bezüglich der Geschwindigkeit hatte ich doch etwas geschrieben. Natürlich hat das Auswirkungen auf die Samplerate und auch auf Schwankungen weil nicht jedes Sample wegschreiben gleich viel Zeit benötigt. Und das kann wie gesagt auch schon für das wegschreiben von einzelnen Samples in eine Datei gelten, nicht nur bei vergleichsweise hochkomplexen Datenbanken.
Der Datenbankentwurf gibt nicht mehr als eine Messung pro Datenbank her, darum nützt der auch nichts wenn man später mal einen ordentlichen macht in dem dann das geht was man braucht. Und bei Datenbanken ist das eher so das man sich da einmal am Anfang viel Gedanken macht und einen Entwurf hinlegt der dann nahezu in Stein gemeisselt ist. Geht natürlich nicht immer aber DB-Entwürfe sind in der Regel nichts was sich mit dem Programm dynamisch entwickelt, ganz einfach weil das ändern des Entwurfs und migrieren der Daten normalerweise problematischer und zeitintensiver wird, je mehr Daten man bereits in so einer Datenbank gespeichert hat.
Konkret: Schreib die Daten erst nach dem Samplen in Dateien/Datenbanken/Plots/… wenn die Samplerate möglichst hoch und die Schwankungen möglichst klein sein sollen. Setz Dich mit SQL auseinander und versuche zu verstehen warum Du die Fehlermeldung bekommst wenn Du versuchst eine ganze Liste von Werten für den Platzhalter für *einen* Wert einzusetzen. Und dann schau Dir die `Cursor.executemany()`-Methode an. (Wurde nicht alles davon schon gesagt?)
Array in Sqlite3 speichern
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn ums _schnelle_ schreiben in die DB geht spricht das noch mehr für Redis
Zumal sich in Redis das "DB-Schema" gut abbilden lässt: als Schlüssel der (eindeutige) Name der Messreihe, als Wert eine Liste der Messwerte.
Gruß, noisefloor
wenn ums _schnelle_ schreiben in die DB geht spricht das noch mehr für Redis

Zumal sich in Redis das "DB-Schema" gut abbilden lässt: als Schlüssel der (eindeutige) Name der Messreihe, als Wert eine Liste der Messwerte.
Gruß, noisefloor
@noisefloor: Man könnte auch die Daten als Numpy-Array als BLOB in die SQLite-Datenbank schreiben. Und im Grunde gibt es ja noch gar kein Schema, also im Sinne von man hat sich vorher Gedanken darüber gemacht welche Daten wie gespeichert werden sollen und welche Abfragen die DB dann effizient ermöglichen soll.
Und ob eine Redisdatenbank übers ”Netz” schneller als eine eingebettete SQLite-Datenbank ist, würde ich auch erst einmal messen wollen. Und natürlich schliesst sich dann auch gleich die Frage an ob der Geschwindigkeitsunterschied, egal in welcher Richtung, überhaupt relevant ist.
Und ob eine Redisdatenbank übers ”Netz” schneller als eine eingebettete SQLite-Datenbank ist, würde ich auch erst einmal messen wollen. Und natürlich schliesst sich dann auch gleich die Frage an ob der Geschwindigkeitsunterschied, egal in welcher Richtung, überhaupt relevant ist.
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@BlackJack: ich meinte das anders - Redis sollte wenn schon auf dem Messrechner laufen. Aber man kann halt hinterher auch über's Netzwerk auf die Daten zugreifen.

Gruß, noisefloor
@BlackJack: ich meinte das anders - Redis sollte wenn schon auf dem Messrechner laufen. Aber man kann halt hinterher auch über's Netzwerk auf die Daten zugreifen.
Wenn du das Ergebnis hast würde mich das auch interessierenUnd ob eine Redis-Datenbank übers ”Netz” schneller als eine eingebettete SQLite-Datenbank ist, würde ich auch erst einmal messen wollen.

Gruß, noisefloor
@noisefloor: Ich hatte Netz deswegen extra in Anführungszeichen gesetzt. Netzkommunikation auch auf dem lokalen Rechner ist etwas anderes als eine eingebettete Bibliothek direkt im gleichen Prozess aufzurufen.