AWS Keyspace as managed cassandra for Temporal

Hi,

It would be great to be able to use AWS keyspace for Temporal. I found some posts about it but I haven’t found a feature request to have the follow-up.

Thanks!

It is not possible until AWS Keyspaces adds support for LWT. See the Batch section from the Functional Differences: Amazon Keyspaces versus Apache Cassandra page.

Thank you Maxim.

It seems from that webpage that Keyspaces supports LWT actually:

“Amazon Keyspaces (for Apache Cassandra) fully supports compare and set functionality on INSERT and UPDATE commands, which are known as lightweight transactions (LWTs) in Apache Cassandra. As a serverless offering, Amazon Keyspaces (for Apache Cassandra) provides consistent performance at any scale, including for lightweight transactions. With Amazon Keyspaces, there is no performance penalty for using lightweight transactions.”

I’m pretty sure that Temporal needs conditional DELETE as well. I think there were other limitations that were showstoppers.

If anyone wants to make this work we would welcome a contribution.

We were considering using AWS Keyspaces as persistence store for Temporal as well. That same AWS document about the differences between Keyspaces and Cassandra now states:

Amazon Keyspaces (for Apache Cassandra) fully supports compare and set functionality on INSERT , UPDATE , and DELETE commands, which are known as lightweight transactions (LWTs) in Apache Cassandra. [Source]

@maxim would you know what the other limitations are that might be showstoppers?

Sorry, realized that you were referring to the Batch section specifically, and that still states:

Only unconditional INSERT , UPDATE , or DELETE commands are permitted in a batch.

So I assume that is still a showstopper? :cry:

Yes. Temporal relies on conditional batches very heavily.

Thanks for the confirmation. We are really looking for a managed solution for the DB for our Temporal deployment; between RDS/Aurora MySQL/PostgreSQL what would be the main considerations for picking the right solution from a Temporal point-of-view?

The main consideration if any of these DBs can support the maximum update rate your use case needs.