Skip to content

Pimcore: Der Data Director in Version 2.5.0 ist da

 

pimcore Data Director 2.5.0 Das erste Data Director Update nach dem Launch von Pimcore X liefert den Usern des Export- und Import-Bundles wieder eine Reihe von Verbesserungen und Neuerungen.

Erfahren Sie detailliert, welche Neuerungen unsere Entwickler in der neuesten Version des Data Directors vorgenommen haben und von welchen Verbesserungen Sie mit Version 2.5.0 profitieren können:

Pimcore 10-Kompatibilität

Version 2.5.0 ist voll kompatibel mit Pimcore 10 – mit der kleinen Einschränkung, dass nicht alle verwendeten Bibliotheken mit PHP 8 kompatibel sind. Für Pimcore 10 müssen Sie derzeit den Data Director via Composer mit --ignore-platform-reqs installieren. Wir arbeiten aber an der PHP 8-Kompatibilität – auch in Hinsicht auf die verwendeten Bibliotheken.

Grid-gefilterte Exporte

Es ist nun möglich, die Grid-Ansicht (Ordneransicht) zum Filtern zu verwenden und anschließend die darin ausgewählten Objekte zu exportieren. Auf diese Weise können Sie ad-hoc gefilterte Exporte durchführen, ohne eine SQL-Bedingung eingeben zu müssen. Um den Export zu starten, gibt es im Dropdown-Menü der Schaltfläche „CSV-Export“ eine neue Option „Data Director Export“.

Neue Option "Data Director Export" im Dropdown-Menü der Schaltfläche "CSV-Export"

Im folgenden modalen Fenster können Sie den Dataport auswählen, der für den Export verwendet werden soll (es werden nur kompatible Exporte für die ausgewählte Grid-Datenobjektklasse angezeigt).

Dataport für den Export auswählen

Refactoring der (automatischen) Exporte für API-Nutzung

Bisher wurden Rohdaten für automatische Exporte für jede zuvor ausgeführte SQL-Bedingung aktualisiert. Dies führte zu einer schlechten Performance beim Speichern von Objekten. Dies wurde komplett refaktorisiert: Bei automatischen Exporten werden die Rohdaten jetzt nur noch für die konfigurierte Dataport-SQL-Bedingung (und für jede Sprache) aktualisiert. Die aktualisierten Rohdaten werden dann auch für die zuvor ausgeführten SQL-Bedingungen verwendet (sodass die Exportdaten bereits vorbereitet sind, wenn ein Export mit dieser SQL-Bedingung erneut ausgeführt wird). Auf diese Weise müssen die Rohdaten nur einmal extrahiert werden (für jede Sprache) und nicht immer wieder für alle benutzerdefinierten SQL-Bedingungen.

Auch für die API-Nutzung wichtig: Die SQL-Bedingung aus dem Query-Parameter von REST-API-Aufrufen für Pimcore-basierte Dataports erweitert nun die SQL-Bedingung in den Dataport-Einstellungen, statt sie zu überschreiben, damit die Datenport-Bedingung nicht einfach zu  umgehen sind (um z.B. keine unveröffentlichten Objekte abrufen zu können).

Der Zugriff auf Pimcore-Elemente per REST-API ist nun nur noch möglich, wenn der anfragende Benutzer eine View-Berechtigung für die betreffenden Elemente hat.  

Bei inkrementellen Exporten wird der Änderungszeitstempel des letzten erfolgreichen Exports gemerkt (in den Objekteigenschaften, analog zu Importen). Wenn der Export für dieses Objekt erneut ausgelöst wird, wird sein aktueller Änderungszeitstempel (inkl. potentiell vererbter Felder) mit dieser Eigenschaft verglichen, und wenn der aktuelle Änderungszeitstempel nicht aktueller ist, werden die Rohdaten des Objekts nicht erneut extrahiert, also nicht exportiert. Dadurch kann auch ein automatischer inkrementeller Export für alle potentiell geänderten Objekte auf einmal durchgeführt werden (war vorher auf Prozesse von Einzelobjektexporten aufgeteilt).

