# perspective-dev/perspective

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/perspective-dev-perspective).**

10,981 stars · 1,326 forks · C++ · Apache-2.0

## Links

- GitHub: https://github.com/perspective-dev/perspective
- Homepage: http://perspective-dev.github.io/
- awesome-repositories: https://awesome-repositories.com/repository/perspective-dev-perspective.md

## Topics

`analytics` `bi` `data-visualization` `javascript` `jupyter` `python` `real-time` `webassembly`

## Description

Perspective is a columnar data analytics engine and high-performance visualization component powered by WebAssembly. It provides a system for analyzing and visualizing large or streaming datasets through interactive data grids and charts, utilizing a compiled binary to achieve near-native performance within the browser.

The project distinguishes itself through a WebSocket-based data streaming interface and deep Apache Arrow integration, which minimize memory overhead when synchronizing tables between servers and clients. It acts as a remote query proxy capable of translating visualization configurations into native queries for external databases such as ClickHouse and DuckDB.

The engine covers a broad range of analysis capabilities, including group-by aggregations, dataset joining, pivoting, and row filtering. It supports complex data management through incremental updates, primary key handling, and reactive view propagation that automatically updates visualizations as source data changes.

The system can be deployed as a browser-only execution environment, a server-replicated setup, or as embeddable interactive widgets within notebook environments like JupyterLab.

## Tags

### Data & Databases

