Wie macht man eine Microsoft-Access-Datenbank mit Grails webfähig?
Update 19.08.2020 :
Wir fügen diesem Artikel ein kleines Update hinzu, um zu zeigen, dass dieses Thema immer noch aktuell ist. In einem derzeitigen Projekt konnten wir unseren Kunden gleich von Anfang an überzeugen, die Softwareanwendung direkt als web-basierte Lösung umzusetzen. In diesem Fall benutzen wir nicht Grails, sondern Java mit Spring Boot auf der Google Cloud Plattform. Unser Kunde ist mit seiner Softwareanwendung ausgesprochen zufrieden und auch gut für die Zukunft aufgestellt, so sollen nächstes Jahr Lieferanten über eine Online-Schnittstelle integriert werden. Dies wäre mit Microsoft Access nicht möglich gewesen. Rufen Sie uns einfach an, sofern Sie Fragen in diese Richtung haben. Ein erstes Beratungsgespräch ist natürlich kostenlos.
Ursprünglicher Artikel :
In einer aktuellen Kundensituation wurden wir angefragt, ob es machbar sei, eine Microsoft-Access-Datenbank mit Hilfe von Grails in eine Web-Applikation zu migrieren. Wir setzen seit Jahren das Grails-Framework erfolgreich ein und einigten uns mit dem Kunden darauf, dies im Rahmen eines Proof-Of-Concepts zu beweisen.
Migration von Microsft-Access nach Microsoft SQL-Server
Die Northwind-Access-Datenbank benutzten wir für unseren Test. Leider ist diese aktuell als .mdb-Datei äußerst schwer zu finden. Als SQL-Skript kann man sie bspw. von hier [1] heruntergeladen. Wir wurden schließlich doch noch fündig [2]. Der MDB-Viewer [3] eignet sich, um die Tabellen anzuschauen. Es ist indes besser, die MS-Access Runtime inkl. Viewer zu installieren [4]. Für den Import der MS-Acess-Db gibt es verschiedene Tools. Hierbei ist darauf zu achten, dass die Relationen (Kardinalitäten) zwischen den Tabellen mit importiert werden. Hierfür bietet sich der Microsoft SQL Server Migration Assistant for Access an. Diesen haben wir nicht mehr auf der Microsoft-Homepage gefunden, jedoch hier [5]. Der Import-Prozess ist selbsterklärend. Das Bild unten zeigt das Datenbank-Schema im SQL Server.
Reverse-Engineering der Grails-Applikation
Die Grails Applikation wurde mit dem Grails Database Reverse Engineering Plugin von Burt Beckwith [6] migriert. Der benötigte JDBC-Treiber (sqljdbc4.jar), der in das Grails- Lib-Verzeichnis kopiert werden muss, findest sich hier [7]. Das gesamte Grails-Projekt findet sich zu Lernzwecken auf unserem Github-Repository [8]. Dort ist es möglich nachzuschauen, welche Werte in der BuildConfig.groovy, Config.groovy und DataSource.groovy gesetzt wurden.
Das Bild unten zeigt das Grails-Domain-Modell. Es sieht analog zu obigem ER-Modell aus.
Folgendes sollte bei der Migration beachtet werden:
- Leerzeichen aus Tabellennamen entfernen
- Alle Attribute in Kleinbuchstaben wandeln
- Umwandlung von Serializable in String
- M:N Relationen müssen potentiell manuell aufgelöst werden
- Die Tabellenspalten werden durch das Grails-Scaffolding zufällig ausgewählt und können später angepasst werden
- Etwaige Business-Logic, die in MS-Access implementiert wurde kann nicht automatisch migriert werden
Fazit
Das Bild unten zeigt die MS-Access-Northwind-Datenbank im Original und darunter die migrierte Grails Applikation.
Mit dem Plugin ist es ausgesprochen einfach, eine Microsoft-Access-Datenbank in eine Grails-Applikation zu wandeln. Obige Screenshots zeigen meines Erachtens sehr ausdrucksstark das gelungene Ergebnis.
Links
[1] http://northwinddatabase.codeplex.com/
[2] https://courseconference.wikispaces.com/file/detail/Northwind.mdb
[3] http://download.cnet.com/MDB-Viewer-Plus/3000-10254_4-75285626.html
[4] http://www.microsoft.com/de-de/download/details.aspx?id=10910
[5] http://microsoft-sql-server-migration-assistant.software.informer.com/
[6] http://grails-plugins.github.io/grails-db-reverse-engineer/
[7] http://www.microsoft.com/de-de/download/details.aspx?id=11774
[8] https://github.com/exensio/northwind