Skip to content

Using SQL Databases for TaskTide

The following is a guide for using SQL databases with TaskTide and outlined below. While provisioning RDBMS solutions is out of scope of TaskTide, it is suggested to follow standard MariaDB Docker Instructions. If an SQL backend is being used for TaskTide, then configuration of either NoSQL backend or ItemStore backend is not required.

While maintenance is outside the scope of TaskTide, one resource for usable SQL database drivers is JetBrains.

Please Note it is not recommended to operate multiple database technologies with TaskTide.

The following describes:

  • A Database to point TaskTide to
  • A JDBC implementation for TaskTide to interupt how to interact with RDBMS
  • Applying configurations to the TaskTide config file




1). Provision an Ephemeral MariaDB Instance

Provision an ephemeral MariaDB instance using docker image.

docker container run --rm \
    --name mariaDB \
    --detach \
    -e MARIADB_ROOT_PASSWORD=password \
    -e MARIADB_DATABASE=tasktide \
    -p 3306:3306 \
    mariadb:latest




2). Install MariaDB JDBC

The following instructions are relative to the root folder of the release zip which occur "tasktide-< VERSION >". Adjust upper path references according to your installation where appropriate. Since the MySQL driver is provided within the TaskTide release zip, the following details using Microsoft SQL Server. A similar process can be used for other relational databases.

  1. Download the required JDBC, if not known they are available from JetBrains at this link which downloads version 12.8.1. Then place that jar file into the "Tasktide-< VERSION >/lib" folder.
  2. Optionally remove the unused tasktide-< VERSION >/lib/"mysql-connector-j-8.0.33.jar".
  3. Optionally, remove the unused JNoSQL JARs from "tasktide-< VERSION >/lib/".
  4. Adjust Microsoft SQL Server template config file according to your deployment.




3). Apply Ephemeral MariaDB Configs

Database configuration is a global setting for TaskTide because all of the TaskTides API use it as their coordination layer directly or indirectly. The Manager-API provides the TaskTide repository and CRUD operations against it, that the Engine-API uses for workload acquisition, and registering processing lifecycle events, and the Web-API by exposing the Manager-API through a RESTful interface.

SQL support is provided through JPA-Hibernate using Hikari Data Source and by design their specific configurations can also be applied. Notice how the TaskTide specific configurations only look like labels/annotations, but the core database configurations are external to TaskTide and refer to Hikari Connection Pool for database connection, and Hibernate for semantics.

A single Entity Manager per JVM/TaskTide instance provides "Workflows, Steps, and WorkItems" CRUD operations through TaskTideServiceManager-API. The below lists.

Property Use Example Value(s) Config Parameter Command-Line Parameter
Repository Type Defines the database backend type to use SQL tasktide.core.repository.type "NA"
Database URL Defines the database to use for persisting "Workflows, Steps, and WorkItems" jdbc:mysql://localhost:3306/tasktide_database datasource.user "NA"
Provider Defines which database driver to use com.mysql.cj.jdbc.Driver datasource.driver "NA"
Username Username to use for authenticating requests canBeSetAsAnEnvironmentalVariable datasource.user "NA"
Password Password to use for authenticating user requests canBeSetAsAnEnvironmentalVariable datasource.password "NA"
Dialect SQL-JDBC bridge org.hibernate.dialect.MariaDBDialect hibernate.dialect "NA"
DDL Auto Schema generation tool see hibernate documentation linked here update hibernate.hbm2ddl.auto "NA"