Posts Tagged ‘MySQL’

Client-Server-Datenbank

Mittwoch, November 17th, 2010

Startbildschrim des BVASystemsHeute möchte ich die Gelegenheit nutzen, um die Frage zu beantworten, warum ich beim BVASystem auf ein Client-Server-Datenbankmodell gesetzt habe. Bevor ich jetzt aber groß in die Vor- und Nachteile einer Client-Server-Architektur einsteige, möchte ich kurz erklären, was das eigentlich ist.

Was ist ein Client-Server-System?

Wie der Name es sagt, besteht ein Client-Server-System aus 2 Komponenten, dem Client und dem Server. Bei beiden handelt es sich um eigenständige Programme, die in der Regel auf unterschiedlichen Rechnern in einem Netzwerk laufen. Es ist aber auch möglich, das Server und Client auf nur einem Rechner laufen. Der Server hat in der Regel keine eigene Oberfläche. Seine Aufgabe ist es, dem Client bestimmte Funktionen zur Verfügung zu stellen. Der Client ist das Programm, welches der Anwender gut kennen sollte. Der Client nutzt die Funktionen, die der Server zur Verfügung stellt und zeigt die Resultate dieser Funktionen dem Anwender an.

Beim BVASystem ist der Server ein Datenbankmanagementsystem, wie zum Beispiel das während der Entwicklung genutzte  MySQL.  Der Server hat hier die Aufgabe, die Fotos, die der Client dem Server übermittelt, zu speichern und zu einem späteren Zeitpunkt dem Nutzer wieder anzuzeigen. Eigentlich sollte es jetzt bereits klar sein, der Client ist in dem System das Programm, welches ich gerade programmiere.

Welche Vorteile und Nachteile hat ein Client-Server-System?

Für mich ist der größte Vorteil, das ich meine Fotos nur auf einem Server speichern muss. Ich bin im Besitz von mehreren Computern, die ich hier in einem Heimnetzwerk miteinander verbunden habe. Zum einen habe ich einen Standrechner, auf dem ich hier gerade diesen Text schreibe und zum zweiten habe ich einen Notebook, der mich begleitet, wenn ich mal unterwegs bin. Auf dem Standrechner habe ich den MySQL-Server installiert. Sowohl auf Standrechner, als auch auf dem Notebook habe das BVASystem installiert und so eingerichtet, das beide Rechner auf das Serverprogramm des Standrechners zugreifen können.

Ein Nachteil ist es, das auch, wenn man nur von einem Rechner aus seine Fotos verwalten will, man den Datenbankserver installieren muss. Gerade für Nutzer, die nicht so technikaffin sind, könnte es zu Schwierigkeiten in der Administration des Servers kommen. Auch ich hatte schon so meine Schwierigkeiten mit dem MySQL-Server: Server has gone away Weiterhin kann es von Nachteil sein, wenn man mit mehreren Clients auf die Fotos zugreifen will und dafür extra einen Rechner bereitstellen muss auf dem nur der Server läuft.

Ein weiterer Vorteil, für mich als Entwickler ist, das ich mit dem Client-Server-Modell auf standardisierte Server-Komponenten zurückgreifen kann. Damit lässt sich wunderbar, das von mir bereits beschriebene Schichtenmodell umsetzten. Ich muss also weniger Aufwand in die Entwicklung des Systems stecken. Aber auch für den Anwender hat dies einen Vorteil. Wenn ich morgen, aus welchem Grund auch immer, das BVASystem nicht mehr weiterentwickeln würde, dann könnte der Anwender weiterhin mit Service-Programmen, die mit dem Server ausgeliefert werden, auf seine Daten zugreifen und sie in eine Struktur überführen, die andere Programme lesen können.

Als nachteilig empfinde ich es, das die Bilder, die ich in der Datenbank gespeichert habe, nicht so ohne weiteres Bearbeiten kann. Wenn ich von mehreren Rechnern auf die Bilder zugreifen will, so muss ich diese direkt in der Datenbank abspeichern. Zur Bearbeitung muss ich die Bilder also erst aus der Datenbank extrahieren und anschließend wieder neu abspeichern. Um diesen Nachteil auszugleichen, hatte ich damals vor, das BVASystem mit Bildbearbeitungsfunktionen auszustatten. Mittlerweile bin ich davon aber weg gekommen, da dies den Rahmen eines Hobbyprojektes bei weitem sprengen würde.

Eine neue Datenbankstruktur muss her

Dienstag, August 31st, 2010

Wie im letzten Blogeintrag versprochen, sollte die neue Version (die ab jetzt unter Downloads steht) in der Lage sein, in der Datenbankansicht auch Thumbnails anzuzeigen. Da es schon irgendwie blöde wäre, wenn ich die Thumbnails, wie bei den Bildern von der Festplatte, jedes mal neu erzeugen würde, musste eine neue Datenbankstruktur her.

Die neue Datenbankstruktur liegt wieder als MySQL Workbench Datei nach der Installation in dem Installationsverzeichnis. Am sinnvollsten ist es wohl, wenn die Datenbankstruktur mit dem „Forward Engineer…“ neu erzeugt wird. Ich habe selbst versucht, die Struktur mit dem „Synchronize Modell…“ zu aktualisieren, manchmal klappte es, manchmal ging es erst beim zweiten mal ohne Fehler und manchmal ging es gar nicht. Da die ev. vorhandenen Daten von der neuen Version eh nicht mehr gelesen werden können, ist „Forward Engineer…“ sicherlich die einfachere Variante.

