Herzlich willkommen auf dem Blog der exensio GmbH

exensio ist ein unabhängiges Software-Unternehmen von erfahrenen IT Beratern und Architekten. Zu unseren Kunden zählen namhafte deutsche Großunternehmen.

exensio verbessert das Kommunikations- und Informationsmanagement von Unternehmen. Auf Basis sinnvoller und zweckmäßiger Technologien erarbeiten wir flexible und übergreifende Lösungen für webbasierte Informationssysteme. Abhängig von den Kundenanforderungen realisieren wir Web Applikationen sowie Lösungen auf Basis von Web Content Management- und Portalsystemen. Integrativ, wirtschaftlich und anwenderfreundlich!

Hier gelangen Sie zur exensio GmbH.

Montag, 19. Mai 2014

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

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

Keine Kommentare:

Kommentar veröffentlichen