>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
TypeScript

Eine relationale Datenbank in vertrauten Tabellenkalkulationen

Irgendwann steht jeder Entwickler vor der Situation, dass das Unternehmen oder die Geschäftsführung eine benutzerfreundliche Oberfläche für die Arbeit mit Daten benötigt. Meistens sind die Optionen begrenzt. Entweder部署 wir ein umständliches Admin-Panel wie Django Admin oder Forest Admin, oder übergeben alles an Google Sheets, wo innerhalb einer Woche Formeln brechen, Datentypen vermischt werden und das Verknüpfen zweier Tabellen über einen Fremdschlüssel zum Albtraum wird.

Vor einiger Zeit bin ich auf grist-core gestoßen — eine Open-Source-Engine, die zwei völlig unterschiedliche Welten zu verbinden versucht: relationale Datenbanken und flexible Tabellenkalkulationen.

https://github.com/user-attachments/assets/fe152f60-3d15-4b11-8cb2-05731a90d273

Unter der Haube

Schaut man unter die Haube, ähnelt Grist überhaupt nicht den üblichen Excel-Klonen. In klassischen Tabellenkalkulationen existiert jede Zelle für sich allein: Eine Zeile in einer Spalte könnte eine Zahl enthalten, die nächste einen String, und darunter eine Formel. In Grist sind Spalten strikt typisiert und funktionieren wie Felder in SQL-Tabellen.

Gleichzeitig ist jedes Dokument einfach eine reguläre SQLite-Datei. Das bedeutet, dass Ihre Daten nicht in proprietären Speicherformaten eingeschlossen sind. Jedes Tool, das SQLite lesen kann, öffnet eine exportierte .grist-Datei direkt. Aus der Perspektive von Backups und Portabilität zwischen Servern vereinfacht dieser Ansatz die Sache erheblich: Datei greifen — gesamte Datenbank greifen.

Interessante Tatsache: Französische Regierungsbehörden (ANCT und DINUM) investieren aktiv in die Codebasis, sodass das Projekt kontinuierlich Commits zu Barrierefreiheit, Lokalisierung und Enterprise-Sicherheit erhält.

Python statt Makros und Formel-Dialekte

Das Killer-Feature für jeden, der Code schreiben kann, sind Berechnungen in purem Python. Es gibt keine eingeschränkte Syntax oder seltsame Erweiterungen. Zellformeln akzeptieren Standard-Python-Syntax zusammen mit dessen Standardbibliothek.

Sie können beispielsweise frei List Comprehensions, String-Slicing, reguläre Ausdrücke oder das datetime-Modul verwenden. Wenn Sie an tabellarische Funktionen wie SUM oder AVERAGE gewöhnt sind, sind diese hier ebenfalls verfügbar, aber wenn die Logik komplex wird, spart der Wechsel zu Python eine Menge Nerven.

# Пример вычисления в колонке: вытаскиваем домен из email и форматируем
if $Email and "@" in $Email:
    domain = $Email.split("@")[1].lower()
    return f"Корпоративный: {domain}" if domain != "gmail.com" else "Личный"
return "Не указан"

Der Code wird in einer isolierten Sandbox ausgeführt. Je nach Umgebung können Sie die Isolation über gVisor unter Linux, natives sandbox-exec unter macOS oder Pyodide via WebAssembly konfigurieren, wenn Sie auf Windows bereitstellen.

Wenn Sie keine Formeln manuell schreiben möchten, gibt es einen integrierten KI-Assistenten. Sie können ihn mit OpenAI verbinden oder beliebige andere Modelle über OpenRouter konfigurieren, einschließlich Claude 3.7 Sonnet oder lokaler LLMs über LM Studio.

Datenbeziehungen und visuelle Dashboards

In Airtable oder Notion fehlt oft eine ordentliche Konfiguration verknüpfter Ansichten auf einem einzigen Bildschirm. In Grist ist ein Workspace in mehrere Karten oder Widgets unterteilt, die durch Klicken miteinander verknüpft werden können:

  • Die Kundentabelle links filtert die Auftragsliste rechts.
  • Die Auswahl eines Auftrags aktualisiert sofort die Detailkarte mit Markdown-Beschreibung und angehängten Dateien.
  • Integrierte Kalender-, Diagramm- und Zusammenfassungs-Widgets gruppieren Metriken, ohne versteckte Zwischentabellen zu erstellen.

