MySQL: Klassen in einer Datenbank speichern ...
-
Hallo Zusammen,
ich will demnächst die Daten von einigen Klassen in einer Datenbank
speichern.Der klassische Ansatz für jeden Eigenschaft ein Feld anlegen gefällt mir
irgendwie nicht mehr, da ich bei Änderungen der Klassen automatisch immer
gleich die DB Struktur ändern muss.Ein Ansatz wäre hier jetzt ein BLOB Field zu nehmen und die Daten dort hinein zu streamen.
Blöd ist nur bei diesem Ansatz, das ich keine Query über die Daten machen kann. Ich müsste minimum die Schlüsselfelder anlegen. Aber auch hier ist das durchsuchen später stark eingeschränkt.
Gibt es hierfür bereits Lösungsansätze die meinen Gedanken weiterverfolgt haben und funktionieren.
Link oder Stichwort wäre schon hilfreich
Oder kann man ähnlich wie einen Stream << Operator auch bei einer Datenbank benutzen ? Dann könnte ich das in der Klasse unterbringen.
Gruss
-
Du könntest mal schauen ob dir XML als Ansatz hilft. Als XML serialisieren und entsprechend anfragen. Ich weiß nicht ob es eine mysql-Erweiterung gibt die solche serialiserten Dokumente in einem text/blob-field speichert und entsprechende XML-Queries erlaubt. Zur Not, wenn es nicht soviele Objekte sind könnte man sie auch in den Client laden und dort entsprechend anfragen. Kann leider nur nebulös sprechen da ich das selber noch nicht gemacht habe.
-
Ritchie schrieb:
Ein Ansatz wäre hier jetzt ein BLOB Field zu nehmen und die Daten dort hinein zu streamen.
Das ist eine sehr schlechte Idee. Damit würde die DB ja sämtliche Vorteile verlieren und Du wärst auch noch langsamer, als wenn Du Deine Daten einfach direkt auf eine Platte schiebst. Komplizierter ist es obendrein.
Wozu genau willst Du denn die Daten in einer relationalen Datenbank halten? Welche Vorteile erhoffst Du Dir davon? Um welche Art von Daten handelt es sich?
-
Hallo nman,
mir sind die Nachteil generell bekannt. Ich habe bis jetzt immer die Daten in "normalen" Feldern entsprechend den Datentypen vorgehalten.
Eine Suche über querys ist hierbei kein Problem, jedoch wenn man Datentypen anpasst oder erweitert, muss dies in der Datenbank nachgezogen werden.
Man Ansatz lag darin, ob es für die Problematik mittlerweile eine Lösung gibt.
Wie mir scheint, kommt man/frau um diese Vorgehensweise immer noch nicht herum.
Ich dachte einfach, das sich auch in der Datenbankprogrammierung hier etwas getan hat und wollte/will die neuen Vorgehensweisen, wenn vorhanden, in mein Programm einfliessen lassen.
Die Daten sind für z.b. historische Aufzeichnung von Messwerten, Ereignissen und Parametern.
Gruss
-
In welcher Sprache ist dein Programm den geschrieben?
Normalerweise verwendet man für solch einen Fall einen Objekt relationalen Mapper. Die können normalerweise auch bei einer änderung an deinen Klassen die dazugehörigen create table statements erzeugen. Für C# ist NHibernate ziemlich verbreitet.
-
Dafür brauchst Du nicht unbedingt einen Persistenzlayer in Deinem Objektsystem, das klingt für mich auch stark nach ORM samt entsprechenden Migrations.
Die von Dir geschilderte Lösung bedarf erstmal eines maßgeschneiderten Problems, wobei mir gerade nichts passendes einfällt.
-
Hi,
das ganze schreibe ich unter C++ mit QT 4.5 unter Kubuntu.
Die Schlagworte muss ich mir erst anlesen, bevor ich darauf antworte
Gruss
-
Hallo Zusammen,
da mir die entsprechenen Werkzeuge für eine MySQL Datenbank fehlen, werde ich es wohl auf die übliche Art machen. (Habe sie jedenfalls nicht gefunden).
Trotzdem vielen Dank für die Schlagwörter, da kann ich mich später noch weiter einlesen.
Gruss
-
mit qt kann man doch meines wissens schön mvc verwenden oder nicht?
-
PRIEST schrieb:
mit qt kann man doch meines wissens schön mvc verwenden oder nicht?
Geht wunderbar, daran mußte ich auch denken.
K.a. was der Ritchie da treibt ...
-
Hi,
ich habe das die Funktionen der objektorientierten Ansteuerung zum Schreiben in eine Datenbank bezogen. (ORM) http://en.wikipedia.org/wiki/Object-relational_mapping
Die Klasse Update auf Feldebene klappt mit QT prima. Sowohl auf MySQL als auch auf anderen Datenbanken.
Gruss
-
Das kann natürlich jetzt jeder behaupten. ^^
Dein Posting sagte eher aus, dass du ein komplettes Objekt als einen Datensatz in eine Datenbankt schreiben willst.... oder so ähnlich, aufjeden fall ziemlich wirr :p
-
Hallo Priest,
wenn DU das so ist, stimmt das natürlich.
Ich wollte eigentlich von Ansatz her ganze Klassen in der Datenbank speichern,
welches sich dann als ORM herausgestellt hat.Klar ist mir jedoch, das es für mich noch zu früh ist, diesen Ansatz weiter zu verfolgen.
Gruss
P.S.: Das Internet ist für solche Sachen immer gut. Du kannst alles behaupten. Ich könnte ja auch eine 80 Jahre alte Oma sein, welche keine Ahnung von c++ hat. Oder einfacher gesagt Ich habe keine Ahnung von c++
-
ja und unter ganze klassen in eine db speichern konnte sich glaube ich bisher keiner etwas vorstellen.