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.
- 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.
- Optionally remove the unused tasktide-< VERSION >/lib/"mysql-connector-j-8.0.33.jar".
- Optionally, remove the unused JNoSQL JARs from "tasktide-< VERSION >/lib/".
- 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" |