ceggert
I'm new here

Zusammenführen von Daten aus zwei Datenbankschemata

Hallo zusammen,

wir sitzen gerade vor folgendem Problem. Wir haben ein CorporateContent Projekt wo z.B. Kontakte global in einer Datenquelle gepflegt werden. Weiterhin haben wir ein regionale FirstSpirit Projekte, welche die globale Datenquelle lesend einbindet. Hier kommt aber die Anforderung hinzu das diese globalen Kontakte, in den regionalen Projekten erweitert werden sollen.

Auf der Liveseite gibt es sowetwas wie eine Suche über die Kontakte mit einigen Filteroptionen. Hier haben wir z.B. an das FirstSpirit Modul dynamicDatabaseAccess gedacht.

Unser Problem ist jetzt leider nur wie wir die Datensätze aus den beiden Schemata zusammenführen können. Innerhalb von FirstSpirit können wir in der Anzeige ja auch mit zwei ContentSelects auf die unterschiedlichen Datenbank-Schemata zugreifen und diese dann in der Anzeige so zusammenführen. Kommt nun aber die dynamischere Suche auf der Live-Seite mit ins Spiel bekommen wir hier probleme mit dynamicDatabaseAccess hier können zwar mehrere Schemata angegeben werden allerdings kann dann nicht mehr z.B. das Paging sauber genutzt werden, da hier ja die Query eines Schemas ausschlaggeben ist.

Hat dies evtl. jemand schon gemacht und kann uns bei unserem Dankansatz auf die Sprünge helfen?

Viele Grüße,

Christopher Eggert

0 Kudos
3 Replies
marza
I'm new here

Hallo Christopher,

wenn es eine (externe) Datenquelle wäre, könnte man sich eine View errstellen, die z.B. die Daten aus zwei Tabellen zusammenführt.

Kann man das nicht, so muss man sich aus vielen Datenquellen (Datenbanken, HTML-Seiten, PDFs,...) einen gemeinsamen Suchindex aufzubauen. Hier gibt es verschiedene Möglichkeiten:

  1. DB: Falls es mögich wäre, würde ich aus zwei Datenbanken eine dritte befüllen und diese in FirstSpirit als zentralen Suchindex als weitere externe Datenbank einbinden. Eine Aktualisierung dieser dritten Dankenbank muss dann extern oder eventuell per Scripting in FirstSpirit erfolgen. Vorteil wäre aber, dass man mit dynamicDatabaseAccess arbeiten kann wie Du es vorgeschlagen hast.
  2. Java/JSP: Wenn man statisch die Daten per ContentSelect aus zwei Datenquellen in FS zusammenführen kann, so ist das prinzipiell auch in JSPs möglich. Man muss hier dann per JSP-Tag-Libs arbeiten, um zur Laufzeit einen gemeinsamen (sortierten) Suchindex aufzubauen, den man mittels Binärsuche (java.util.Arrays oder java.util.Collections) zugänglich macht. Hier ist aber mit Boardmitteln des JDK nur eine einfache Sortierung nach Name etc. möglich.
  3. JavaScript: Man erstellt sich ein JSON-Dokument als gemeinsamen Suchindex welches per AJAX-Request vom Client abgerufen werden kann (hier helfen z.B. JavaScript-Bibliotheken wie JQuery). Die Suchlogik (Z.b: Binärsuche und Sortierung) muss dann komplett in JavaScript implementiert sein und wird im Browser des Besuchers ausgeführt. Hier muss man gucken, was es so in Netz zu dem Thema gibt (z.B. auf GitHub etc.).
  4. Möchte man mehr (Sortierung nach Relevanz, logische Verknüpfungen, Ähnlichkeitssuche, ...), so kommt man um Technologien wie Apache Lucene oder Apache Solr nicht herum. Hier bietet e-Spirit mit der BasicSearch für einen ersten Einstieg in das Thema ein entsprechendes kostenpflichtiges Modul an. Allerdings kommen hier zu den Lizenzkosten unter Umständen noch Entwicklungskosten für eigene Adapter/Spider für verschiedene Datenquellen hinzu.

Ich hoffe ich konnte Dir eigene Ideen mitgeben. Punkt 2 und 3 eignen sich vermutlich nur für kleine Suchindices mit wenigen 100 Einträgen.

Gruß Marian

0 Kudos

Hallo Christopher,

benötigst du noch weitere Hilfe oder hat die Marians Antwort bereits weiter geholfen?

In diesem Fall wäre es super, wenn du seine "richtige Antwort" entsprechend markierst.

Solltest du eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier bereitstellst.

Viele Grüße

Michaela

0 Kudos
ceggert
I'm new here

Hallo zusammen,

erstmal sorry für die späte Antwort. So richtig glücklich sind wir mit den Lösungen noch nicht. Wir haben uns auch eine Möglichkeit des zusammenführens von den Datenquellen überlegt. Leider gibt es hier immer an irgend einer Stelle eine Einschränkung.

Da wir noch weitere Herausforderungen haben wie z.B. die Sprache die wir auch nicht innerhalb einer Suchergebnisseite mischen wollen haben wir uns bisher für eine fachliche Lösung entschieden, so dass die Suchergebnisse semantisch getrennt dargestellt werden.

Darum sage ich erstmal danke gehen hier aber nochmal an die Spezifikation des Themas.

viele Grüße,

Christopher

0 Kudos