- [High-Performance Visualizers](https://awesome-repositories.com/f/data-databases/data-visualization-charts/high-performance-visualizers.md) — Implements a high-performance WebAssembly-powered UI component for rendering interactive data grids and charts for large-scale datasets.
- [In-Memory Streaming Analytics](https://awesome-repositories.com/f/data-databases/analytical-query-engines/live-table-analytics/in-memory-streaming-analytics.md) — Creates in-memory columnar tables that ingest and query large-scale streaming datasets. ([source](https://perspective-dev.github.io/browser/modules/src_ts_perspective.browser.ts.html))
- [Apache Arrow Processing](https://awesome-repositories.com/f/data-databases/apache-arrow-processing.md) — Uses the high-performance Apache Arrow columnar memory format to transfer large datasets between servers and clients. ([source](https://perspective-dev.github.io/))
- [Binary Serialization](https://awesome-repositories.com/f/data-databases/binary-serialization.md) — Uses a columnar memory format to efficiently transfer and serialize data between different runtime environments.
- [In-Memory Columnar Accelerators](https://awesome-repositories.com/f/data-databases/columnar-analytics/in-database-analytical-engines/in-memory-columnar-accelerators.md) — Stores strongly typed data in columns to enable high-performance aggregation and filtering of large datasets in memory.
- [Columnar Data Processors](https://awesome-repositories.com/f/data-databases/columnar-data-processors.md) — Implements a query engine that performs aggregations, filtering, and pivoting on strongly typed columnar data.
- [Columnar Storage Engines](https://awesome-repositories.com/f/data-databases/columnar-storage-engines.md) — Implements a storage engine optimized for analytical workloads by organizing data in a columnar format. ([source](https://perspective-dev.github.io/guide/explanation/table.html))
- [Interactive Data Grids](https://awesome-repositories.com/f/data-databases/data-analysis-visualization/analytical-platforms-engines/data-exploration/interactive-data-grids.md) — Ships a high-performance grid component for tabular data exploration with real-time updates and sorting. ([source](https://cdn.jsdelivr.net/gh/perspective-dev/perspective@master/README.md))
- [Runtime-to-Runtime Synchronization](https://awesome-repositories.com/f/data-databases/data-synchronization-configurations/sync-endpoint-configurations/cross-client-synchronization/runtime-to-runtime-synchronization.md) — Duplicates and synchronizes data tables between server and browser clients using the Apache Arrow format. ([source](https://perspective-dev.github.io/guide/explanation/architecture.html))
- [Reactive View Bindings](https://awesome-repositories.com/f/data-databases/database-views/reactive-view-bindings.md) — Automatically recalculates aggregates and filters in dependent visualizations when the underlying source data changes.
- [Group-By Aggregations](https://awesome-repositories.com/f/data-databases/group-by-aggregations.md) — Computes high-performance aggregations on large or streaming datasets to summarize data by specific dimensions. ([source](https://perspective-dev.github.io/guide/explanation/python.html))
- [Incremental Data Appending](https://awesome-repositories.com/f/data-databases/incremental-data-appending.md) — Supports adding new records to existing tables to grow datasets over time via incremental updates. ([source](https://perspective-dev.github.io/guide/FAQ.html))
- [Incremental Data Streaming](https://awesome-repositories.com/f/data-databases/incremental-data-streaming.md) — Processes incremental data streams to efficiently recalculate aggregates and update visualizations in real time. ([source](https://perspective-dev.github.io/guide/print.html))
- [Interactive Visualization Rendering](https://awesome-repositories.com/f/data-databases/interactive-visualization-rendering.md) — Renders dynamic charts and grids that update in response to user input through a framework-agnostic interface. ([source](https://perspective-dev.github.io/guide/index.html))
- [Real-Time Plot Updates](https://awesome-repositories.com/f/data-databases/real-time-data-streaming/real-time-lighting-visualizers/real-time-plot-updates.md) — Builds interactive dashboards that update instantly as streaming data flows into a WebAssembly-powered system.
- [Real-time Data Synchronization](https://awesome-repositories.com/f/data-databases/real-time-data-synchronization.md) — Reflects data source changes in real time by incrementally recalculating aggregates and filters in the view. ([source](https://perspective-dev.github.io/guide/explanation/view.html))
- [WebAssembly Engines](https://awesome-repositories.com/f/data-databases/relational-database-engines/webassembly-engines.md) — Implements a high-performance query engine compiled to WebAssembly for near-native data analysis directly in the browser.
- [Remote Query Execution](https://awesome-repositories.com/f/data-databases/remote-query-execution.md) — Connects a browser frontend to a server-side engine via WebSockets to analyze data stored on a remote server.
- [Dataset Analysis](https://awesome-repositories.com/f/data-databases/sql-analysis-tools/dataset-analysis.md) — Enables immediate grouping, sorting, filtering, and aggregations on datasets via an interactive viewer. ([source](https://perspective-dev.github.io/python/perspective/widget.html))
- [External Query Translation](https://awesome-repositories.com/f/data-databases/sql-query-execution-engines/native-query-translation/external-query-translation.md) — Translates high-level visualization configurations into native queries for external data engines without loading full datasets into memory. ([source](https://perspective-dev.github.io/guide/FAQ.html))
- [Virtual Query Abstractions](https://awesome-repositories.com/f/data-databases/virtual-query-abstractions.md) — Translates internal query operations into native calls for external databases without loading full datasets into memory.
- [Transient In-Memory Tables](https://awesome-repositories.com/f/data-databases/virtual-table-querying/table-creation/transient-in-memory-tables.md) — Constructs transient in-memory tables from input data to serve as the foundation for real-time analysis. ([source](https://perspective-dev.github.io/browser/modules/src_ts_perspective.browser.ts.html))
- [Notebook Analytics](https://awesome-repositories.com/f/data-databases/analytics-apis/notebook-analytics.md) — Provides specialized widgets within Jupyter notebooks to explore and visualize dataframes and Arrow data interactively.
- [Computed Columns](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-modeling-schemas/data-schemas/column-definitions/computed-columns.md) — Defines new data columns using custom expressions for complex calculations and boolean filtering logic. ([source](https://perspective-dev.github.io/guide/FAQ.html))
- [Remote DataFrame Querying](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-processing/dataframe-processing/distributed-dataframe-analysis/dataframe-analysis/remote-dataframe-querying.md) — Exposes in-memory Polars DataFrames to browser clients over a WebSocket connection for remote analysis. ([source](https://perspective-dev.github.io/guide/how_to/python/virtual_server/polars.html))
- [Data Schema Definitions](https://awesome-repositories.com/f/data-databases/data-schema-definitions.md) — Provides declarative systems for defining columnar data structures and types to hold analysis data. ([source](https://perspective-dev.github.io/guide/explanation/table/constructing_schema.html))
- [Cross-Client Synchronization](https://awesome-repositories.com/f/data-databases/data-synchronization-configurations/sync-endpoint-configurations/cross-client-synchronization.md) — Mirrors server-side data tables across multiple concurrent browser clients to keep all viewers synchronized in real time. ([source](https://perspective-dev.github.io/python/index.html))
- [Data Visualization Dashboards](https://awesome-repositories.com/f/data-databases/data-visualization-dashboards.md) — Provides tools for organizing multiple visualization components into analytical dashboards. ([source](https://perspective-dev.github.io/guide/how_to/javascript/react.html))
- [ClickHouse Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/clickhouse-connectors.md) — Provides specialized connectors for establishing high-performance connections to ClickHouse analytical database servers. ([source](https://perspective-dev.github.io/python/perspective/virtual_servers/clickhouse.html))
- [Conditional Row Filters](https://awesome-repositories.com/f/data-databases/database-schema-mapping/row-mapping-logic/row-record-access/conditional-row-filters.md) — Restricts dataset output to rows meeting specific criteria across multiple columns using boolean logical operators. ([source](https://perspective-dev.github.io/guide/explanation/view/config/selection_and_ordering.html))
- [DataFrame Ingestion](https://awesome-repositories.com/f/data-databases/dataframe-integration/dataframe-ingestion.md) — Converts pandas or polars DataFrame objects into internal high-performance tables while preserving indexing. ([source](https://perspective-dev.github.io/python/index.html))
- [Dataset Joins](https://awesome-repositories.com/f/data-databases/dataset-joins.md) — Combines multiple data sources using inner, left, or right joins based on shared keys. ([source](https://perspective-dev.github.io/guide/explanation/join/join_types.html))
- [Dataset Pivoting](https://awesome-repositories.com/f/data-databases/dataset-pivoting.md) — Splits a dataset into multiple columns based on unique field values without aggregating data. ([source](https://perspective-dev.github.io/guide/explanation/view/config/grouping_and_pivots.html))
- [Primary Keys](https://awesome-repositories.com/f/data-databases/entity-modeling/primary-keys.md) — Designates specific columns as unique identifiers to enable in-place updates and targeted row deletions. ([source](https://perspective-dev.github.io/guide/explanation/table/options.html))
- [Virtual Database Integration](https://awesome-repositories.com/f/data-databases/external-storage-integrations/virtual-database-integration.md) — Integrates external DuckDB instances as virtual servers to query and visualize data natively. ([source](https://perspective-dev.github.io/browser/modules/dist_esm_virtual_servers_duckdb.js.html))
- [Python Table Hosting](https://awesome-repositories.com/f/data-databases/remote-table-connectivity/python-table-hosting.md) — Hosts tables on a Python server to make them accessible to JavaScript clients over a WebSocket connection. ([source](https://perspective-dev.github.io/python/perspective/handlers/tornado.html))
- [Reactive Joins](https://awesome-repositories.com/f/data-databases/table-data-processing/table-joining-operations/reactive-joins.md) — Combines two source tables on a shared key to create a reactive read-only joined table. ([source](https://perspective-dev.github.io/guide/how_to/python/join.html))
- [Multi-Format Data Loading](https://awesome-repositories.com/f/data-databases/tabular-data-frameworks/csv-data-loaders/multi-source-csv-loading/multi-format-data-loading.md) — Loads data from multiple formats including CSV, JSON, and Apache Arrow into high-performance internal tables. ([source](https://perspective-dev.github.io/guide/explanation/table/loading_data.html))

### User Interface & Experience

- [WASM-Powered Visualization Components](https://awesome-repositories.com/f/user-interface-experience/data-visualization-components/wasm-powered-visualization-components.md) — Provides a high-performance UI component for analyzing and visualizing large or streaming datasets using a WebAssembly-powered engine.
- [Notebook Analysis Widgets](https://awesome-repositories.com/f/user-interface-experience/data-visualization-widgets/notebook-analysis-widgets.md) — Provides interactive widgets for transforming and visualizing large datasets within JupyterLab environments. ([source](https://perspective-dev.github.io/python/perspective/widget.html))
- [Embedded Analytics Interfaces](https://awesome-repositories.com/f/user-interface-experience/embedded-analytics-interfaces.md) — Integrates professional data grids and charting components directly into web applications for end users.
- [Analysis Widgets](https://awesome-repositories.com/f/user-interface-experience/interactive-widgets/analysis-widgets.md) — Embeds an interactive analysis widget into notebook environments for rapid exploration of large datasets. ([source](https://perspective-dev.github.io/guide/))
- [Synchronized View Filtering](https://awesome-repositories.com/f/user-interface-experience/synchronized-view-filtering.md) — Implements mechanisms to coordinate filtering state across multiple independent visualization panels. ([source](https://perspective-dev.github.io/))
- [Virtualized Data Rendering](https://awesome-repositories.com/f/user-interface-experience/virtualized-data-rendering.md) — Streams only the data required for the current view to efficiently render massive datasets without crashing the browser. ([source](https://perspective-dev.github.io/))

### Artificial Intelligence & ML

- [Remote Connectivity](https://awesome-repositories.com/f/artificial-intelligence-ml/mcp-servers/remote-connectivity.md) — Establishes a WebSocket connection to a remote server to perform queries and analysis on remote data. ([source](https://perspective-dev.github.io/guide/how_to/javascript/worker.html))

### Graphics & Multimedia

- [Multi-Chart Type Libraries](https://awesome-repositories.com/f/graphics-multimedia/visualization-mapping/composite-visualizations/mixed-chart-types/multi-chart-type-libraries.md) — Supports a wide array of chart types including line, bar, scatter, heatmap, treemap, and candlestick. ([source](https://perspective-dev.github.io/guide/print.html))

### Networking & Communication

- [Analytics Server Hosting](https://awesome-repositories.com/f/networking-communication/analytics-server-hosting.md) — Establishes a server-side connection via WebSockets to receive and process data requests from a front-end viewer. ([source](https://perspective-dev.github.io/python/perspective/handlers/aiohttp.html))
- [Binary Data Streaming](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/websocket-implementations/websocket-clients-and-servers/binary-data-streaming.md) — Synchronizes server-side tables and query results to browser clients via a real-time binary message bus.
- [WebSocket Servers](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/websocket-implementations/websocket-servers.md) — Implements a server-side WebSocket connection to process binary messages from front-end viewers without timeouts. ([source](https://perspective-dev.github.io/python/perspective/handlers/aiohttp.html))

### Programming Languages & Runtimes

- [Cross-Language Bridges](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-bridges.md) — Transfers data between JavaScript and WebAssembly runtimes using a binary columnar format for zero-copy efficiency.
- [Logic Thread Isolation](https://awesome-repositories.com/f/programming-languages-runtimes/logic-thread-isolation.md) — Offloads data processing to background worker threads to ensure the user interface remains responsive during heavy analysis.

### Software Engineering & Architecture

- [Large Dataset Explorers](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/data-handling-throughput/large-dataset-optimizations/large-dataset-explorers.md) — Performs complex queries and aggregations on massive datasets in the browser without crashing the user interface.
- [Execution Environment Configurations](https://awesome-repositories.com/f/software-engineering-architecture/execution-environment-configurations.md) — Provides flexible configuration between browser-only execution, server replication, or server-side query execution. ([source](https://perspective-dev.github.io/guide/FAQ.html))
- [Reactive Change Detection](https://awesome-repositories.com/f/software-engineering-architecture/reactive-change-detection.md) — Implements reactive change detection that triggers callbacks automatically when table data is modified or deleted. ([source](https://perspective-dev.github.io/python/index.html))

### Web Development

- [Real-Time Data Streaming](https://awesome-repositories.com/f/web-development/real-time-data-streaming.md) — Synchronizes server-side tables and query results to browser clients via a real-time binary message bus.
- [WebSocket Dashboards](https://awesome-repositories.com/f/web-development/real-time-data-streaming/websocket-dashboards.md) — Synchronizes server-side data tables with browser viewers using a real-time binary message bus over WebSockets.
- [Browser Database Support](https://awesome-repositories.com/f/web-development/browser-database-support.md) — Executes complex analytics queries against WASM-powered databases directly within the client's browser. ([source](https://perspective-dev.github.io/guide/how_to/javascript/virtual_server/duckdb.html))
- [Web Worker Orchestrators](https://awesome-repositories.com/f/web-development/web-worker-orchestrators.md) — Offloads heavy calculations and data accumulation to background Web Workers to keep the user interface responsive. ([source](https://perspective-dev.github.io/guide/how_to/javascript/worker.html))

### Development Tools & Productivity

- [Parallel Execution](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution.md) — Executes analytics operations across multiple threads using an internal pool to accelerate data processing. ([source](https://perspective-dev.github.io/guide/how_to/python/multithreading.html))

### Part of an Awesome List

- [Data Visualization](https://awesome-repositories.com/f/awesome-lists/ai/data-visualization.md) — High-performance streaming data visualization and analytics component.
