@Sirius3: Eine Relationale Algebra über einer 1-elementigen Menge ist zwar ziemlich langweilig, aber immer noch eine Relationale Algebra. Immerhin kann man darauf Selektionen, Projektionen und Self-Joins ausführen.
@snafu: Klar ist ein RDBMS nicht immer die geeignete oder sogar beste Lösung, aber unter bestimmten Bedingungen ist eine DB mit einer einzigen Tabelle immer noch besser, als eine CSV-Datei.
Array in Sqlite3 speichern
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
In specifications, Murphy's Law supersedes Ohm's.
-
- User
- Beiträge: 7
- Registriert: Donnerstag 5. März 2015, 14:39
Hey Leute,
das schöne an solchen Foren ist ja immer das sich der TE erstmal ne Weile rechtfertigen und erklären soll .
Das eigentliche Thema Zwecks der Geschwindigkeit wurde noch nicht geklärt...
Um es nochmal zu erwähnen... Die Geschwindigkeit ging beim Lesen über den seriellen Port so in den Keller das ich gerne die Liste komplett in einem Abwasch in die Datenbank geschrieben hätte.. Ist das normal? Habt ihr diese Probleme auch oder geht das bei euch alles relativ zügig??
Um mich nochmal zu rechtfertigen.. Natürlich ist es für diese spezielle Anwendung etwas sinnfrei eine Datenbank zu nutzen...
Wenn wir jetzt aber mal ein paar Wochen/Monate vorraus denken dann kann es gut kommen das der Zeitpunkt der Messung festgehalten wird.. bei/von wem es durchgeführt wurde.. Das gefilterte Signal erstellt wird... Events bestimmt werden usw... Soweit bin ich jetzt aber noch nicht.. Das Problem nach hinten zu schieben wird mich aber auch nicht vorwärts bringen...
MfG
Und wenn einer explizit zu meiner Fragestellung noch was sagen würde wäre ich sehr dankbar.
das schöne an solchen Foren ist ja immer das sich der TE erstmal ne Weile rechtfertigen und erklären soll .
Das eigentliche Thema Zwecks der Geschwindigkeit wurde noch nicht geklärt...
Um es nochmal zu erwähnen... Die Geschwindigkeit ging beim Lesen über den seriellen Port so in den Keller das ich gerne die Liste komplett in einem Abwasch in die Datenbank geschrieben hätte.. Ist das normal? Habt ihr diese Probleme auch oder geht das bei euch alles relativ zügig??
Um mich nochmal zu rechtfertigen.. Natürlich ist es für diese spezielle Anwendung etwas sinnfrei eine Datenbank zu nutzen...
Wenn wir jetzt aber mal ein paar Wochen/Monate vorraus denken dann kann es gut kommen das der Zeitpunkt der Messung festgehalten wird.. bei/von wem es durchgeführt wurde.. Das gefilterte Signal erstellt wird... Events bestimmt werden usw... Soweit bin ich jetzt aber noch nicht.. Das Problem nach hinten zu schieben wird mich aber auch nicht vorwärts bringen...
MfG
Und wenn einer explizit zu meiner Fragestellung noch was sagen würde wäre ich sehr dankbar.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Nein, das schöne an so einem Forum wie dem unseren ist, dass sich die Leute hier *Gedanken* um *Dein* Problem machen und eben nicht stumpf alles daran setzen, die von Dir als mutmaßlich sinnvoll erachtete Lösung auf Biegen und Brechen zu realisieren. Dafür ist es oft wichtg zu kapieren, *was* Deine Anforderungen und Restriktionen sind und ggf. auch zu ermitteln, ob es sich evtl. nicht doch um ein XY-Problem handelt. Dies ist leider oft der Fall...Kornblumberg hat geschrieben: das schöne an solchen Foren ist ja immer das sich der TE erstmal ne Weile rechtfertigen und erklären soll .
Oft bekommt man dann auch Hinweise auf Alternativen, die man selber gar nicht kennt oder an die man nicht gedacht hat. So etwas erachte ich als enorm wertvoll und bin dankbar dafür!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 7
- Registriert: Donnerstag 5. März 2015, 14:39
natürlich ist das auch gut so!
Sonst wäre es auch quatsch.. aber manchmal wäre eine direkte Antwort auch super
Sonst wäre es auch quatsch.. aber manchmal wäre eine direkte Antwort auch super
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
BlackJack hatte Dir doch einen feinen, sauberen Ansatz gegeben! Hast Du damit schon experimentiert?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@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?)
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?)
- noisefloor
- User
- Beiträge: 3856
- 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: 3856
- 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.