SOA Suite Datenbank „demystified“

Werbung
SOA Suite Datenbank „demystified“
Markus Lohn
esentri AG
Ettlingen
Schlüsselworte
Fusion Middleware, SOA Suite
Einleitung
Die Datenbank als essentieller Bestandteil der Oracle SOA Suite wird in vielen Projekten unterschätzt
oder nicht ausreichend berücksichtigt. Wenn die Auswirkungen auf die Datenbank jedoch frühzeitig
beim Design von Composites beachtet werden, können viele Probleme vermieden werden.
In diesem Vortrag werden zunächst die grundsätzliche Mechanismen und das Zusammenspiel
Datenbank und SOA Suite erläutert. Ferner werden Best Practices aus verschiedenen Projekten
erläutert, die in jedem Projekt berücksichtigt werden sollten.
Oracle SOA Suite Architektur
Oracle SOA Suite bündelt verschiedene Komponenten zu einer Infrastruktur. Somit werden Daten
auch in unterschiedlichen Datenbanken verwaltet.
Abbildung 1 Oracle SOA Suite Infrastruktur
Zu jeder SOA Suite Installation gehören minimal die Datenbanken SOAINFRA und MDS. In
SOAINFRA werden alle Runtime-Daten zu Composite Instanzen verwaltet. Im MDS werden die
Konfigurationseinstellungen und SCA Composites selbst gespeichert.
Repository Creation Utility (RCU)
Generell werden alle notwendigen Datenbanken einer Fusion Middleware Installation mit dem RCU
erstellt. Somit wird auch die SOA-Datenbank (und alle Schemata) mit dem RCU erzeugt. Das RCU
wird ab Version 12c mit dem FMW-Package „Infrastructure“ ausgeliefert. Ferner ist erlaubt das RCU
ab Version 12c die Erstellung von SQL-Skripten zum Erstellen der Datenbanken. Das vereinfacht die
Zusammenarbeit mit den DBA’s in der Zukunft erheblich.
Abbildung 2 Repository Creation Utility für Oracle SOA Suite
Metadata Services Repository (MDS)
MDS stellt eine zentrale Infrastruktur für das Management von Konfigurationsdaten für Applikationen
zur Verfügung. MDS wird generell von allen Fusion Middleware Produkten, z. B. WebCenter, BPM
Suite, Web Services, ADF, etc. verwendet.
Oracle SOA Suite verwendet das MDS zum einen für die Speicherung von jeglichen
Konfigurationseinstellungen, z. B. Partitionen (siehe Datei folders.xml). Zum anderen für die zentrale
Ablage und Verteilung von SCA Composites. Zu beachten ist, dass alle Dateien eines Composites in
das MDS gespeichert werden. Prinzipiell erfolgt auch die Verteilung auf verschiedene Cluster-Knoten
über das MDS (in Verbindung mit Coherence).
Das MDS Repository kann in einem Dateisystem oder der Datenbank verwaltet werden. Das MDS
Repository in der Datenbank bietet mehr Funktionen, z. B. Versionierung, im Vergleich zur dateibasierten Variante.
In der Entwicklung hat sich die Strategie „Continuous Integration“ durchgesetzt und somit werden
sehr häufig Deployments durchgeführt. In Verbindung mit der SOA Suite und MDS kann das zu
einem Engpass im Tablespace für das MDS führen. Ursache ist die Versionierung von Artefakten
innerhalb des MDS. Oftmals ist es sinnvoll vorher ein Undeployment durchzuführen. In diesem Fall
werden auch alle Versionen eines Composites im MDS entfernt.
Mit dem folgenden SQL-Befehl kann die Anzahl von Versionen für gleiche SCA Composites
innerhalb des MDS festgestellt werden.
SELECT path_fullname, path_type
FROM mds_paths
WHERE path_fullname like '/deployedcomposites/default/RegisterUserProfileService_%/composite.xml'
SOAINFRA
Im Schema SOAINFRA werden die Runtime-Daten zu allen Komponenten, z. B. BPEL, Mediator,
Human Workflow, etc. gespeichert. Im Vergleich zu Version 11g hat sich das Schema in der Version
12c um fast 200 Tabellen vergrößert. Die Anzahl der neuen Tabellen verringert sich ein wenig, wenn
man die SOA Core Extension nicht installiert. Ferner wurde die Struktur der Infrastruktur-Tabellen
komplett erneuert. In der nachfolgenden Abbildung ist die Struktur und die Abhängigkeiten der
Tabellen dargestellt. In der zentralen Tabelle SCA_FLOW_INSTANCE wird für jede Composite
Instance ein neuer Datensatz angelegt. Primary Key für eine Instanz ist die sog. Flow Id (Spalte ID).
Neu ist auch die Verwaltung von SOA Partition’s innerhalb der Datenbank (SCA_PARTITION).
Bisher wurde das ausschließlich im MDS (folders.xml) gespeichert. SCA_ENTITY speichert die
Metadaten zu allen Komponenten eines Composites. Ferner ist in dieser Tabelle auch das sog. MDS
Label (Spalte LABEL) hinterlegt. Es dient zur Identifikation eines Composites im MDS.
SCA_ENTITY
SCA_META_DATA
SCA_ATTACHMENT_REF
SCA_PARTITION
SCA_FLOW_INSTANCE
SCA_COMMON_FAULT
SCA_FLOW_ASSOC
SCA_SENSOR_VALUE
SCA_REJECTED_MESSAGE
Abbildung 3 12c SOA Infrastructure Tabellen
Die Tabellen der Komponente BPEL sind auch in Version 12c weitestgehend stabil geblieben. Die
zentrale Tabelle ist CUBE_INSTANCE. Wichtige Tabellen sind ferner CUBE_SCOPE und
XML_DOCUMENT. In CUBE_SCOPE werden alle definierten Scope’s und alle Variablen-Inhalte
eines BPEL-Prozesses gespeichert.
AUDIT_TRAIL
AUDIT_DETAILS
NATIVE_CORRELATION
HEADERS_PROPERTIES
WORK_ITEM
DLV_SUBSCRIPTION
CUBE_INSTANCE
WI_FAULT
DOCUMENT_CI_REF
XML_DOCUMENT
CI_INDEXES
AG_INSTANCE
CUBE_SCOPE
DLV_MESSAGE
DOCUMENT_DLV
_MSG_REF
Abbildung 4 BPEL Tabellen
Ein BPEL-Prozess hat immer mind. einen Scope. Beim Design von BPEL-Prozessen muss deshalb auf
die Anzahl und Variablen in einem Scope geachtet werden. Überdies ist die Tabelle
XML_DOCUMENT in Bezug auf das Wachstum zu überwachen. In dieser Tabelle werden VariablenInhalte und Payloads gespeichert, die eine bestimmte Schwellwert-Größe überschritten haben. Dieser
Wert ist über den Enterprise Manager konfigurierbar (Large Document Treshhold).
Zu jeder Composite Instance werden Audit-Informationen in SOAINFRA gespeichert. Wann und wie
viele Audit-Informationen geschrieben werden, kann sehr detailliert konfiguriert werden. In
Abhängigkeit von den fachlichen Anforderungen, kann das Audit abgeschaltet oder in verschiedenen
Modi betrieben werden. Zusätzlich kann die Konfiguration auf alle oder ausgewählte SCA Composites
angewandt werden. Beispielsweise wird man bei einer prozess-orientierten Lösung voraussichtlich
mehr Audit-Informationen benötigen im Vergleich zu einem fachlich orientierten synchronen Business
Service.
In Untersuchungen konnte festgestellt werden, dass bis zu 40% Datenwachstum in SOAINFRA
gespart werden können, wenn der Audit-Level auf Production konfiguriert wurde.
Löschstrategie
Die Kontrolle des Datenwachstums ist eine wichtige Aufgabe in jedem SOA Suite Projekt. Eine
Archivierungs- und Löschstrategie ist deshalb unverzichtbar und muss frühzeitig im Projekt erarbeitet
werden. Bereits im SCA Composite Design können wichtige Aspekte berücksichtigt werden.
Beispielsweise sollten fachliche Anwendungsdaten, die in einem Prozess zur Verarbeitung
herangezogen werden, immer in der Fachdatenbank gespeichert werden. Somit ist sichergestellt, dass
die Runtime-Daten eines Prozesses jederzeit gelöscht werden können und keine Abhängigkeiten zur
Prozess-Engine entstehen.
Die technische Umsetzung einer Löschstrategie kann auf vielfältige Arten durchgeführt werden.
Folgende Varianten sind für die SOA Suite vorgesehen:
• Purge Scripts
• Database Partitioning (+ Purge Scripts)
• Enterprise Manager
• TRS Script (Table-Recreate-Script)
• Infrastructure Management API (Java)
• Truncate Script (Empfehlung: Nur in der Entwicklung oder beim Wechsel der Umgebung
nutzen!)
Oracle verwaltet Datendateien in Segmenten, Extents und Daten Blöcken. Bei vielen Löschaktivitäten
sind die Auswirkungen auf die Speicherstrukturen zu analysieren und ggf. regelmäßige Optimierungen
notwendig.
Fazit
Die Datenbank kann in einem SOA Suite Projekt nicht als „Black-Box“ betrachtet werden. Sie ist ein
wichtiger Bestandteil und benötigt deshalb auch entsprechende Beachtung! Unabhängig wie viele
Daten in der SOA Suite verarbeitet werden müssen, ein erfahrener DBA muss in jedem SOA Suite
Projekt als fester Bestandteil im Projektteam integriert sein. Bereits früh im Design von SCA
Composites können eine Menge Aspekte hinsichtlich Laufzeitverhalten und Einfluss auf das
Datenwachstum berücksichtigt werden. Frühzeitig ist die Erstellung und Überwachung einer
Löschstrategie erforderlich. Die Durchführung von Last- und Performancetest sind ein wichtiges
Instrument, um das Design und die Löschstrategie frühzeitig zu verifizieren und ggf. anzupassen.
Somit bleiben dem SOA Suite Betreiber in der Zukunft böse Überraschungen im Betrieb erspart.
Referenzen:
• Main Tables Used by the BPEL Engine (Doc ID 376002.1)
• SOA 11G Database Growth Management Strategy (Doc ID 1404605.1)
• Purge Scripts Master Note - Oracle SOA Suite 11g
• How to Reclaim Disk Space after Purging a SOA Infrastructure or BPEL Database (Doc ID
1387722.1)
• https://docs.oracle.com/middleware/1213/soasuite/administer/soa-database-manageplan.htm#SOAAG97777
Kontaktadresse:
Markus Lohn
esentri AG
Pforzheimer Str. 132
D-76275 Ettlingen
Telefon:
Fax:
E-Mail
Internet:
+49 (0) 7243 354900
+49 (0) 7243 3549099
[email protected]
www.esentri.com
Herunterladen