Im Programm selber habe ich die Testfunktion zum Speichern von Bildern in der Datenbank an die neue Datenbankstruktur angepasst. Ebenso habe ich das Laden von Datenbankbildern angepasst und um die vorsprochenen Thumbnails erweitert.

Neue Zoomfaktoranzeige

Neue Zoomfaktoranzeige

Da das Wochenende bei mir relativ verregnet war, hatte ich mehr Zeit, um am BVASystem zu programmieren. Um einen relativ alten Eintrag im Bugtracker zu schließen, habe ich mir vorgenommen, dem Nutzer jederzeit Informationen über den aktuellen Zoomfaktor zu geben.  Optisch tat ich mich damit ein wenig schwer, da ich die bisher relativ klare Struktur des Programmes nicht durchbrechen wollte. Herausgekommen ist dabei schlussendlich eine neue Anzeige oberhalb des „großen“ Bildes. Sie setzt sich aus dem Bildnamen und dem aktuellen Zoomfaktor zusammen.

Updatedienstag

Dienstag, August 10th, 2010

Nachdem ein guter Freund so nett war, die Version 2.0.0.2 ausführlich zu testen, standen (und stehen auch immernoch) eine Reihe von Bug-Fixes an. Welche der gemeldeten Fehler und Änderungswünsche erledigt wurden, ist dank des Bugtrackers gut nachvollziehbar.

Eine kurze Erklärung werde ich wohl noch zur Datenbank geben müssen. In der Version 2.0.0.3 ist das erste mal im Setup eine Datei enthalten, mit der sich die BVA-Datenbank erzeugen lässt. Ich habe mich dazu entschieden, die Datenbank vorerst als MySQL Workbench Datei weiterzugeben. Mit dem Tool kann die Datenbankstruktur mit jeder neuen Version die ich liefere aktualisiert werden, ohne das die alten Daten gelöscht werden müssen. Die Datei befindet sich nach der Installation im Unterverzeichnis DB des Installationsverzeichnisses.

Wenn die Datenbankstruktur (Wenn man eine Tabelle als Struktur bezeichnen darf.) richtig erstellt wurde, kann mit dem BVASystem das Speichern eines Bildes ausprobiert werden. Für die nächste Version verspreche ich, das die gespeicherten Bilder dann auch wieder angezeigt werden können.

Edith: Jetzt hab ich doch glatt vergessen darauf hinzuweisen das Version 2.0.0.3, wie immer unter Downloads herruntergeladen werden kann. Wünsche also frohes Fehlersuchen ….

MySQL server has gone away.

Montag, August 2nd, 2010

Gestern abend wollte ich zum ersten mal ein Bild mit dem neuen BVASystem in einer MySQL-Datenbank abspeichern. Eigentlich dachte ich, das dies mittlerweile keine allzu große Hürde sein sollte. Aber ich wurde eines besseren belehrt. Der Server beantwortete mein SQL-Query mit:

MySQL server has gone away.
MySQL Fehler

Zuerst grübelte ich einen Moment darüber nach, wohin mein MySQL Server am Sonntag abend so gehen könnte. Da ich zu keinem Ergebnis kam, fragte ich Google nach der Bedeutung der Fehlermeldung. Ursache für die Fehlermeldung war, das die maximal erlaubte Größe des Querys überschritten gewesen ist.

Zur Behebung des Fehlers musste ich einfach in der Einstellungsdatei „my.ini“ meines MySQL Servers, den Wert von max_allowed_packet vergrößern. Einmal noch schnell den Server neugestartet und schon war der Server zurück von seinem Sonntagsausflug.

Version 2.0.0.2

Mittwoch, Juli 28th, 2010

Wie versprochen steht nun die erste Datenbankversion zum Download bereit. Allerdings kann die Software sich aktuell nur zur Datenbank verbinden. Es werden keinerlei Tabellen gebraucht, da keine Bilder laden und/oder gespeichert werden. An dieser Stelle möchte ich nun aber kurz erläutern wie man die Verbindung zur Datenbank herstellen kann.

In dem Anwendungsdaten-Verzeichnis (C:\Dokumente und Einstellungen\User\Anwendungsdaten\) befindet sich ein Verzeichnis  „BVASystem“.  Dort liegt eine Ini-Datei „BVASystem.ini“, in der die Parameter für die Datenbankverbindung abgelegt werden müssen. Nach der Installation sehen die Parameter für die Datenbankverbindung wie folgt aus:

[DATENBANK]
PROTOKOLL=
DATENBANK=
HOSTNAME=
NUTZER=
PASSWORT=

Diese 5 Werte müssen beispielsweise wie folgt editiert werden.

[DATENBANK]
PROTOKOLL=mysql-5
DATENBANK=bva
HOSTNAME=localhost
NUTZER=<nutzername>
PASSWORT=<passwort>

Das Protokoll muss zwingend „mysql-5“ sein, da nur für eine Datenbankverbindung zu einer MySQL 5.X Datenbank ein Treiber im Setup integriert ist. Die Datenbank „bva“ muss natürlich vorher eingerichtet worden sein, ebenso der Nutzer und das Passwort.

Wenn alles eingestellt wurde, kann im Programm in der Ansicht „Datenbankbaum“ durch den Button „Test: ConnectDB“  die Verbindung getestet werden.