Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Umfangreiche Datenbank-Inhalte in Drupal 8 einbinden

Eingetragen von JanTo (9)
am 05.04.2016 - 10:54 Uhr in
  • Allgemeines zu Drupal
  • Drupal 8.x

Hallo Forum,
ich möchte ein Projekt mit Drupal 8 angehen. Dabei sollen Daten aus einer großen SQL-Datenbank (PostgreSQL) auf einer durch Drupal generierten Webseite präsentiert werden. Die Datenbank hat 300 Tabellen, mehr als 1000 Felder und entsprechend mehr als 100.000 Einträge.
In alten Vor-CMS-Zeiten hätte ich mich hingesetzt, hunderte passende SQL-Abfragen geschrieben und die Daten in die per Skript erzeugten Seiten eingepasst. Für Drupal wird es elegantere Wege geben.
Wie würdet Ihr das Ganze mit Drupal 8 angehen? Welche Module würdet Ihr nutzen? Ich bin für jeden Hinweis dankbar, da ich bei meiner Recherche bisher wenig gefunden habe, insbesondere nicht zur aktuellen Drupal-Version.

Vielen Dank
Jan

‹ Wie die Überschrift einer einfachen Seite zentrieren? Adminastrations Seite Verschieben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Naja, so einfach ist das nicht

Eingetragen von ronald (3857)
am 05.04.2016 - 17:25 Uhr

Es kommt auf die Struktur der Daten an, was damit bezweckt werden soll, und wie die Daten zukünftig gepflegt werden sollen.

Ohne eine saubere Analyse ist es schwierig bis unmöglich, eine Strategie zur Verwendung oder dem Import zu entwickeln.

Wenn du Erfahrung mit relationalen Strukturen hast, und in Drupal einigermaßen sattelfest bist, bekommst du das hin.

Ob du Module benötigst, und wenn ja welche, hängt sehr stark von der Datenstruktur und deren Verwendung ab.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Antwort

Eingetragen von JanTo (9)
am 05.04.2016 - 21:07 Uhr

Hallo Ronald,
bei der Struktur relationaler Daten sehe ich nicht so den Spielraum. Sie sind normalisiert und es gibt ca. 300 Fremdschlüssel. Um genau zu sein, sie sind in Boyce-Codd-Normalform.
Der Zweck ist die einfache Repräsentation der Daten: Es sollen die Inhalte der Mastertabelle mit den Daten der Detailtabellen auf einer Seite abgebildet werden.
Die zukünftige Pflege ist eine gute Frage: Mein Wunsch wäre die weitere eigenständige Pflege der Datenbank und regelmäßige (halb-)automatisiertes Einspielen der Daten ins CMS.

  • Anmelden oder Registrieren um Kommentare zu schreiben

ob dann ein CMS der richtige Ansatz ist?

Eingetragen von ronald (3857)
am 05.04.2016 - 21:48 Uhr

CMSe haben eigene Datenstrukturen.

Wenn es um bestehende Daten geht, die lediglich zur Anzeige gebracht werden sollen, aber extern gepflegt werden, ist ein CMS meiner Ansicht nach nicht der richtige Ansatz.

Hier bietet sich dann eher ein individuelles Zugriffsmodell, das mit Templates getrieben wird, an.

Dazu muss man allerdings die Datenstrukturen kennen, die angezeigt werden sollen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, also wenn Du ein

Eingetragen von Hyp1 (1463)
am 06.04.2016 - 09:13 Uhr

Hallo,

also wenn Du ein solches vorgegebenes Datenmodel hast,
dann nimm besser ein Framework wie Yii oder Symfony.
Mit diesen kannst Du Applikationen bauen, die auf einem relationenlen Datenmodel
basieren.
Mit Drupal wirst Du da nicht glücklich.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich würde hier ein eigenes Frontend für die Datenbank basteln

Eingetragen von ronald (3857)
am 06.04.2016 - 10:12 Uhr

nimm das Framework und die Templatengine, die du am besten kennst, oder suche dir jemanden, der etwas davon versteht.

Eine bestehende Struktur in ein bestehendes CMS zu zwingen, ist schwierig, und macht nicht glücklich, insbesondere, wenn die bestehende Struktur weiterhin bestehen bleiben muss.

Eine Migration ist nur dann sinnvoll, wenn sie das Altsystem ablösen soll.

Aber auch dann ist eine umfangreiche Analyse und genaue Migrationsplanung unumgänglich.

Drupal ist zwar fast eine eierlegende Wollmilchsau, aber man muss es nicht mit aller Gewalt an die Wand zu fahren versuchen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich verstehe Euren Punkt nicht so ganz

Eingetragen von JanTo (9)
am 06.04.2016 - 17:03 Uhr

Danke für Eure Antworten. Ich glaube aber, entweder sind sie zu unkonkret, als dass ich sie nachvollziehen könnte oder wir reden aneinander vorbei.