Bidirektionale Referenzen (two-way references) funktionieren out-of-the-box: Verknüpfen Sie eine Aufgabe mit einem Sprint — der Sprint erhält automatisch die Aufgabe in seiner verknüpften Aufgabenliste.

Granulare Zugriffskontrolle

Viele Open-Source-No-Code-Tools scheitern bei der Sicherheit und bieten Zugriff nur nach dem Prinzip „alles oder nichts". In grist-core werden Zugriffsregeln auf der Ebene einzelner Tabellen, Zeilen und Spalten definiert.

Zugriffsbedingungen können auch über Formeln festgelegt werden:

  • Ein Manager sieht nur Deals, bei denen seine E-Mail dem Feld user.Email entspricht.
  • Die Gehaltsspalte ist nur für Benutzer mit einem bestimmten SSO-Attribut sichtbar.
  • Archivierte Datensätze werden am Bearbeiten gehindert, wenn das Feld Status == 'Closed' gesetzt ist.

Für Enterprise-Installationen werden OIDC, SAML und Forward-Auth-Authentifizierung über Proxy (z.B. Traefik oder Authentik) unterstützt, ebenso wie Benutzerbereitstellung via SCIM.

Schneller Start in Docker

Sie können die Engine lokal in ein paar Minuten mit einem einzigen Befehl ausprobieren:

docker run -p 8484:8484 -v $PWD/persist:/persist -it gristlabs/grist

Nach dem Start öffnen Sie http://localhost:8484 in Ihrem Browser. Der Container gibt einen generierten Boot-Key auf der Konsole für die erste Administrator-Einrichtung aus. Wenn Sie den Assistenten überspringen und eine einzelne Instanz ohne zusätzliche Fragen erhalten möchten, übergeben Sie einfach die Umgebungsvariable -e GRIST_IN_SERVICE=true.

Die Integration mit externen Systemen erfolgt über die standardmäßige REST-API und ausgehende Webhooks. Darüber hinaus sind Webhooks flexibel konfigurierbar: Sie können Ereignisse nur auslösen, wenn sich bestimmte Spalten ändern oder wenn eine gegebene logische Bedingung erfüllt ist.

Editionen vergleichen und Einschränkungen

Das grist-core-Repository wird unter der Apache 2.0-Lizenz vertrieben. Das Basis-Docker-Image gristlabs/grist enthält optionalen proprietären Code für Enterprise-Funktionen, der standardmäßig deaktiviert ist. Wenn Sie strikt ausschließlich freie Software ohne Drittanbieter-Einbindungen benötigen, erstellen die Entwickler ein separates Image gristlabs/grist-oss.

Einige Funktionen wurden aus dem reinen Core grist-core in die kommerzielle Version verschoben. Zum Beispiel Streaming-Audit-Logs, integrierte E-Mail-Automatisierungsketten und ein nativer MCP-Server für KI-Clients. Es hindert Sie jedoch nichts daran, denselben Claude über Community-Adapter mit der standardmäßigen REST-API zu verbinden.

Interface-Übersetzungen werden über die Weblate-Community kuratiert:

Translation status

Translation detail

Wem das Projekt nützen wird

Wenn Sie einen selbst gehosteten Ersatz für Airtable ohne Zeilenlimits und pro Benutzer anfallende Abonnementgebühren suchen, sieht Grist nach einem großartigen Kandidaten aus.

Es deckt perfekt Anforderungen für interne CRMs, Bestandsverfolgung, Finanzregister und einfache Back-Office-Panels ab. Sie erhalten ein vollständiges relationales Datenmodell, die Flexibilität von Python-Skripten und vollständige Kontrolle über SQLite-Dateien auf Ihrem eigenen Server.

Quellcode und Dokumentation sind im offiziellen Repository gristlabs/grist-core verfügbar.

Ähnliche Projekte