Wie macht man eine Microsoft-Access-Datenbank mit Grails webfähig?

von Peter Soth

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.

Kategorien: Grails

Zurück