Hallo,
wir haben hier ein etwas kniffliges Problem betreffend Datenaustausch zweier Applikationen über 3 Mysql-Datenbanken. Das eine ist ein klassisches LAMP-System, das andere ein proprietäres 4D CRM System. Unter hoher Last gibt es immer Probleme mit dem Benutzen der Datenbanken. Die Gründe liegen an der Empfindlichekeit des CRM-Systems seiner DB-Schnittstelle. Darum suchen wir nun nach einer neuen Lösung für den Datenaustausch. Das CRM ist uns auf den Leib geschrieben und nicht austauschbar. Aufgrund der sensiblen Daten, wollen wir komplett verhindern, das ein System Zugriff auf die Datenbank des anderen Systems hat.
Mir schwebt da ein Webservice mit SOAP im Kopfe rum, der als Vermittlerinstanz das ganze sicher steuert und eine komplette Trennung der Datenbasen beider Systeme sicherstellt. Diverse Transaktionsmechanismen, Fallbacklösungen können das Ganze relativ sicher machen. XML als Datenformat stellt die Integrität der Daten von sich aus sicher. Wie der Vermittler dann genau mit den Daten verfährt ist flexibel festlegbar.
Was gibt es aber noch für mögliche Lösungen? Datenbanken in zwei Richtungen zu replizieren halte ich nicht für eine gute Idee. Ich brauche nur ein paar Ansätze und einen Anhaltspunkt, wie stabil unter hoher Last das ganze zu erwarten ist. Zeitkritisch ist das Ganze nicht, soll aber viele parallele Anfragen bearbeiten können.
Danke schon mal für eure Ideen!
Mit freundlichen Grüßen
Jens Puruckherr
On Sat, Aug 31, 2002 at 02:19:31PM +0200, Jens Puruckherr wrote:
Hallo,
wir haben hier ein etwas kniffliges Problem betreffend Datenaustausch zweier Applikationen über 3 Mysql-Datenbanken. Das eine ist ein klassisches LAMP-System, das andere ein proprietäres 4D CRM System.
Wofür wird die dritte Datenbank verwendet?
Unter hoher Last gibt es immer Probleme mit dem Benutzen der Datenbanken. Die Gründe liegen an der Empfindlichekeit des CRM-Systems seiner DB-Schnittstelle. Darum suchen wir nun nach einer neuen Lösung für den Datenaustausch. Das CRM ist uns auf den Leib geschrieben und nicht austauschbar. Aufgrund der sensiblen Daten, wollen wir komplett verhindern, das ein System Zugriff auf die Datenbank des anderen Systems hat.
Welchen Zugriff hast du auf die Datenbanken? Kannst du dich direkt mit dem MySQL Port verbinden?
Mir schwebt da ein Webservice mit SOAP im Kopfe rum, der als Vermittlerinstanz das ganze sicher steuert und eine komplette Trennung der Datenbasen beider Systeme sicherstellt.
Ich habe noch nicht mit Soap gearbeitet, aber dafür mit XML-RPC. Das ist einiges einfacher als Soap und wird auch von mehr Programmiersprachen unterstützt. Die XML-RPC Spezifikationn kannst du dir innerhalb von ein paar Minuten durchlesen. Soap ist einiges komplexer.
Hast du die Quellen zu den Systemen? Ich würde erst einmal schauen warum so viel Last erzeugt wird. Vielleicht reicht es für eine bestimmte Spalte einen Index anzulegen.
Vielleicht reicht es ja auch die Systeme nur Nachts zu syncronisieren, so dass sie tagsüber jeweils mit den eigenen Daten arbeiten können.
[cut]
XML als Datenformat stellt die Integrität der Daten von sich aus sicher.
Obige Aussage ist sehr vage. Da die Daten aus und in einer relationale DB sollen hast du auf jedenfall das Problem, dass Zeichenketten nicht beliebig lang sein können.
Was gibt es aber noch für mögliche Lösungen? Datenbanken in zwei Richtungen zu replizieren halte ich nicht für eine gute Idee. Ich brauche nur ein paar Ansätze und einen Anhaltspunkt, wie stabil unter hoher Last das ganze zu erwarten ist.
Ich hoffe ein paar Ansätze ware dabei!
thomas
Hallo,
erst einmal Entschuldiung, wenn meine Mail total defotmiert daherkommt. Ich muss hier auf Arbeit eine Software nutzen (Firstclass), die mit den elemtaren Dingen nicht zurechtkommt. Mein Admin bietet mir keine Alternativen an.
Wofür wird die dritte Datenbank verwendet?
Wir haben es schon so aufgeteilt, das möglichts nicht beide Apps schreibend auf eine Datenbank zugreifen müssen. Die dritte DB enthält Kreditkartendaten, die schon auf einem extra Rechnr liegt. In den anderen DB's liegen einmal die Bestelldaten vom Webshop, die das CRM abholt und in einer DB liegen die Daten vom CRM für den Webshop (Freie Kundennummern, Gutscheine...)
Welchen Zugriff hast du auf die Datenbanken? Kannst du dich direkt mit dem MySQL Port verbinden?
Ja, es wird direkt mit der DB kommuniziert. Die Schnittstelle vom CRM ist aber sowas von grausam und dumm, da gibt es immer wieder Probleme. Sie ist z.B. extrem abhängig von globalen DB-Werten, hält Connections ewig offen und merkt nicht, wenn eine Connection nicht mehr da ist - Schrott. Leider proprietär (4D-Erweiterung) und nicht so leicht zu ersetzen.
Ich habe noch nicht mit Soap gearbeitet, aber dafür mit XML-RPC. Das ist einiges einfacher als Soap und wird auch von mehr Programmiersprachen unterstützt. Die XML-RPC Spezifikationn kannst du dir innerhalb von ein paar Minuten durchlesen. Soap ist einiges komplexer.
Hast du die Quellen zu den Systemen? Ich würde erst einmal schauen warum so viel Last erzeugt wird. Vielleicht reicht es für eine bestimmte Spalte einen Index anzulegen.
Sorry, nein. Quellen for Eyes only. Ausserdem bin ich nicht in der Position dies zu entscheiden. Die Datenbank ist aber schon bis zum Limit optimiert, der Admin ist recht fähig. Die Hohe Last tritt z.B. durch das oben beschriebene Verhalten des CRM auf. Lässt Connenctions offen und merkt das nicht. Der Shop auf der anderen Seite bekommt dadurch Probleme. Die Last auf der Maschine steigt und alles wird Zähe. Einmal ist das System mit der KreditkartenDB ausgefallen. Für die normale Arbeit eigentlich kein großen Problem, aber das CRM gab dadurch seinen Geist auf und der Shop wartete sich halbtot, bis er zur DB durchkam.
Vielleicht reicht es ja auch die Systeme nur Nachts zu syncronisieren, so dass sie tagsüber jeweils mit den eigenen Daten arbeiten können.
Nö, geht ja nicht. Bestellungen müssen laufend bearbeitet werden.
XML als Datenformat stellt die Integrität der Daten von sich aus sicher.
Obige Aussage ist sehr vage. Da die Daten aus und in einer relationale DB sollen hast du auf jedenfall das Problem, dass Zeichenketten nicht beliebig lang sein können.
Ja, ist klar. Lange Zeichenketten werden nicht gebraucht.
Mittlerweile sind wir noch auf den Buisiness-Connektor von SAP gestossen. Der ist zwar auch nur ein XML-Dingens, das hat aber den Vorteil, dass der Shop veielleicht mal direkt mit unserm ERP kommunizieren kann, und nicht den wackligen Umweg übers CRM machen muss. Aber ich sehe schon, viele Möglichkeiten gibt es da nicht, wenn man die Datenbank einmal rauslässt.
Jens
lug-dd@mailman.schlittermann.de