An open API service indexing awesome lists of open source software.

https://github.com/exasol/exasol-personal

The High-Performance Analytics Engine β€” Free for Personal Use
https://github.com/exasol/exasol-personal

data-analytics data-engineering database exasol sql

Last synced: 4 days ago
JSON representation

The High-Performance Analytics Engine β€” Free for Personal Use

Awesome Lists containing this project

README

          


Exasol Logo

# Exasol Personal

**The High-Performance Analytics Engine β€” Free for Personal Use**

*Deploy a full-scale Exasol cluster on your own AWS infrastructure in minutes*

[![Documentation](https://img.shields.io/badge/docs-exasol.com-blue)](https://docs.exasol.com/db/latest/home.htm)
[![Community](https://img.shields.io/badge/community-exasol-green)](https://community.exasol.com)
[![Downloads](https://img.shields.io/badge/downloads-exasol.com-orange)](https://downloads.exasol.com/exasol-personal)

## πŸ”₯ Key Features

- 🏎️ **In-Memory Performance** β€” Run complex analytics at in-memory speed with Exasol's industry-leading analytics engine
- 🏒 **Full Enterprise Features** β€” Access all enterprise-scale capabilities of the Exasol database, completely free for personal use
- ♾️ **Unlimited Data** β€” Store and analyze unlimited amounts of data with no artificial limits
- πŸ“ˆ **Scalable Architecture** β€” Scale up to any number of nodes using Exasol's MPP (Massively Parallel Processing) architecture
- πŸ€– **Built-in AI Functions** β€” Leverage native AI/ML capabilities with GPU acceleration
- βš™οΈ **Simple Deployment** β€” Spin up a distributed cluster on your own AWS infrastructure with just a few commands
- πŸ–₯️ **Cross-Platform CLI** β€” Install and manage your cluster using the Exasol Launcher on Linux, macOS, or Windows

## βœ… Prerequisites

- An AWS account that can provision large type instances. Exasol launcher by default uses the r6i.xlarge EC2 instance type.
- An AWS user with enough permissions to create resources such as EC2 instances.

To learn how to set up an AWS account with an instance profile and configure your local environment to use that profile when installing Exasol Personal, see [Set up an AWS account for Exasol Personal](./HOWTO_SETUP_AWS_ACCOUNT.md).
To learn how to set up an Azure account and local authentication for the Azure preset, see [Set up an Azure account for Exasol Personal](./HOWTO_SETUP_AZURE_ACCOUNT.md).

## 🏎️ Quick Start for macOS 🍎 and Linux 🐧

Download the Exasol launcher:
```bash
curl https://downloads.exasol.com/exasol-personal/installer.sh | sh
```
Create a deployment directory:
```bash
mkdir deployment && cd deployment
```
Install Exasol Personal:
```bash
../exasol install aws
```
Read on for how to install on Windows and for more detailed instructions.

## πŸš€ Deploy Exasol Personal

1. Download Exasol Launcher for your platform.

On Linux and macOS, run:
```bash
curl https://downloads.exasol.com/exasol-personal/installer.sh | sh
```

On all platforms including Windows:
Download Exasol Launcher from the [Exasol Download Portal](https://downloads.exasol.com/exasol-personal).

Copy the `exasol` binary into your PATH.

2. Create a new directory β€œdeployment” and change into the directory:
```bash
mkdir deployment
cd deployment
```
3. Configure the `AWS_PROFILE` environment variable to use the instance profile that you created in your AWS account for Exasol Personal.

If the profile name is `exasol`:
```bash
# Linux / macOS (Bash)
export AWS_PROFILE=exasol
```
```powershell
# Windows (PowerShell)
$env:AWS_PROFILE = "exasol"
```
```powershell
# Windows (cmd)
set AWS_PROFILE=exasol
```

4. To install Exasol Personal, run the following command:
```bash
exasol install aws
```
The `exasol install` command does the following:
- Generates Terraform files in the deployment directory
- Provisions the necessary AWS infrastructure with Terraform
- Starts up the AWS infrastructure
- Downloads and installs Exasol Personal on that infrastructure

The whole process normally takes about 10 to 20 minutes to complete.

When the deployment process has finished, you will see instructions on how to connect to your Exasol database using a client of your choice. You can also find this information at any time by using `exasol info` in the terminal.

Most `exasol` commands must be run from the context of the deployment directory. Change into the deployment directory before you run any `exasol` commands, and prepend the command with the relative path to the binary. For example: `../exasol `.

To avoid having to prepend all exasol commands with the path to the binary, you can add the path to your PATH environment variable. For more information about how to set environment variables, refer to the documentation for your operating system.

## πŸ“Š Load Sample Data

To get started quickly, Exasol provides two sample datasets hosted on S3 that you can import directly using SQL.

You can load it directly by executing this command in the deployment directory:

```bash
exasol connect < sample.sql
```

Alternatively, connect with a SQL client of your choice and paste the statements below:

```sql
CREATE OR REPLACE TABLE PRODUCTS (
PRODUCT_ID DECIMAL(18,0),
PRODUCT_CATEGORY VARCHAR(100),
PRODUCT_NAME VARCHAR(2000000),
PRICE_USD DOUBLE,
INVENTORY_COUNT DECIMAL(10,0),
MARGIN DOUBLE,
DISTRIBUTE BY PRODUCT_ID);

IMPORT INTO PRODUCTS
FROM PARQUET AT 'https://exasol-easy-data-access.s3.eu-central-1.amazonaws.com/sample-data/'
FILE 'online_products.parquet';
```

```sql
CREATE OR REPLACE TABLE PRODUCT_REVIEWS (
REVIEW_ID DECIMAL(18,0),
PRODUCT_ID DECIMAL(18,0),
PRODUCT_NAME VARCHAR(2000000),
PRODUCT_CATEGORY VARCHAR(100),
RATING DECIMAL(2,0),
REVIEW_TEXT VARCHAR(100000),
REVIEWER_NAME VARCHAR(200),
REVIEWER_PERSONA VARCHAR(100),
REVIEWER_AGE DECIMAL(3,0),
REVIEWER_LOCATION VARCHAR(200),
REVIEW_DATE VARCHAR(200),
DISTRIBUTE BY PRODUCT_ID);

IMPORT INTO PRODUCT_REVIEWS
FROM PARQUET AT 'https://exasol-easy-data-access.s3.eu-central-1.amazonaws.com/sample-data/'
FILE 'product_reviews.parquet';
```

| Table | Rows | Size |
|---|---|---|
| `PRODUCTS` | 1,000,000 | 27.3 MiB |
| `PRODUCT_REVIEWS` | 1,822,007 | 154.5 MiB |

Both tables are distributed by `PRODUCT_ID`, enabling efficient joins between them.

## βš™οΈ Choosing cluster size and instance types

The launcher will by default generate Terraform files to install one Exasol node on one Amazon EC2 instance of the type r6i.xlarge. To change the number of nodes and the EC2 instance type to use in the deployment, use the `--cluster-size` and `--instance-type` options:
```bash
exasol install aws --cluster-size --instance-type
```
If the deployment process is interrupted, EC2 instances that were created by the process will not be terminated and may therefore continue to accrue cost. In case of an aborted deployment you must log in to the AWS console and manually terminate those instances.

## ⏯️ Start and stop Exasol Personal

To save costs, you can temporarily stop Exasol Personal by using the following command (in the deployment directory):
```bash
exasol stop
```
This stops the EC2 instance(s) that Exasol Personal is running on.

Networking and data volumes that the database data is stored on will continue to incur costs when instances are stopped.

To start Exasol Personal again, use the following command:
```bash
exasol start
```
The IP addresses of the nodes will change when you restart Exasol Personal. Check the output of the `start` command to know how to connect to the deployment after a restart.

## πŸ—‘οΈ Remove Exasol Personal

To completely remove an Exasol Personal deployment, use `exasol destroy`. This command will terminate the EC2 instance and delete it and all associated resources in AWS.

To learn more about this command, use `exasol destroy --help`.

Deleting the deployment directory and the Exasol Launcher will not remove the resources that were created in your AWS account. To completely remove a deployment, you must use the `exasol destroy` command.

If you have already deleted the deployment directory and the exasol binary, you must log in to the AWS console and manually terminate the EC2 instances and associated resources.

## πŸ”œ Next steps

Once the deployment process is complete, use `exasol info` for information about how to connect to your Exasol database. The credentials for connecting to the database from a client are stored in the file `secrets.json` in the deployment directory.

You can also use the built-in SQL client in Exasol Launcher to connect directly to the database from the command line:
```bash
../exasol connect
```
See also...
- To learn more about how you can connect to your Exasol database and start loading data using the many supported tools and integrations, see [Connect to Exasol](https://docs.exasol.com/db/latest/connect_exasol.htm) and [Load Data](https://docs.exasol.com/db/latest/loading_data.htm).
- To learn how to use the SQL statements, data types, functions, and other SQL language elements that are supported in Exasol, see [SQL reference](https://docs.exasol.com/db/latest/sql_reference.htm).

## πŸ§‘β€πŸ’» Exasol Admin

Exasol Admin is an easy-to-use web interface that you can use to administer your new Exasol database. Instructions for how to access Exasol Admin is shown in the terminal output at the end of the install process.

- To find the Exasol Admin URL after the installation has completed, use `exasol info`.
- The credentials for connecting to Exasol Admin are stored in the file `secrets.json` in the deployment directory.

Your browser may show a security warning when connecting to Exasol Admin because of the self-signed certificate. Accept this warning and continue.

## πŸ”’ Connect using SSH

To connect with SSH to the EC2 instance that your Exasol database is running on, use `exasol diag shell`.

## ☁️ Add Support for Additional Cloud Platforms

Exasol Personal can be deployed on cloud platforms beyond AWS through **infrastructure presets**. A preset is a self-contained directory of templates and configuration files that the launcher uses to provision infrastructure and install Exasol on it. The launcher ships with built-in presets, and you can also point it at a preset directory on your local filesystem.

### Two preset types

Each deployment uses two presets together:

- **Infrastructure preset** β€” provisions cloud resources (nodes, disks, network) and prepares node bootstrap data. The built-in `aws` preset uses OpenTofu templates to manage AWS resources.
- **Installation preset** β€” defines how Exasol is installed and configured on the provisioned nodes. The built-in `ubuntu` installation preset is used by default and works with any infrastructure preset that follows the same conventions.

### Using presets on the command line

The `install` (and `init`) command takes the infrastructure preset as its first argument and an optional installation preset as its second argument:

```
exasol install [install-preset]
```

**Built-in presets** are selected by name:

```bash
# Use the built-in AWS infrastructure preset with the default installation preset
exasol install aws

# Explicitly specify both presets by name
exasol install aws ubuntu
```

**External presets** on your local filesystem are selected by path. Any argument that looks like a path (starts with `.`, `~`, or contains `/` or `\`) is treated as a directory path:

```bash
# Use a local infrastructure preset directory
exasol install ./my-gcp-preset

# Use local directories for both presets
exasol install ./my-gcp-preset ./my-install-preset

# Use a built-in installation preset with a local infrastructure preset
exasol install /path/to/my-preset ubuntu
```

To see the list of available built-in presets, run:

```bash
exasol presets
```

### Where built-in presets live

Built-in presets are embedded in the launcher binary and sourced from:

- `assets/infrastructure//` β€” infrastructure presets (OpenTofu templates + `infrastructure.yaml`)
- `assets/installation//` β€” installation presets (scripts, cloud-init fragments + `installation.yaml`)

When you run `exasol install`, the selected presets are extracted into the deployment directory under `infrastructure/` and `installation/`.

External presets can live in any folder that you choose.

### Creating a new infrastructure preset

To add support for a new cloud platform, create a preset directory with the following:

1. **`infrastructure.yaml` manifest** β€” at minimum a `name`, `description`, and a `tofu` block pointing to your variables file.
2. **OpenTofu templates** β€” to provision the required resources (compute instances, networking, storage).
3. **Required deployment artifacts** written by the templates to the `infrastructure_artifact_dir` output directory:
- `deployment.json` β€” node details (IPs, SSH info, DB endpoints, TLS cert)
- `secrets.json` β€” credentials (`dbPassword`, `adminUiPassword`)
- `node_access.pem` β€” SSH private key for the launcher to use
4. **Installation preset integration** β€” embed installation assets (from `installation/cloudconf/` and `installation/files/`) into your node bootstrap mechanism (e.g. cloud-init). The existing AWS preset at `assets/infrastructure/aws/` is the reference implementation.

For a detailed description of the preset contract, manifest schemas, variable channels, and compatibility guidelines, see [doc/presets.md](doc/presets.md).

## βš–οΈ Licensing

The Exasol Launcher source code in this repository is open-source software licensed under the [MIT License](./LICENSE). You are free to use, modify, and distribute it. Contributions are made under the same terms.

The launcher installs the **Exasol Database**, which is proprietary software provided by Exasol AG, free for personal use. By deploying it with `exasol install`, you accept the [Exasol Personal End User License Agreement (EULA)](https://www.exasol.com/terms-and-conditions/#h-exasol-personal-end-user-license-agreement).

## πŸ“š Resources & Documentation

Get the most out of Exasol with these resources:

- [Exasol Documentation](https://docs.exasol.com/db/latest/home.htm) β€” Complete database documentation
- [Connect to Exasol](https://docs.exasol.com/db/latest/connect_exasol.htm) β€” Driver downloads and client setup
- [Load Data](https://docs.exasol.com/db/latest/loading_data.htm) β€” Import data into your database
- [SQL Reference](https://docs.exasol.com/db/latest/sql_reference.htm) β€” Complete SQL syntax reference
- [Exasol Community](https://community.exasol.com) β€” Ask questions and share knowledge (use tag `exasol-personal`)