Camunda using Cloud Spanner in GCP

Hi there. Is there a way to use Camunda Engine with Cloud Spanner in GCP? I know there is a migration guide from Google explaining the steps from Postgres to Cloud Spanner.

Thanks!

Hi @rap7,

Unfortunately, the Camunda Engine doesn’t currently support Google Cloud Spanner. In general, the biggest problem isn’t with migrating the DDL to a Cloud Spanner syntax, but with how Spanner works.

The Process Engine relies on an Optimistic Locking mechanism to improve performance and avoid pessimistic locks. In this context, the correct operation of the engine depends on the Transaction Isolation level (it requires READ_COMMITTED), and how data is replicated and accessed.

I’m not familiar with the internals of Spanner, but CockroachDB, which is a similar project, uses an Optimistic Locking mechanism with a stronger Transaction Isolation level (SERIALIZABLE), and no pessimistic locking options. This might conflict with how the engine handles transactions. You would also need to confirm that the wire protocol that is used to submit SQL queries to Spanner is compatible with one of the SQL dialects that the Camunda Engine supports (i.e. MySQL/MariaDB, PostgreSQL, Oracle, Sql Server, DB2, H2), otherwise the Engine wouldn’t be able to interact with Spanner.

Best,
Nikola

Thanks Nikola. Do you know if there is any way to support active/active database with two regions in a cloud environment (I mean, one DB in each zone)?

Hi @rap7,

We currently support MariaDB Galera, which supports an active-active setup. However, I’m not sure what the performance would be with the nodes divided in different zones.

Another thing worth mentioning is that we’re currently looking into adding CockroachDB support (https://jira.camunda.com/browse/CAM-12071). As I mentioned before, CockroachDB is very similar to Spanner and should provide the features you need. However, we’re still in the early stages of development, so can’t confirm anything.

Best,
Nikola

Hi Rap7

What about AWS RDS - it supports a master and synchronous read replica across availability zones. If the master fails, AWS will use DNS to fail across to the standby instance…Thus you can potentially use Aurora, Postgresql, MySql

regards

Rob

1 Like