Marcel Moré demonstrierte eine innovative Methode, um die interne Struktur von FileMaker-Lösungen zu untersuchen. Dabei kombinierte er die FileMaker-Funktion „Kopie speichern als XML“ (Save Copy as XML) mit der Leistungsfähigkeit von DuckDB, um komplexe Abfragen auf die Metadaten einer Lösung auszuführen.

Grenzen herkömmlicher Analyse-Tools

FileMaker bietet mit der XML-Speicherung eine umfassende Strukturbeschreibung, die jedes Detail einer Datei – von Tabellendefinitionen und Feldern bis hin zu Scripts, Layout-Objekten und Custom Functions – in einem standardisierten Format abbildet. Diese XML-Dateien können jedoch bei komplexen Lösungen in Summe sehr groß werden (mehrere hundert Megabyte bis Gigabytes).

Herkömmliche Analyse-Tools sind zwar oft stark bei Standard-Fragestellungen. Bei Sonderfällen kann es jedoch umständlich oder sogar unmöglich sein, sie schnell zu beantworten.

Dazu kommen teils lange Verarbeitungszeiten beim Einlesen neuer XML-Vorlagen und eine steile Lernkurve, um die Funktionen und Workflows der Tools zu beherrschen.

DuckDB als XML-Parser und Objekt-Katalog

Hier setzt Marcels Ansatz an: Durch die Verwendung der DuckDB XML Extension lassen sich die XML-Dateien ganz ohne XSLT direkt in flache Datenbank-Tabellen verwandeln und anschließend direkt per SQL blitzschnell und flexibel abfragen.

Der Workflow umfasst im Wesentlichen drei Schritte:

  1. XML-Erzeugung: In FileMaker wird über den Befehl „Kopie als XML speichern“ der aktuelle Zustand der Lösung exportiert. Wenn das Häkchen „Details für Analysewerkzeuge einschließen“ aktiviert ist, werden auch die Scriptschritte und Formelfelder im Klartext mit exportiert.

  2. Import in DuckDB: Mittels der Funktion read_xml() und den XPath-Funktionen werden die XML-Dateien in DuckDB eingelesen. Über ein vorbereitetes SQL-Template kann DuckDB die hierarchischen Objekt-Kataloge aus dem XML zerlegen und in eine relationale Struktur überführen.

  3. Analyse per SQL: Mit Standard-SQL-Befehlen können die Daten nun gefiltert, aggregiert und durchsucht werden. Hierbei kann DuckDB seine Stärken ausspielen:

  • Ultra-schneller Zugriff auf RAM-basierte Tabellen (um Größenordnungen schneller als Suchabfragen in FileMaker oder anderen Tools)
  • Mächtige SQL-Features wie Sub-Queries (CTEs), Makros, RegEx-Pattern oder Unnesting von JSON-Strukturen
  • Parsing aller Objekt-Referenzen per JOIN auf die UUIDs und Erstellung eines globalen Objekt-Katalogs als Suchindex über alle Objekt-Typen hinweg

Praktische Anwendungsfälle

Marcel zeigte anhand von Praxisbeispielen, welche Fragen sich mit diesem Setup innerhalb von Millisekunden beantworten lassen:

  • Suche nach „Zombie-Feldern“: Identifikation von Feldern, die definiert, aber in keinem Layout und in keinem Script verwendet werden.
  • Abhängigkeitsanalyse: Wo genau wird eine bestimmte globale Variable oder eine spezifische CustomFunction im gesamten System referenziert?
  • Hardcodierte Werte finden: Schnelles Durchsuchen aller Scripts und Formeln nach hardcodierten Pfaden, IP-Adressen oder Textkonstanten, die eigentlich in Konfigurationstabellen gehören.
  • Layout-Inventur: Auflistung aller Layout-Objekte eines bestimmten Typs (z. B. alle Web-Viewer oder Button-Bars) über alle Dateien einer Lösung hinweg.
  • Best-Practice Pattern: Identifikation von Script-Schritt-Abfolgen, welche potenziell die Performance bremsen, um diese zu überarbeiten.

Ausblick

Mit dem FileMaker Objekt-Katalog in DuckDB und den universellen und schnellen Abfragemöglichkeiten per SQL steht eine leistungsfähige Infrastruktur bereit, um weitere Tools und Workflows darauf aufzubauen.

Eine Möglichkeit ist die Bereitstellung von flexiblen SQL-Templates für bestimmte Analyse-Szenarien in Form eines REST-API, auf das andere Tools oder User-Interfaces zugreifen können.

Eine andere spannende Möglichkeit ist der direkte Zugriff von AI Coding Agents wie z.B. „Claude Code“ per CLI auf die DuckDB Datenbank. Claude ist extrem stark bei der Formulierung von Ad-hoc Queries, um bestimmte Fragestellungen aus dem Objekt-Katalog der FileMaker Lösung abzuleiten.

Dies bildet eine solide Grundlage für AI gestützte Entwicklung in einer FileMaker Umgebung, da der AI Agent sich blitzschnell in der Struktur der Lösung orientieren und auch Schlussfolgerungen für die Erzeugung von neuem Code direkt aus den Vorgaben ableiten kann.

Fazit

Die Kombination aus FileMaker SaveAsXML und DuckDB ist ein mächtiges Werkzeug für Entwickler. Hier tun sich – gerade für umfangreiche FileMaker Projekte – neue Möglichkeiten auf, um den Entwickler-Workflow maßgeschneidert zu unterstützen. Mit DuckDB als Open-Source-Werkzeug steht eine der weltweit leistungsfähigsten Daten-Verarbeitungs-Engines zur Verfügung.

Marcel kündigte an, das Projekt öffentlich auf GitHub für andere Entwickler bereit zu stellen, sobald der grundlegende Funktionsumfang abgedeckt ist.