Ansätze für das Datenbankschema-Management oder wie geht Continuous Integration für die Datenbank

Das Problem mit der Datenbank…

Für Anwendungscode ist es inzwischen die normale Vorgehensweise: Codeänderungen werden regelmäßig in einem Nightly Build gebaut, getestet und häufig auch direkt deployt. Das nennt man Continuous Integration (CI). Ziel ist, dass die neue Version der Anwendung in jeder beliebigen Umgebung lauffähig ist. Das ist sie aber nur dann, wenn der Zustand der Datenbank zur Anwendungsversion passt. Wie geht man aber mit Datenbankänderungen um, ohne den Grundgedanken von CI zu verletzen? Und was ist an der Datenbank eigentlich anders als an normalem Programmcode?

Das besondere an Datenbanktabellen ist, dass die in ihnen gespeicherten Daten beim Deployment einer neuen Version erhalten bleiben müssen. Während normaler Programmcode einfach vollständig neu deployt wird, verlangt die Datenbank eine Behandlung, die den Ist-Zustand des Zielsystems berücksichtigt und unter Erhalt der bestehenden Daten nur die notwendigen Änderungen zum Erreichen des Soll-Zustands durchführt. Mit anderen Worten: die Skripte, die ausgeführt werden müssen, hängen vom Zielsystem ab. Mit der Definition des Sollzustands ist es nicht getan, um ans Ziel zu kommen, brauchen wir auch das Delta zwischen Ist und Soll. Und das kann für jedes Zielsystem ein anderes sein.

Die herkömmliche Vorgehensweise

Normalerweise begegnet man dem Problem einfach damit, dass die Migrationsskripte für jedes konkrete Deployment per Hand geschrieben und vor dem Deployment ausgeführt werden. Häufig greift man dabei auf Toolunterstützung, z. B. durch die bekannten Produkte Liquibase oder Flyway zurück. Damit ist es dann möglich, Skripte für verschiedene Zielumgebungen zu verwalten, und nachzuhalten, welche Skripte auf welchen Umgebungen schon gelaufen sind. Abgesehen davon, dass man die Skripte für jede Änderung manuell erstellen muss, hat das Vorgehen noch einen wichtigen Nachteil: der Zustand der Datenbank ergibt sich nur als Summe aller Migrationsskripte. Es gibt keine Dateien in unserem Sourcecode-Repository, die den Zustand der Datenbanktabellen zu einer beliebigen Softwareversion darstellen würden.

Unser Lösungsansatz: CI für die Datenbank

An dieser Stelle tritt unser Framework Orcas auf den Plan. Zunächst ermöglicht es uns, den Zustand von Tabellen in einer Oracle-Datenbank mit einer SQL-ähnlichen Syntax zu beschreiben, wie in folgendem Beispiel.

create table orders
(
   ordr_id number(15) not null,
   version number(15) default “0” not null,
   bpar_id number(15) not null,
   orderdate date not null,
   tracking_number varchar2(20) not null,

   constraint ordr_pk primary key (ordr_id),
   constraint ordr_uc unique (tracking_number),
   constraint ordr_bpar_fk foreign key (bpar_id) references business_partners (bpar_id)
);

Diese Syntax beschreibt einen Zustand, nämlich den gewünschten Sollzustand der Tabelle. Den Rest erledigt nun Orcas für uns indem es das Delta des Ist-Zustands in der Datenbank zu diesem Soll-Zustand ermittelt und dafür ein Migrationsskript generiert. Dieses Migrationsskript überführt die Datenbank unter Erhaltung aller Daten vom Ist-Zustand in den Soll-Zustand. Orcas kann die Skripte direkt ausführen oder auch für ein späteres Deployment im Dateisystem bereitstellen. Damit schließt es die Lücke, die uns noch von CI für die Datenbank trennte. Unser Sourcecode-Repository enthält nun unsere Orcas-Skripte, die wir genau wie normalen Programmcode einer Versionsverwaltung unterziehen können. Um auf einem Zielsystem eine bestimmte Version unserer Software zu installieren, muss nur ein Aufruf von Orcas mit der entsprechenden Version der Tabellenskripte in den Deployment-Prozess integriert werden. Einen Preis müssen wir für diese Vorteile zahlen. Da Orcas auf das Data Dictionary der Oracle Datenbank zugreift um den Ist-Zustand zu ermitteln, sind wir auf die Benutzung von Oracle RDMS eingeschränkt.