Vielleicht könntet Ihr mir konkret die folgenden Fragen beantworten:
* Warum ist eine Templateengine wie Symfony eine gute Wahl, das Symfony-basierte Drupal 8 aber eine schlechte? Was kann ich mit Symfony machen und mit Drupal nicht. Bietet Drupal nicht auch im Grunde eine Templateengine?
* Ich hatte geschrieben

Zitat:

Der Zweck ist die einfache Repräsentation der Daten: Es sollen die Inhalte der Mastertabelle mit den Daten der Detailtabellen auf einer Seite abgebildet werden.

D. h. es werden entsprechende Seitentemplates erstellt, in die an unterschiedlichen Stellen Daten eingespielt werden. Diese Daten werden in PostgreSQL per SQL-View zusammengestellt und können entweder direkt von dort geholt werden (wenn Drupal das anbietet) oder erst automatisiert in Drupal eingespielt und dann abgebildet werden. Es geht also nicht darum, "eine bestehende Struktur in ein bestehendes CMS zu zwingen" oder um ein "vorgegebenes Datenmodel". Es gibt vorhandene Inhalte, die ich beliebig per SQL zusammenstellen kann und und nach meinen Vorstellungen ausgeben möchte. Der einzige Unterschied zur üblichen Drupal-Nutzung, besteht darin, dass ich die Daten nicht direkt in Drupal eingebe, sondern importiere. Ist so etwas in Drupal 8 tatsächlich nicht vorgesehen?

PS. Es gibt auch darüber hinaus Gründe für mich, Drupal zu nehmen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein CMS, egal welches, hat bereits Strukturen und Funktionen

Eingetragen von ronald (3857)
am 06.04.2016 - 18:20 Uhr

es handelt sich also um eine Anwendung, auch wenn Drupal sehr offen ist, und in vielen Bereichen eher ein Framework ist.

Wenn du jedoch "nur" Daten mit fremdartiger (aus Drupalsicht) Struktur darstellen möchtest, und auch die zukünftige Pflege in einem Fremdsystem weitergeführt werden soll, nutzt du so gut wie nichts vom CMS, musst aber einige Klimmzüge machen, um innerhalb dieses deine Darstellung hineinzubasteln.

Deshalb ist es sinnvoller, gleich eine Anwendung mit der bestehenden Datenstruktur zu bauen, und auf den Overhead eines CMS zu verzichten.

Willst du aber ein CMS, das nur so nebenbei externe Daten darstellen soll, ist die Sichtweise eine andere.

Dann musst du ein paar Klimmzüge in Form eigener Module basteln, um die externen Daten anzeigen zu können, der Rest steht aber schon.

Das geht aber aus deiner Anfrage nicht hervor.

Einiges an Arbeit kostet es in jedem Falle. Vor Allem zunächst einmal ein schlüssiges Konzept.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Symfony ist mehr als eine Template-Engine

Eingetragen von C_Logemann (912)
am 06.04.2016 - 18:27 Uhr

Symfony is ein PHP Framework, das zu großen Teilen in Drupal 8 integriert wurde. Vor allem wurde dessen Template-Engine "Twig" übernommen.

Wenn es nur um die Darstellung und evtl. Durchsuchbarkeit der Inhalte einer fremden Datenbank geht, die weiterhin mit einer anderen Anwendung gepflegt werden sollen, dann hilft evtl. folgender Ansatz.
Man gebe Drupal lesenden Zugriff auf diese Datenbank und schreibe ein Modul, daß die Daten wie gewünscht ausliest und darstellt. Ohne eigenes Custom-Modul wird es dann wohl nicht gehen.
Man kann eigene Entitäten in der Drupal-DB schaffen, um die Daten zum Teil zu verknüpfen. Das ist insbesondere hilfreich, wenn man einfachen Zugriff mit anderen Drupal.Technolgie z.B. mit Search API schaffen möchte.
Gewonnen hat man dann auf jeden Fall die Drupal Theme-Engine, Caching-Technologien inkl. dem aktuellen Bigpipe Ansatz und bei Bedarf eine Benutzer-Verwaltung usw.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Richtig, die Frage ist, was man will

Eingetragen von ronald (3857)
am 06.04.2016 - 19:06 Uhr

will man nur eine Oberfläche für eine externe Datenbank, ist Drupal ein Overkill.
Der Aufwand für die Einbindung der Darstellung dürfte nahezu identisch zu dem Aufwand zur Erstellung eines Darstellungsprogrammes sein.

Deshlab muss Drupal der Mehrwert sein. Drupal als Templatemachine ist nämlich auch verkehrt ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank, das hilft mir alles schon sehr viel weiter

Eingetragen von JanTo (9)
am 07.04.2016 - 08:59 Uhr

Danke, jetzt sehe ich klarer.
Ein paar Fragen stellen sich mir noch:

