Daten Speicherung von Tabellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Kopflos
User
Beiträge: 8
Registriert: Mittwoch 9. November 2011, 11:40

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
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`.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Kopflos
User
Beiträge: 8
Registriert: Mittwoch 9. November 2011, 11:40

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.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
was meinst du mit "Liste von Listen abbilden?"
Eine verschachtelte Liste, also so was wie

Code: Alles auswählen

[[1,2],[3,4]]
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
Kopflos
User
Beiträge: 8
Registriert: Mittwoch 9. November 2011, 11:40

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
Antworten