Seite 1 von 1
Daten Speicherung von Tabellen
Verfasst: Mittwoch 9. November 2011, 13:36
von Kopflos
Hallo,
ich beschäftige mich nun seit neuestem mit Python und nun auch mit Sqlite und habe dazu folgende fragen. Mein Problem befasst sich mit der Speicherung von Daten. Ich habe eine Funktion f gegeben die aus mehren Parametern p1,...,pn besteht und möchte diese nun auf einem Gitter G wobei jeder Gitterpkt x aus G ein m dim Vektor ist, berechnen.
Dies möchte ich dann gern abspeichern und habe mir dazu folgende beiden Sqlite Tabellen überlegt
1. Simulationstabelle
Simulatinsnr. | p1 | .... | pn | Ergebnistabelle
2. Ergebnistabelle
x1 |... | xm | f(x)
Nun ist mir aber nicht ganz klar wie ich die beiden Tabellen miteinander verknüpfe. Ich müsste doch theoretisch in die Tabelle 2 eine zusätzliche spalte machen in der die Simultnr steht oder? Gibt es vielleicht auch Effiezientere Mglkeiten der Speicherung?
Danke schonmal für hilfe
Re: Daten Speicherung von Tabellen
Verfasst: Mittwoch 9. November 2011, 14:22
von EyDu
Hallo und willkommen im Forum!
Du gehst das Problem schon richtig an. Etwas effizienteres, du möchtest die wahrscheinlich den Speicher für die Schlüssel sparen, ist bei relationalen Datenbanken nicht möglich. Suche mal nach "Fremdschlüssel" oder "foreign key", dort findest du ein paar allgemeinere Hinweise.
Sebastian
Re: Daten Speicherung von Tabellen
Verfasst: Mittwoch 9. November 2011, 14:33
von Hyperion
Man muss sich noch klar machen, ob pn und xn jeweils fixe Länge haben. Wenn diese Parameter unterschiedlich lang sein können, dann ist es nicht sinnvoll diese als Attribute einer Tabelle anzulegen. Dann müsste man die Struktur über zusätzliche Tabellen abbilden...
Re: Daten Speicherung von Tabellen
Verfasst: Mittwoch 9. November 2011, 14:49
von BlackJack
@Kopflos: Was bedeutet denn die Spalte `Ergebnistabelle` in Deiner `Simulationstabelle`? Falls da ein Name einer Tabelle steht und Du vorhast dynamisch Tabellen zu erstellen, dann machst Du etwas was bei relationalen Datenbanken nicht „normal“ ist.
Muss es denn unbedingt eine relationale Datenbank sein? Gitter und Vektoren klingt nach Kandidaten für eine HDF5-Datenbank. Zum Beispiel mit `PyTables`.
Re: Daten Speicherung von Tabellen
Verfasst: Mittwoch 9. November 2011, 21:31
von noisefloor
Hallo,
wenn man p und x als Liste oder Liste von Listen abbilden kann, dann ginge das auch über ein KV-Store wie Redis. Der Key wäre dann eine Kombi aus Simulationsnummer und Ergebnis.
Gruß, noisefloor
Re: Daten Speicherung von Tabellen
Verfasst: Donnerstag 10. November 2011, 08:48
von Kopflos
Danke schonmal für die ganzen Anwtorten, sie haben mich ein Stück weiter gebracht! Also die Anzahl der Parameter pn ist fest. Jedoch ist die Länge des Vektors x unterschiedlich. Deswegen wollte ich auch eine "Verknüpfung" von Ergebnistabelle zu einer ganzen Tabelle und nicht nur zu einer Zeile in Ergebnistabelle. Ich vermute aber mal dass da BlackJack recht hat und dies nicht der sinn einer relationalen Datenbank ist. Ich hab mir dann gestern das PyTables angeschaut und denke dass dies eine gute Lösungsvariante ist.
@noisefloor was meinst du mit "Liste von Listen abbilden?". Ich möchte nicht immer eine ganze Liste einlesen wenn ich nur einen Wert benötige.
Ich bin für weitere ideen weiterehin gerne offen.
Re: Daten Speicherung von Tabellen
Verfasst: Donnerstag 10. November 2011, 12:36
von noisefloor
Hallo,
was meinst du mit "Liste von Listen abbilden?"
Eine verschachtelte Liste, also so was wie
Du kannst, AFAIK, mit Redis auch direkt auf Elemente einer Liste zugreifen, da Redis Listen direkt unterstützt. Somit besteht auch keine Notwendigkeit, die Länge der Liste vorab festzulegen.
Gruß, noisefloor
Re: Daten Speicherung von Tabellen
Verfasst: Donnerstag 10. November 2011, 13:19
von Kopflos
Ja danke das klingt auch nicht schlecht. Das werde ich mir auch noch einmal genauer anschauen.
Ich werde mich nun erstmal zu den Lösungsvorschlägen belesen um mir Vor und Nachteile klar zu machen.
vielen Dank für die schnelle hilfe