uwdata/mosaic
uwdata/mosaic has 1,405 GitHub stars and 123 forks. GitHot measured +1 stars in 24 hours and +4 in 7 days. Last checked 2026-11-10 04:37 UTC. Last push 2026-11-02.
An extensible framework for linking databases and interactive views.
측정된 스타 증가
- in 24h
- +1
- in 7 days
- +4
- in 15 days
- 업데이트 지연
- in 1 month
- 업데이트 지연
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README.md
OriginalMosaic: An Extensible Framework for Linking Databases and Interactive Views
- 📈 Explore massive datasets
Visualize, select, and filter datasets with millions or billions of records. - 🚀 Flexible deployment
Build data-driven web apps, or interact with data directly in Jupyter notebooks. - 🛠️ Interoperable & extensible
Create new components that seamlessly integrate across selections and datasets. - 🦆 Powered by DuckDB
Mosaic pushes computation to DuckDB, both server-side and in your browser via WebAssembly.
Mosaic is an extensible architecture for linking data visualizations, tables, input widgets, and other data-driven components, leveraging a backing database for scalable processing of both static and interactive views. With Mosaic, you can visualize and explore millions and even billions of data points at interactive rates.
The key idea is to have interface components "publish" their data needs as declarative queries that can be managed, optimized, and cross-filtered by a coordinator that proxies access to DuckDB.
Learn more about Mosaic at the documentation site, or read the Mosaic research paper.
If referencing Mosaic, please use the following citation:
@article{heer2024mosaic,
title={Mosaic: An Architecture for Scalable \& Interoperable Data Views},
author={Heer, Jeffrey and Moritz, Dominik},
journal={IEEE Transactions on Visualization and Computer Graphics},
year={2024},
volume={30},
number={1},
pages={436-446},
doi={10.1109/TVCG.2023.3327189}
}
Repository Structure
This repository contains a set of related packages, spanning the core Mosaic architecture, DuckDB servers, the vgplot visualization library, and example projects.
Mosaic Architecture (packages/mosaic)
mosaic-core: The core Mosaic components. A central coordinator, parameters and selections for linking scalar values or query predicates (respectively) across Mosaic clients, and filter groups with materialized views of pre-aggregated data. The Mosaic coordinator can send queries either over the network to a backing server (restclient) or to a client-side DuckDB-WASM instance (wasmclient).mosaic-sql: An API for convenient construction and analysis of SQL queries. Query objects then coerce to SQL query strings.
vgplot Libraries (packages/vgplot)
vgplot is a visualization grammar API that demonstrates the features and performance of the Mosaic architecture. It includes a layered grammar of interactive graphics alongside table and input widget components. For convenience, the vgplot package re-exports much of the mosaic-core, mosaic-sql, mosaic-plot, and mosaic-inputs packages. For most vgplot applications, it is sufficient to either import @uwdata/vgplot alone or in conjunction with @uwdata/mosaic-spec.
vgplot: A visualization grammar API for building interactive Mosaic-powered visualizations and dashboards. This package provides convenient, composable methods that combine multiple Mosaic packages (core, inputs, plot, etc.) in an integrated API. This API re-exports much of themosaic-core,mosaic-sql,mosaic-plot, andmosaic-inputspackages, enabling use in a stand-alone fashion.mosaic-inputs: Standalone data-driven components such as input menus, text search boxes, and sortable, load-on-scroll data tables.mosaic-plot: An interactive grammar of graphics implemented on top of Observable Plot. Marks (plot layers) serve as individual Mosaic clients. These marks can push data processing (binning, hex binning, regression) and optimizations (such as M4 for line/area charts) down to the database. This package also provides interactors for linked selection, filtering, and highlighting using Mosaic Params and Selections.mosaic-spec: Declarative specification of Mosaic-powered applications as JSON or YAML files. This package provides a parser and code generation framework for reading specifications in a JSON format and generating live Mosaic visualizations and dashboards using the vgplot API.widget: A Jupyter widget for Mosaic. Given a declarative specification, will generate web-based visualizations while leveraging DuckDB in the Jupyter kernel. Create interactive Mosaic plots over Pandas and Polars data frames or DuckDB connections.
DuckDB Servers (packages/server)
duckdb-server: A Python-based server that runs a local DuckDB instance and supports queries over HTTP, returning data in either Apache Arrow or JSON format.duckdb-server-rust: A Rust-based server similar toduckdb-server(Python) andmosaic-duckdb(Node.js) with additional support for HTTP/2. We are still evaluating what server component works best. DuckDB support for Rust is often delayed compared to Python.duckdb-server-go: A Go-based server similar toduckdb-server(Python) andmosaic-duckdb(Node.js) with additional support for HTTP/2. It has experimental support for multi-tenant access control, function allowlisting and blocklisting, and other features to harden the server for production use.mosaic-duckdb: A Promise-based Node.js API to DuckDB, along with a data server that supports transfer of Apache Arrow and JSON data over HTTP. Due to quality and maintenance issues involving the Node.js DuckDB client and Arrow extension, we recommend using the Python-basedduckdb-serverpackage instead. However, we retain this package for both backwards compatibility and internal testing use.
Examples (packages/examples)
vanilla-example: A basic example demonstrating how to deploy Mosaic in a website.svelte-example: An example application that demonstrates how to create Mosaic components within web frameworks such as Svelte and React.vega-example: A proof-of-concept example integrating Vega-Lite with Mosaic for data management and cross-view linking.
Contributing
To build and develop Mosaic locally, run the test suite, or work on the documentation, see CONTRIBUTING.md.
Usage Instructions
To use Mosaic with DuckDB Python in Jupyter Notebooks:
- See the Mosaic
widgetdocumentation.
To use Mosaic with DuckDB-WASM in Observable Notebooks:
- See the Mosaic 10M Flights example.
To use Mosaic and DuckDB in Observable Framework:
- See the Mosaic + Framework example site.
관련 프로젝트 살펴보기
Asabeneh/30-Days-Of-Python
30 Days of Python 프로그래밍 챌린지는 Python 프로그래밍 언어를 30일 동안 배우기 위한 단계별 가이드입니다. 이 챌린지는 100일 이상 걸릴 수 있습니다. 자신의 속도에 맞춰 진행하세요. 다음 동영상도 도움이 될 수 있습니다: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,486 스타grafana/grafana
개방적이고 조합 가능한 옵저버빌리티 및 데이터 시각화 플랫폼입니다. Prometheus, Loki, Elasticsearch, InfluxDB, Postgres 등 여러 소스의 메트릭, 로그, 트레이스를 시각화합니다.
77,790 스타redis/redis
실시간 데이터 기반 애플리케이션을 구축하는 개발자에게 Redis는 가장 선호되고, 가장 빠르며, 기능이 가장 풍부한 캐시, 데이터 구조 서버이자 문서 및 벡터 쿼리 엔진입니다.
77,332 스타apache/superset
Apache Superset는 데이터 시각화 및 데이터 탐색 플랫폼입니다.
75,455 스타