Orcas ist bei Github als Open Source veröffentlicht. Jeder ist eingeladen, es zu verwenden und sich an seiner Weiterentwicklung zu beteiligen.

Veröffentlicht unter Agile, Software | Hinterlasse einen Kommentar

Social Media Analytics – Kategorisierung von Textbeiträgen?

Im Zeitalter der sozialen Medien ist es für Unternehmen äußerst interessant, die allgemeine Wahrnehmung von Marken, Produkten oder Personen regelmäßig zu beobachten. Durch die Vielfalt an Meinungen fällt es jedoch in der Regel schwer, zwischen Einzelmeinungen und der generellen Meinung zu unterscheiden. Der hier vorgestellte Ansatz zum „Social Media Monitoring“ schaut genau auf Beiträge großer Plattformen und erkennt durch eine automatisierte Themenzuordnung sofort Schwerpunkte in der Vielfalt an Meinungen. Auf diese Weise gelangt man in die komfortable Lage, Trends frühzeitig erkennen zu können, um jederzeit darauf reagieren zu können. Dies stellt für den Anwender einen klaren Wettbewerbsvorteil dar.

Hintergrund

Angenommen, man interessiert sich dafür, wie eine Marke, eine Person oder ein bekanntes Produkt in der Öffentlichkeit, und damit auch in den sozialen Medien, wahrgenommen und besprochen wird. Also: „Wer schreibt was, und vor allem wo, darüber?“ Unregelmäßige und zufällige Checks sind hierbei wenig zielführend, da sich praktisch jede erdenkliche Meinung an irgendeiner Stelle finden lässt. Wie lässt sich also das Meinungsbild in seiner Gänze einfangen, zusammenfassen und quantifizieren, vielleicht sogar dessen zeitlicher Verlauf beobachten? Hierzu soll im Folgenden sehr kurz eine Lösung präsentiert werden, die den individuellen Wünschen des Anwenders so weit wie möglich entgegenkommt.

Kurzvorstellung des Ansatzes

Die wesentlichen Elemente und Features:

  • entdeckt, was zum Suchbegriff geschrieben wird
  • bewertet die Herkunft des Beitrags
  • klassifiziert die Inhalte automatisiert nach Themen
  • identifiziert die Top-Themen
  • .. und visualisiert die Ergebnisse in Ihrem zeitlichen Verlauf

Auf diese Weise behält man konstant den Überblick über Relevanz und Lokalität von Meinungen und Trends und kann entsprechend frühzeitig gegensteuern.

Methodik

Um zum Ziel zu gelangen, werden gängige Verfahren des Text Mining, wie etwa das Entfernen von Sonderzeichen oder die Wortstammreduzierung, verwendet. Zusätzlich sind verschiedene Gewichtungen zur besseren Relevanz-Bewertung der Wortbausteine in die Lösung integriert. Auf diese Weise entsteht eine auswertbare Datengrundlage. Das Ganze wurde in R konzipiert und geschrieben.

Aufbereitung und Analyse

Die Ergebnisse zum Suchbegriff werden zur besseren Übersicht in einer Word-Cloud grafisch aufbereitet. Auf diese Weise so erscheinen die häufigsten Begriffe in Relation am größten. Weitere Schritte sind nun für eine automatisierte Themen-Zuordnung notwendig. Dies wird – vereinfacht dargestellt – über Worthäufigkeiten und den Abstand einzelner Wörter zueinander erreicht. So kann man über mathematische Verfahren, wie Zerlegung in Hauptkomponenten und Clusterzuordnung, bestimmte Themenblöcke extrahieren, um zu sehen, in welchem unterschiedlichen Kontext die Suchbegriffe genannt werden. Die Folge sind Unter-Themen zum Suchbegriff, die auf logische Themen-Einheiten zusammengefasst werden. Beispielsweise lässt sich häufig eine Unterscheidung in News, Werbung und individuelle User-Meinungen (positiv/ negativ) beobachten, die im Einzelnen und je nach Suchbegriff weiter logisch unterteilt werden können.

