Deephaven Community Core is a real-time, time-series, column-oriented analytics engine with relational database features. Queries can seamlessly operate upon both historical and real-time data. Deephaven includes an intuitive user experience and visualization tools. It can ingest data from a variety of sources, apply computation and analysis algorithms to that data, and build rich queries, dashboards, and representations with the results.
Deephaven Community Core is an open version of Deephaven Enterprise, which functions as the data backbone for prominent hedge funds, banks, and financial exchanges.
Language | Server Application | Client Application (OpenAPI) |
---|---|---|
Python | Yes | No |
Java / Groovy | Yes | No |
JavaScript | No | Yes |
gRPC | - | Yes |
Building and running Deephaven requires a few software packages.
git
java
docker
docker-compose
- (Windows) WSL 2
You can check if these packages are installed and functioning by running:
git version
java -version
docker-compose version
docker run hello-world
Installing Java...
Deephaven can be built with either Oracle JDK or OpenJDK. Java 8 is required. To install Java, run
- Mac
OpenJDK 8 may need to be added to your path:
brew install openjdk@8
echo 'export PATH="/usr/local/opt/openjdk@8/bin:$PATH"' >> ~/.zshrc
- Windows WSL2 - Ubuntu
sudo apt update sudo apt install openjdk-8-jdk-headless
- Linux
or
sudo apt update sudo apt install openjdk-8-jdk
sudo yum install java-1.8.0-openjdk
Installing Docker...
Instructions for installing and configuring Docker can be found at https://docs.docker.com/get-docker/. Windows users should follow the WSL2 instructions.
Instructions for installing and configuring docker-compose
can be found at
https://docs.docker.com/compose/install/.
Version 1.29 (or newer) is required.
Docker RAM settings...
Tests run as part of the build process require at least 4GB of Docker RAM. To check your Docker configuration, run:
docker info | grep Memory
By default, Docker on Mac is configured with 2 GB of RAM. If you need to increase the memory on your Mac, click
on the Docker icon on the top bar and navigate to Preferences->Resources->Memory
.
If docker run hello-world
does not work...
If docker run hello-world
does not work, try the following:
- Is Docker running?
docker info
- (Linux) Are you in the
docker
user group?sudo groupadd docker sudo usermod -aG docker $USER
Once all of the required dependencies are installed and functioning, run:
git clone git@github.com:deephaven/deephaven-core.git
cd core
./gradlew prepareCompose
docker-compose build
These commands will create:
- a
core
directory containing the source code. - Docker images containing everything needed to launch Deephaven.
From the core
directory, run
docker-compose up
This will start the database. The console will fill with status and logging output.
Killing the process (e.g. Ctrl+C
) will stop Deephaven.
Once Deephaven Database is running, you can launch a Deephaven IDE in your web browser. Deephaven IDE allows you to interactively analyze data and develop new analytics.
- If Deephaven Database is running locally, navigate to http://localhost:10000/ide/.
- If Deephaven Database is running remotely, navigate
to
http://<hostname>:10000/ide/
, where<hostname>
is the address of the machine Deephaven Database is running on.
From the Deephaven IDE, you can perform your first query.
This script creates two small tables: one for employees and one for departments. It joins the two tables on the DeptID column to show the name of the department where each employee works.
from deephaven.TableTools import newTable, stringCol, intCol
from deephaven.conversion_utils import NULL_INT
left = newTable(
stringCol("LastName", "Rafferty", "Jones", "Steiner", "Robins", "Smith", "Rogers"),
intCol("DeptID", 31, 33, 33, 34, 34, NULL_INT),
stringCol("Telephone", "(347) 555-0123", "(917) 555-0198", "(212) 555-0167", "(952) 555-0110", None, None)
)
right = newTable(
intCol("DeptID", 31, 33, 34, 35),
stringCol("DeptName", "Sales", "Engineering", "Clerical", "Marketing"),
stringCol("Telephone", "(646) 555-0134", "(646) 555-0178", "(646) 555-0159", "(212) 555-0111")
)
t = left.join(right, "DeptID", "DeptName,DeptTelephone=Telephone")
This project has adopted the Contributor Covenant Code of Conduct. For more information see the Code of Conduct or contact opencode@deephaven.io with any additional questions or comments.
Copyright (c) Deephaven Data Labs. All rights reserved.
Provided under the Deephaven Community License.