Worker Capabilities

ThemeCapabilityLegacyCore+Notes
Open or closed?Closed, commercial software
Open, source-available softwareOpen for collaboration! In future Enterprise versions, you'll be able to support multiple deephaven-core engine versions.
Data in / data outRead Live Deephaven Format Tables from Data Import Server
Read Parquet or Deephaven Format Historical Tables
Parquet improvementsFaster writing, better support for read-modify-write workflows, reading and writing columns of arrays, LZV4_raw compression, better errors, and specifying a schema when reading hierarchical tables.
Partitions & hierarchical groups, reading & writing
Non-clustered single column indexesSingle-column indices on static tables.
Clustered-indexes (groups)Single-column clustered indices on static tables.
Live data indexesLive data indexes that can be added to any table at runtime. Arriving in 0.34 Community and Grizzly Enterprise
Multi-column indexesSome operations take advantage of multi-column indexes. Arriving in 0.34 Community and Grizzly Enterprise
Read Multi-level Partitioned Hive Tables
Access Parquet Files on S3 Natively (w/o a FUSE driver)From Core+ 0.33.0
Merge System TablesCan be read from Either Core+ or Legacy.
Write user tablesFrom Core+ version 0.31.0
Read user tables
Persistent Input TablesGrizzly (2Q24) will have improved Input Tables in Core+.
Import-driven lastByFrom Core+ version 0.31.0
Table loggersCore+ supports only primitive types and Strings
Generated Row-by-Row Loggers
JDBC (in Java)
ODBC / ADBC / Connectorx / FlightSQL reading (Python)
Kafka ingesterFrom Core+ version 0.27.1
Adhoc Kafka connectionsIngest to a memory table in the query
Kafka lastBy Tables
Kafka producer
JSON Kafka PayloadsMore enhancements on the way.
Avro Kafka Payloads
POJO Kafka Payloads
Solace Ingester
SBE producerA custom protocol built on top of Simple Binary Encoding. No authentication is provided. For Core+ workers, Barrage is a superior alternative.
SBE consumerA custom protocol built on top of Simple Binary Encoding. No authentication is provided. For Core+ workers, Barrage is a superior alternative.
Read FeatherVia io.deephaven.extensions.arrow.ArrowWrapperTools#readFeather.
Arrow wrapper tools for future innovation & interoperabilityFor static data, Arrow opens an interesting ecosystem for interoperability with other engines and databases (ibis, substrait, ADBC).
Data mesh (connecting workers to workers)Barrage producer
Barrage consumer
Preemptive TablesPreemptive Tables are a Java-serialization based protocol, which does not support clients in other languages. Barrage is a gRPC alternative, which is used by Deephaven Core workers.
Cross Cluster Table SubscriptionsSince 1.20231218.109 -- URI subscriptions.
Query / Code / engine capabilities & approachFaster, more natural parallelization
Open benchmarking library for performance testingOpen GitHub project for real-time and batch processing, with comparisons to other engines -- highly customizable.
Open Addressed Join/Aggregation HashingImproved Performance vs. Legacy.
Groovy / Java interface
Legacy, Python syntax
Pythonic APICore+ workers have a Python Table API that does not rely on automatic translation of Java method overloads.
Python UDF Improvements
Python Type HintsSupports type hints for functions return arrays, lists, or other sequences of data or that have optional returns.
Vectorization of Python functionsTries to automatically vectorize Python functions to take advantage of chunking and minimize the number of Python-Java boundary crossings.
Function generated tablesCreate ticking tables via a Python function, triggered by one or more source tables, or by a refresh interval.
Python future.annotationsSupport for future.annotations, which are helpful for delayed evaluations.
Python formula decompositionRelease 0.35 in Community, expected as a Grizzly patch in Enterprise.
Improved NumPy, pandas integrations
Numba integration for improved Python performanceThe open-source just-in-time (JIT) compiler for Python, used to translate portions of Python code into optimized machine code using LLVM.
"Deephaven learn" library for updating integration with ML librariesGather-compute-scatter.
Declarative Query Syntax Tree (QST) API
SQL AlphaUse SQL to query Deephaven tables (select, etc.)
Deephaven time library for dbDateTime, etc.
Java time library for Instant, Duration, etc.Support for 3 patterns: Buillt-in Java functions, Java object methods, and interoperable Python datetimes.
Calendar, businessTime support, etc.Core+ rewritten to use new time libraries.
Ring tables
Blink tables
updateBy/update_by for cumulative, window, rolling aggregations
Rollup WAvg, WSumFrom 0.32.1
Expand All in Hierarchical Tables
RangeJoin / range_joinFrom Core+ version 0.24
TableMapsPartitioned tables in Core+ provide the functionality of TableMaps.
Partitioned TablesPowerful for parallelization and parameterized queries.
Vectorized Column Iterators
Downsampler
Replay QueryYou can replay within Core+ scripts, but there is no replay query yet.
ZipJoin
Basic multi-core map-reduce builder
ClientsPure Python clientThe Legacy client relies on jpy. The Core+ client uses gRPC and Pure Python. For optional ticking support, the C++ client is used as a backend.
Jupyter kernelThe Legacy Jupyter integration requires a "bootstrap" kernel, which then connects to a Deephaven worker. All Python evaluations must occur on the server.
Jupyter Client IntegrationThe Core+ Python client can be run in any Jupyter kernel. The Deephaven grid widget is used to display tables.
Java Client
C++ Client
Go Client (snapshots, not streaming)
R ClientThe Legacy client relies on jpy. The Core+ R client uses the C++ client internally.
C# OpenAPI Library
C# ClientCore+ target, arriving March 2024.
Excel ClientArriving to Core+ April 2024.
UI/UX and workflowWebUI / Web-IDE / PQ workflow
Swing console
Import Web Notebooks from Groovy and Python
Plots: Deephaven plotting library supported (Groovy, Java)
Plots: TICKING Plotly Express (top ~30 plots in real time)The "Deephaven Express" integration also allows for full control of the figure and its styling.
Plots: STATIC Plotly, matplotlib, seaborn, ggplot, etc. for snapshots
Embeddable iframes
Deephaven ipy widget library
Bidirectional pluginsUsed for delivering front-end JS code or back-end libraries.
Builder-driven UI Parameterized PQsUse Deephaven.ui instead.
deephaven.ui: Programmatic parameterized PQs
deephaven.ui: Rich callback frameworkReact Spectrum is integrated.
deephaven.ui: Programmatical layouts
deephaven.ui: ThemingSet colors. Soon fonts, etc.
Builder-driven Pivot Widget
deephaven.ui: Pivot widget plugin
Column grouping
Column statistics viewable in WebUI
Column statistic unique value counts
SystemPyDocs and Javadocs, autocomplete in popular IDEs
Queries Survive Controller RestartVermilion+, Core+ only
Multiple WorkerKindsPermits distinct Python Virtual Environments, Java Libraries, Test Versions of Worker.
Replica PQsGrizzly. A PQ type that can have N identical workers + M hot backups, with support for consumers' round-robin.