Der Mehrwert

Führt man die oben beschriebenen Arbeitsschritte beispielsweise mehrmals am Tag durch und integriert die Ergebnisse in die jeweiligen Reportings, so lassen sich frühzeitig Trends, Phänomene, aber auch Feedback zu Produkten oder Unternehmensstrategien beobachten. Ein rechtzeitiges Handeln oder Gegensteuern kann durch diese Impulse initiiert werden, was dem Unternehmen Geld und Aufwand erspart, denn es gilt: hat sich der Image-Schaden durch negative Presse, aber auch durch ein Nicht-Gegensteuern erst einmal in den sozialen Medien etabliert, ist dies nur schwer wieder rückgängig zu machen.

Veröffentlicht unter Analytics, Big Data | Verschlagwortet mit , | Hinterlasse einen Kommentar

VirutalBox Image not starting up

I often have the situation that I get a pre-installed VirtualBox image with some new Oracle stuff to test. Sometimes these images don’t start with this error message:

“This kernel requires an x86-64 CPU, but only detected an i686 CPU. Unable to boot – please use a kernel appropriate for your CPU”

The solution here is not to “Enable Intel VT-x/AMD-V from BIOS”. But this is a necessary option, too.

The solution is to change the setting of the vm before starting and switch it from e.g. “Ubuntu 32bit” to “Ubuntu 64bit”.

Veröffentlicht unter Uncategorized | Verschlagwortet mit | Hinterlasse einen Kommentar

Webinare: Salesforce und SAP verbinden – Integrationsplattform in der Cloud oder On-Premise

Auch in Deutschland gewinnt das Thema Cloud an Fahrt. Zunehmend werden Softwarepakete als SaaS-Lösungen gleich in der Cloud angeschafft, weil die Vorteile, sich nicht um den Betrieb kümmern zu müssen und die damit einhergehende Flexibilität, starke Treiber sind nicht nur in der IT, auch in den Fachbereichen. Diese SaaS-Systeme müssen mit der bestehenden Anwendungslandschaft integriert werden: schnell, übersichtlich, qualitativ hochwertig und wartungsoptimal. Dieses Webinar stellt Möglichkeiten und Architekturen vor, wie eine Integration mit Cloudsystemen aussehen kann und diskutiert auch gleich die Frage, ob die passende Integrationsplattform dann nicht auch in der Cloud stehen sollte. iPaaS ist hier das magische neue Buzzword: Integration Platform as a Service. Wir zeigen an einem Livebeispiel, wie sich Salesforce als Cloudsystem und SAP als typische On-Premise Installation für den Anwendungsfall des Ordermanagements miteinander verbinden lassen.

Es wird zwei unterschiedliche Webinare geben, einmal mit der Oracle BPM Suite 12c/ SOA Suite 12c als Plattform, am 31.7.2015, von 10:00-11:00 Uhr: www.opitz-consulting.com/webinar-sap-salesforce-integration-mit-oracle

Und einmal auf Basis der Talend-Plattform, am 4.8.2015, von 10:00 bis 11:00 Uhr: www.opitz-consulting.com/webinar-sap-salesforce-integration-mit-talend

Veröffentlicht unter Uncategorized | Hinterlasse einen Kommentar

WSO2-based integration at MPK Cracow: Project case study

This article describes a project case study of delivering a custom portal solution for MPK Kraków – the main transport services provider in city of Cracow, Poland.

Apart from describing project genesis, system’s functionality and key benefits, it focuses on the role of WSO2-based integration platform in the system’s architecture.

Weiterlesen

Veröffentlicht unter Architecture, English, General | Hinterlasse einen Kommentar

OPITZ CONSULTING Polska becomes the first local Partner of WSO2 in Poland

Partnership brings together expertise of OPITZ CONSULTING Polska, leading project specialist for individual IT solutions, with WSO2’s comprehensive open source enterprise middleware platform.

Weiterlesen

Veröffentlicht unter English, News, SOA | Hinterlasse einen Kommentar