Data Director 2.5.0: Leistungsoptimierungen

  • Warteschlangen von automatischen Datenports werden nun parallel abgearbeitet. Dadurch wird sichergestellt, dass ein Datenport mit nur wenigen Commands in der Warteschlange nicht auf die Abarbeitung der Warteschlangen anderer Datenports warten muss.
  • Wiederverwendung von Rohdaten, wenn es bereits ein Rohdatenelement mit aktuellem Hash gibt, das dasselbe Änderungsdatum hat wie das aktuelle Objekt.
  • Wenn relationale Felder als Schlüsselfelder für Importe verwendet werden, werden die zugehörigen Objekt-IDs vorher aufgelöst, um eine Abfrage wie "WHERE relationalField LIKE '%,123,%'" zu vermeiden – stattdessen wird nun die viel schnellere Abfrage in der Form "o_id IN (345,13,58)" ausgeführt.
    • die gleiche Optimierung wird auch für die SQL-Bedingung von Pimcore-basierten Datenports vorgenommen.
  • Unnötige Locks im Pimcore-Parser wurden entfernt.
  • Behoben: Data-Query-Selektoren wurden doppelt ausgewertet, wenn sie kein Concrete Object zurückgeben.
  • Relations-Cache wird nun auch für Data-Query-Selektoren, die Daten aus dem abgefragten Objekt zurückgeben, verwendet.
  • 600% Performance-Steigerung für Importe in Bildergalerien/(erweiterte) Many-to-many-Relations-Asset-Zuordnung-Importe.
  • Bei der Prüfung auf Veränderung eines Objektes während eines Imports werden die Felder zuerst danach sortiert, ob sie gemappt sind oder nicht. So werden zuerst in der Attributzuordnung gemappte Felder geprüft, weil es wahrscheinlicher ist, dass ihre Werte geändert wurden als die von nicht gemappten Feldern.