1) Zwar basiert Drupal auf Symfony, zum Anzeigen dieser Seiten programmiere ich aber ein Custom Module. Komme ich dabei mit Symfony in Kontakt, sprich wird die Darstellung als Twig-Template generiert oder wird Symfony in Drupal8 nur intern genutzt?
2) So wie ich es verstehe, muss ich für jede Template-Seite ein eigenes Custom Modul schreiben, richtig? Wenn ich also aus meinen Daten eine Seite person (mit zusätzlichen Adress- und Berufsangaben) generieren möchte, ist das ein Custom Modul; eine Seite auto (mit Fahrzeugtyp und Farbe etc.) wäre ein weiteres?
3) Wenn man OO-PHP ordentlich beherrscht, dann sind Custom Modules für meine Zwecke aber kein großer Aufwand, oder? Ich möchte ja nur Daten auf der Seite platzieren. Zumindest suggerieren das die Einsteigertutorials, die ich gelesen habe.
4)

Zitat:

Man kann eigene Entitäten in der Drupal-DB schaffen, um die Daten zum Teil zu verknüpfen.

Was meint hier "zum Teil"? Ist eine komplette Verknüpfung nicht sinnvoll bzw. nicht praktikabel?
5) Wenn ich Dinge benötige wie eine Benutzerverwaltung, umfangreiche Suchfunktionen, vielfältige Feedback-Formulare etc. dann könnte ich mir das sicherlich auch irgendwie in Symfony basteln, aber Drupal dürfte dann doch komfortabler und vor allem wartbarer sein, oder?

Danke für Eure Hilfe!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi nochmal,bei diesen

Eingetragen von Hyp1 (1463)
am 07.04.2016 - 09:35 Uhr

Hi nochmal,

bei diesen Vorgaben:
Relationale Datenbank,über 300 Tabellen 100'000 Einträge

Zitat:

bei der Struktur relationaler Daten sehe ich nicht so den Spielraum. Sie sind normalisiert und es gibt ca. 300 Fremdschlüssel. Um genau zu sein, sie sind in Boyce-Codd-Normalform.

Ich gehe davon aus, dass Du schon von der DB her die relationale Integrität wahren möchtest (InnoDB + foreign key constraints, evtl. Transactions?).
Da fährst Du besser mit einem Framework wie Yii oder Symfony.
Yii kann aus den Tabellen gleich MVC Klassen generieren.
Symfony2 generiert Model und Controller Klassen, Views musst Du selber machen.
Von Drupal rate ich für Deine Vorgaben leider ab.

Gruss

Robert

PS:
Sorry, hab ich erst später gesehen:
Wenn es Dir nur um die Anzeige der Daten geht, kannst Du das natürlich auch in Drupal machen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du musst nicht für jedes Template ein Modul erzeugen

Eingetragen von ronald (3857)
am 07.04.2016 - 10:17 Uhr

das ist quark.

Module sind für Funktionalität, die Drupal selbst nicht, oder nicht in der benötigten Weise bietet.

Templates sind für die Darstellung von Inhalten.

Views sind für die Datenselektion (mit Einfluß auf die Darstellung)

Wenn man mit Drupal sauber arbeitet, hat man eine klare Trennung zwischen Inhalten und deren Darstellung.

Gleiche Inhalte können unterschiedlich dargestellt werden, oder die gleiche Darstellung kann für unterschiedliche Daten verwendet werden.

So, jetzt habe ich dich vollends verwirrt.

Je nachdem, was in diesen Tabellen hinterlegt ist, und wie darauf zugegriffen werden soll, ergeben sich Lösungsansätze.

Datenbanken mit 1 Mio. Records sind problemlos, wenn die Strukturen bekannt sind, und der Verwendungszweck klar definiert ist.

Du kannst auch auf die Originaldatenbank zugreifen, wenn die dafür ein einsprechendes Zugriffsmodul schreibst, oder diese als mySQL-DB vorliegt.

Mit Drupal ist nichts unmöglich. Es kann jedoch Arbeit machen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es muss nicht unbedingt MySQL/MariaDB sein

Eingetragen von C_Logemann (912)
am 07.04.2016 - 11:06 Uhr
ronald schrieb

Du kannst auch auf die Originaldatenbank zugreifen, wenn die dafür ein einsprechendes Zugriffsmodul schreibst, oder diese als mySQL-DB vorliegt.

Mit Postgres (wie in diesem Fall) und noch ein paar anderen Datenbanken kann Drupal auch umgehen. Da es hier aber weniger Nutzer und Entwickler in der Community gibt, findet man entsprechend weniger Unterstützung.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Woche 3 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 4 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 1 Tag
  • Hey danke
    vor 9 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 8 Stunden
  • Da scheint die Terminologie
    vor 10 Wochen 11 Stunden
  • Kannst doch auch alles direkt
    vor 10 Wochen 4 Tagen
  • In der entsprechenden View
    vor 10 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 10 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250236
Registrierte User: 20463

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 22 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association