Camunda BPM 7.3 Release Webinar

Mit dem Webinar vom 02.06.15 zum aktuellen Release wurden die Feature Highlights mit Hilfe von verschiedenen Live Demos präsentiert. Dazu gehörten die aus den Camunda News bekannten Neuerungen, wie

  • Konfigurierbare Autorisierungen für Zugriffe auf Prozesse, Aufgaben und Prozessinstanzen
  • Live-Anpassung laufender Prozessinstanzen, z.B. um im Prozess vor- oder zurückzuspringen
  • Start neuer Prozessinstanzen an einer beliebigen Stelle im Prozessmodell
  • Nachvollziehbarkeit aller durchgeführten Jobs mit dem “Historic Job Log”
  • Mächtige Suchfunktionen für Prozessinstanzen im Cockpit
  • Anpassbarkeit der Tasklist über zusätzliche und eigene Plugins (analog zum Cockpit)

Wir möchten mit diesem Blog-Eintrag unsere Gedanken zu den vorstellten Neuerungen wiedergeben.

Live-Anpassungen laufender Prozessinstanzen

Mit diesem Feature ist es möglich die laufende Prozessinstanz eines komplexen Geschäftsprozesses, per drag and drop, in einen beliebigen Vorgang (Aktivität, HumanTask, ServiceTask) zu verschieben und dort in einen anderen Zustand zu überführen. Da dieses Vorgehen keinerlei Validierung und Überprüfung unterliegt, sei unserer Meinung nach ein umsichtiger Einsatz empfohlen.

Konfigurierbare Autorisierungen für Zugriffe auf Prozesse, Aufgaben und Prozessinstanzen

Mit dem Release 7.3 führt Camunda ein Rollenmanagement ein mit dem es möglich ist autorisierte Zugriffe zu verwalten. Die Rollen können im Camunda Cockpit definiert und mit Rechten ausgestattet werden. So können beispielsweise die Angehörigen bestimmter Benutzergruppen nur bestimmte Geschäftsprozesse sehen, starten oder verändern können. Mittels der differenzierten Rechtevergabe ist es des Weiteren möglich die Verwendung von Live-Anpassungen laufender Prozessinstanzen optimal zu steuern.

Start neuer Prozessinstanzen an einer beliebigen Stelle im Prozessmodell

Über das Cockpit UI können Geschäftsprozesse durch den Anwender an einem beliebigen Vorgang(Aktivität, HumanTask, ServiceTask) gestartet und mit Variablen befüllt werden. Diese Möglichkeit des variablen Prozesseinstiegs kann ebenfalls über die Java API genutzt werden.

 

Additional

Zu dem wurden mögliche Erweiterungen für die Arbeit mit Camunda BPM 7.3 vorgestellt. Dazu gehörten der Camunda plugin store und bpmn.io.

Camunda plugin store

Der plugin store bietet jedem Anwender die Möglichkeit sein eigenes Plugin zu implementieren und mit der Community zu teilen oder existierende Plugins in seinem Cockpit zu integrieren. Eines der besonders herausgestellten Plugins, ist die Heatmap. Dieses Plugin bildet die Häufigkeit der Prozessdurchläufe grafisch in einer Heatmap ab und wurde durch Mitarbeiter von Opitz Consulting bereitgestellt.

bpmn.io

Bpmn.io ist ein Browser basierter HTML 5 Modeller der den BPMN 2.0 Standard entspricht. Dieses Tool wird vollumfänglich mit der Version 7.4 eingeführt und stellt das Pendant zum Signavio Process Editor dar. Die in bpmn.io erstellten Modelle können ins Cockpit bzw. in die Ecplise IDE importiert werden.

 

Next Steps

Nach dem Webinar fokussieren wir uns jetzt darauf, wie sich die präsentierten Features im Cockpit und in der IDE integrieren und handhaben lassen. Besonders interessant werden dabei die ersten praktischen Erfahrungen im Umgang mit der konfigurierbaren Autorisierung von Zugriffen sowie des variablen Prozesseinstieges.

Veröffentlicht unter Uncategorized | Hinterlasse einen Kommentar