Average response time by page
Milliseconds, over every request seen. Longer is slower.
View page_latency, held in two partitions with a second copy of each.
Substation moves data as live changes between building blocks that people control: streams, tables, operators, policies. Agents propose the pipelines. No data flows, and nothing is deployed, until someone grants it.
The figures below are not a recording. They are views kept current by pipelines running now, and this page is told each time one changes.
Three views, each defined by one SQL statement and kept up to date as its inputs change. The data is synthetic: a generator stands in for a shop.
Milliseconds, over every request seen. Longer is slower.
View page_latency, held in two partitions with a second copy of each.
Sum of order amounts, in sample dollars.
View revenue_by_region.
An agent sees a registry of datasets and operators and writes a pipeline, or a SQL script, against it. Proposing costs nothing and moves nothing, so an agent can propose a pipeline before anyone asks for it.
Access is between a source and a sink, whatever happens in between. An admin grants or refuses each flow. Policies follow labels on the data through every operator, so a column marked pii is still marked after a join.
Everything travels as a stream of changes, so a table three steps downstream is updated by the change, not recomputed. A view is held in memory on your own nodes, in partitions, with copies that survive the loss of a node.
The public is a principal like any other, called www. Grant it a view and every node serves that view to anyone, live. Revoke the grant and the address is gone in seconds.
An agent ran this script. An admin granted the flows it asked for, then granted three of the views to www. That is all the back end this page has.
CREATE MATERIALIZED VIEW page_latency WITH (partitions = 2, replicas = 1) AS
SELECT page, COUNT(*) AS views, AVG(ms) AS avg_ms FROM clicks GROUP BY page;
CREATE MATERIALIZED VIEW slowest_pages AS
SELECT page, avg_ms FROM page_latency ORDER BY avg_ms DESC LIMIT 3;
CREATE MATERIALIZED VIEW revenue_by_region AS
SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue FROM orders GROUP BY region;
Each view has an address. It answers with the view as it stands, then with every change, as server-sent events.
The orders themselves carry an email address, labelled pii, and a policy keeps that label inside. No grant publishes them. Ask for them and the answer is the same as for something that does not exist:
checking…
Substation is early and is not open for sign-up. What you see is one small cluster of three nodes with sample data, shown to a few people. This page reaches one node, through one door that serves published views and these files and nothing else.