Relational JDBC

This implementation leverages Quarkus for datasource management and supports configuration through environment variables or JVM -D flags at startup. For more information, refer to the Quarkus configuration reference.

We have 2 options for configuring the persistence backend:

1. Relational JDBC metastore with username and password🔗

Using environment variables:

1POLARIS_PERSISTENCE_TYPE=relational-jdbc
2
3QUARKUS_DATASOURCE_USERNAME=<your-username>
4QUARKUS_DATASOURCE_PASSWORD=<your-password>
5QUARKUS_DATASOURCE_JDBC_URL=<jdbc-url-of-postgres>

Using properties file:

1polaris.persistence.type=relational-jdbc
2quarkus.datasource.jdbc.username=<your-username>
3quarkus.datasource.jdbc.password=<your-password>
4quarkus.datasource.jdbc.jdbc-url=<jdbc-url-of-postgres>

2. AWS Aurora PostgreSQL metastore using IAM AWS authentication🔗

 1polaris.persistence.type=relational-jdbc
 2quarkus.datasource.jdbc.url=jdbc:postgresql://polaris-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:6160/polaris
 3quarkus.datasource.jdbc.additional-jdbc-properties.wrapperPlugins=iam
 4quarkus.datasource.username=dbusername
 5quarkus.datasource.db-kind=postgresql
 6quarkus.datasource.jdbc.additional-jdbc-properties.ssl=true
 7quarkus.datasource.jdbc.additional-jdbc-properties.sslmode=require
 8quarkus.datasource.credentials-provider=aws
 9
10quarkus.rds.credentials-provider.aws.use-quarkus-client=true
11quarkus.rds.credentials-provider.aws.username=dbusername
12quarkus.rds.credentials-provider.aws.hostname=polaris-cluster.cluster-xyz.us-east-1.rds.amazonaws.com
13quarkus.rds.credentials-provider.aws.port=6160

This is the basic configuration. For more details, please refer to the Quarkus plugin documentation.

The Relational JDBC metastore currently relies on a Quarkus-managed datasource and supports only PostgresSQL and H2 databases. At this time, official documentation is provided exclusively for usage with PostgreSQL. Please refer to the documentation here: Configure data sources in Quarkus.

Additionally, the retries can be configured via polaris.persistence.relational.jdbc.* properties; please refer to the Configuring Polaris section.

Bootstrapping Polaris🔗

Before using Polaris with the Relational JDBC backend, you must bootstrap the metastore to create the necessary schema and initial realm. This is done using the Admin Tool.

Using Docker:

1docker run --rm -it \
2  --env="polaris.persistence.type=relational-jdbc" \
3  --env="quarkus.datasource.username=<your-username>" \
4  --env="quarkus.datasource.password=<your-password>" \
5  --env="quarkus.datasource.jdbc.url=<jdbc-url-of-postgres>" \
6  apache/polaris-admin-tool:latest bootstrap -r <realm-name> -c <realm-name>,<client-id>,<client-secret>

Using the standalone JAR:

1java \
2  -Dpolaris.persistence.type=relational-jdbc \
3  -Dquarkus.datasource.username=<your-username> \
4  -Dquarkus.datasource.password=<your-password> \
5  -Dquarkus.datasource.jdbc.url=<jdbc-url-of-postgres> \
6  -jar polaris-admin-tool.jar bootstrap -r <realm-name> -c <realm-name>,<client-id>,<client-secret>

For more details on the bootstrap command and other administrative operations, see the Admin Tool documentation.