| --- |
| sidebar_position: 5 |
| version: 1 |
| --- |
| |
| import InteractiveSVG from '../../../src/components/InteractiveERDSVG'; |
| import Mermaid from '@theme/Mermaid'; |
| |
| # Resources |
| |
| ## High Level Architecture |
| <div style={{ maxWidth: "600px", margin: "0 auto", marginLeft: 0, marginRight: "auto" }}> |
| ```mermaid |
| flowchart TD |
| |
| %% Top Level |
| LB["<b>Load Balancer(s)</b><br/>(optional)"] |
| LB -.-> WebServers |
| |
| %% Web Servers |
| subgraph WebServers ["<b>Web Server(s)</b>"] |
| WS1["<b>Frontend</b><br/>(React, AntD, ECharts, AGGrid)"] |
| WS2["<b>Backend</b><br/>(Python, Flask, SQLAlchemy, Pandas, ...)"] |
| end |
| |
| %% Infra |
| subgraph InfraServices ["<b>Infra</b>"] |
| DB[("<b>Metadata Database</b><br/>(Postgres / MySQL)")] |
| |
| subgraph Caching ["<b>Caching Subservices<br/></b>(Redis, memcache, S3, ...)"] |
| direction LR |
| DummySpace[" "]:::invisible |
| QueryCache["<b>Query Results Cache</b><br/>(Accelerated Dashboards)"] |
| CsvCache["<b>CSV Exports Cache</b>"] |
| ThumbnailCache["<b>Thumbnails Cache</b>"] |
| AlertImageCache["<b>Alert/Report Images Cache</b>"] |
| QueryCache -- " " --> CsvCache |
| linkStyle 1 stroke:transparent; |
| ThumbnailCache -- " " --> AlertImageCache |
| linkStyle 2 stroke:transparent; |
| end |
| |
| Broker(("<b>Message Queue</b><br/>(Redis / RabbitMQ / SQS)")) |
| end |
| |
| AsyncBackend["<b>Async Workers (Celery)</b><br>required for Alerts & Reports, thumbnails, CSV exports, long-running workloads, ..."] |
| |
| %% External DBs |
| subgraph ExternalDatabases ["<b>Analytics Databases</b>"] |
| direction LR |
| BigQuery[(BigQuery)] |
| Snowflake[(Snowflake)] |
| Redshift[(Redshift)] |
| Postgres[(Postgres)] |
| Postgres[(... any ...)] |
| end |
| |
| %% Connections |
| LB -.-> WebServers |
| WebServers --> DB |
| WebServers -.-> Caching |
| WebServers -.-> Broker |
| WebServers -.-> ExternalDatabases |
| |
| Broker -.-> AsyncBackend |
| |
| AsyncBackend -.-> ExternalDatabases |
| AsyncBackend -.-> Caching |
| |
| |
| |
| %% Legend styling |
| classDef requiredNode stroke-width:2px,stroke:black; |
| class Required requiredNode; |
| class Optional optionalNode; |
| |
| %% Hide real arrow |
| linkStyle 0 stroke:transparent; |
| |
| %% Styling |
| classDef optionalNode stroke-dasharray: 5 5, opacity:0.9; |
| class LB optionalNode; |
| class Caching optionalNode; |
| class AsyncBackend optionalNode; |
| class Broker optionalNode; |
| class QueryCache optionalNode; |
| class CsvCache optionalNode; |
| class ThumbnailCache optionalNode; |
| class AlertImageCache optionalNode; |
| class Celery optionalNode; |
| |
| classDef invisible fill:transparent,stroke:transparent; |
| ``` |
| </div> |
| |
| ## Entity-Relationship Diagram |
| |
| Here is our interactive ERD: |
| |
| <InteractiveSVG /> |
| |
| <br /> |
| |
| [Download the .svg](https://github.com/apache/superset/tree/master/docs/static/img/erd.svg) |