Skip to content

brewDB Overview

brewDB is a full IDE-grade SQL workbench, reached at #/brewdb, for querying and managing the tables backing your workflows. The legacy application had no query interface at all — only a read-only brewDbCard dashboard widget and a table-select input directive. brewDB replaces that with a proper workbench: a schema-aware SQL editor, shareable workspaces, a streaming results grid, EXPLAIN plan visualization, and self-service table management, all in one place.

The full brewDB workbench layout, with the SQL editor, results grid, and database tree all visible

At the center of brewDB is a Monaco-based SQL editor backed by a live language server. It talks to a postgres-language-server sidecar over WebSocket, pinned to your brew_user_<profile_id> role, so autocomplete, hover types, and diagnostics all reflect what you’re actually permitted to see and do. The editor also formats SQL and includes a read-only linter that flags writes and DDL before you run them. See SQL Editor & LSP for detail.

Queries live in named, drag-reorderable tabs that autosave to the server roughly every 800 ms, with a live “Saved · Ns ago” indicator, plus a per-user local resume cache so you land back where you left off. Tabs are grouped into workspaces — server-persisted containers you can share with others via an ACL matrix, switching between “My” workspaces and ones shared with you. Each workspace also keeps a server-side query history with previews and pinning, so past queries survive the result-cache TTL and can be promoted back into an editable tab. See Workspaces & Sharing for detail.

Query results render in a virtualized, infinite-row-model ag-grid grid built to handle very large result sets, with CV-type-aware filters and a sort/filter-respecting CSV export. Results can also be popped out into a standalone window. Execution itself is asynchronous — submit, poll, then done/error/cancelled — with a per-tab console and a result cache that carries a visible countdown TTL badge. See Results Grid & Pop-out for detail.

brewDB can run EXPLAIN either as a real ANALYZE (actual timings) or plan-only, then parses Postgres’s FORMAT JSON output into an interactive tree with a self-time heatmap. It auto-flags sequential scans, row misestimates, disk sorts, and nested-loop blowups, and a write-guard lets you choose between running EXPLAIN in a rolled-back transaction or as plan-only. See EXPLAIN Plan Analysis for detail.

A searchable database tree gives you lazy-loaded schema browsing — columns, indexes, constraints, retention — with table-kind icons distinguishing Standard, Hyper, Cyber, and Netflow tables. From there you can view a table’s DDL, see its details and amCharts activity charts, walk a 5-step wizard to create a new table (with CV-type-to-index-method mapping), edit columns, and manage indexes, including concurrent create/drop/reindex/analyze with progress polling. See Table Self-Service for detail.

Every table change is tracked in a searchable audit grid — When, Action, Source, Profile, and Metadata columns, each with a JSON detail view — and DDL entries show the actual SQL that ran. See Table Audit Log for detail.