Extraktion von Rohdaten

  • Option zum Überspringen der Versionierung für Asset-Importe hinzugefügt.
  • Unterstützung von Glob-Ausdrücken in Kombination mit Asset-Ordnern als Import-Ressource, z.B. /import/*.csv, wenn /import ein Pimcore-Asset-Ordner ist.

Attribut-Zuordnung

  • Index wird empfohlen, wenn Callback-Funktion Data-Query-Selektor verwendet wird.
  • History-Panel nicht automatisch neu laden, wenn Dataport-Durchläufe gefiltert (durchsucht) werden oder wenn aktuell nicht Seite 1 angezeigt wird -> einfacheres Suchen nach einem bestimmten Durchlauf.
  • Vorlage für das Hinzufügen von Metadaten zu Assets hinzugefügt.

Historie und Import-Panel

  • SQL-Bedingungsfeld wird automatisch fokussiert, wenn Pimcore-basierte Dataports vom Pimcore-Backend aus manuell gestartet werden.
  • SQL-Bedingung von vorheriger Ausführung beibehalten, um denselben Import/Export einfacher mehrfach ausführen zu können (z.B. beim Einrichten/Testen von Dataports).

Weitere Änderungen in Version 2.5.0

  • Erweiterte Many-to-many-Beziehung werden als Schlüsselfeld unterstützt (wird anders in der Datenbank gespeichert als (erweiterte) Many-to-many-Objektbeziehung).
  • Spalte "fieldNo" vergrößert, damit 3-stellige Zahlen nicht abgeschnitten werden.
  • Callback-Funktionsvorlage hinzufügen, um absolute Asset-/Thumbnail-URL zu generieren.
  • Bugfix: Vererbung optimieren: effizientere Überprüfung für übergeordnete Objekte, ob Werte tatsächlich geändert wurden, bevor sie gespeichert werden.
  • Genauerer Feldwertvergleich bei der Prüfung auf Veränderung eines Objektes durch einen Import, damit eine Änderung von 0 auf '' erkannt wird
  • Elementtyp und Klassenname im Serializer für relationale Felder werden bereitgestellt.
  • Bugfix: überlappende Importe: bereits verarbeitete Rohdatenelemente werden nicht mehr erneut verarbeitet.
  • Verwendung eines fehlertoleranten JSON-Decoders, um bei fehlerhafter Zeichensatz-Codierung des Importdokumentes nicht den gesamten Import abzubrechen.
  • Bugfix: Attribut-Zuordnungsvorschau übersah konfigurierten Asset-Quellordner (tatsächlicher Import funktionierte korrekt).
  • Verhinderung der Mehrfachzuordnung desselben Assets zur Bildergalerie und Many-to-Many-Relation.
  • Verhinderung von mehreren parallelen Anfragen zum Aktualisieren des History-Panels.
  • Bugfix: Bei Verwendung eines relativen Ordnerpfads als Import-Ressource funktioniert jetzt das Löschen der Asset-Datei nach dem Import (wenn mit --rm aufgerufen).
  • Bei Importen mit --force wird nicht mehr geprüft, ob das Element gerade für die Bearbeitung gesperrt ist.
  • Schnelleres Ein- und Ausblenden von Spalten bei der Suche im Dataport-Vorschaufenster.
  • Bugfix: Starten von Exporten durch Rechtsklick auf ein Objekt im Objektbaum wieder möglich.
  • Bugfix: Rohdatenimport wird das korrekte Logger-Objekt zugewiesen und Logs erscheinen in den Importlaufprotokollen.
  • Verwendung von application_logs-Tabelle (falls im Data Director verwendet), um schlechtesten Log-Level zu finden.
  • Maximale Laufzeit bei der Suche in den Protokollen des History-Panels vermeidet einen Timeout, auch wenn einige Elemente gefunden worden sind.
  • Benutzer, die Importe starten, werden in den Versionen hinterlegt; ermöglicht bessere Nachvollziehbarkeit von Änderungen.
  • Bugfix: Excel-Import mit Spaltenindex repariert.
  • Rohdaten von aktuell exportierten Dataport-Ressourcen werden nicht mehr gelöscht.
  • Manuell hochgeladene Daten werden Default-Datenport-Ressource zugeordnet.
  • Es wird kein Stack-Trace zu Versionen in die Datenbank geschrieben.
  • Benutzerdefinierte Logik wird verwendet, um Bildergalerie-Felder auf Änderungen zu vergleichen.
  • Bestehende Meta-Spalten-Daten für erweiterte Many-to-many-Beziehungen von Assets werden beibehalten.
  • Pimcore-Dokumente, die dem URL-Pfad für REST-API-Anfragen entsprechen, werden nicht mehr geladen.
  • Unterstützung für Like-Suche (Wildcard-Suche) mit Data Query Selector hinzugefügt.
  • Unterstützung für das Hinzufügen von Elementen zu Multiselect-Feldern (statt immer alle Optionen zur Auswahl bereitzustellen), funktioniert jetzt genauso wie bei Relationen, Bildergalerien und anderen Feldern mit Mehrfachbelegung (bisher wurden die gesetzten Optionen immer überschrieben).
  • Bugfix: bei überlappenden Importen werden nun alle Rohdaten verarbeitet.
  • Datenport-Läufe werden als „abgebrochen“ markiert, wenn eine nicht abgefangene Exception auftritt oder der Prozess abgebrochen wird – manuell über CLI oder automatisch durch Betriebssystem.
  • Unterstützung des Zugriffs auf lokalisierte Felder in der SQL-Bedingung von Pimcore-basierten Dataports, z. B. name#de='abc'.
  • Unterstützung des Zugriffs auf Objekt-Brick-Felder in der SQL-Bedingung von Pimcore-basierten Datenports, z. B. brickName.fieldName=123.
  • Bugfix: Variable $params['rawItemData'] Vorschau im Attribut-Mapping für komplexe Daten.
  • Bugfix: Demo-Daten für komplexe XML-Daten.
  • Bugfix: XML-Parsing: mehrwertige Attribute lieferten [] für Kindknoten ohne Wert.
  • INSERT ... IN DUPLICATE KEY für Queue-Items statt REPLACE INTO, damit  aktuell bearbeitete Queue-Items nicht gelöscht werden.
  • Unterstützung des Zugriffs auf Elementfelder von ObjectMetadata-, ElementMetadata-, Hotspotimage-Objekten ohne Hinzufügen von "element:" zum Data-Query-Selektor.
  • Bugfix: Serializer für Dokumente (für Pimcore 4-Dokumentenstruktur).
  • Vorhandene Assets für Bildergalerien/Many-to-Many-Relationen etc. werden nur dann über MD5-Hash erkannt, wenn die Dateien lokal gespeichert sind.
  • Warnung, wenn keine Schlüsselfelder angegeben wurden.
  • Unterstützung des Aufrufs von Serviceklassen-Methoden aus einem Data-Query-Selektor, z. B. "field:@service_name::method"
  • API-Schlüssel/erlaubte Dataports anderer Benutzer werden nur noch Admins angezeigt.
  • Bugfix: Felder in der Datenport-Konfiguration sind nicht mehr gesperrt, wenn ein neuer Dataport von einem Nicht-Admin-Benutzer erstellt wird.
  • Fehler bei der Generierung der Auto-Vervollständigungs-SQL-Bedingung wird verhindert.
  • Spezialfeld "__updated" für datei- und URL-basierte Dataport-Typen hinzugefügt.
  • Verwendung der Sprache des Pimcore-Benutzers für Exporte, wenn nicht explizit eine Sprache angegeben wurde.
  • Unterstützung der Syntax '' / "" (virtuelle Felder mit Anführungszeichen), um Callback-Funktionen besser in umformatierende IDEs kopieren zu können, ohne dass der Code durcheinander gerät.
  • Feldsammlungen werden besser serialisiert.
  • Null-Werte werden in Serialisierer aufgenommen.
  • Hinzufügen der Methode Importer::translate() zum Aufrufen von DeepL/AWS Translate Übersetzungen für komplexe Feldwerte (z.B. Übersetzung von Feldsammlungen).
  • Änderungsprüfung für Feldsammlungen mit lokalisierten Feldern funktioniert nun.
  • Unterstützung des Exports aller zugewiesenen Bricks mit dem Data Director "brickFieldContainer" der Quelldatenklasse.

Mehr Infos zur neuen Version des Data Directors sowie eine detaillierten Versionshistorie finden Sie auf GitHub.

Für weitere Infos, Detailfragen oder eine Beratung rund um das Data Director Bundle wenden Sie sich gerne jederzeit an David Gottschalk.

Kommentare: