Testing Cassandra compatible APIs

In this quick blog post, I’m going to assess how the databases that advertise themselves as “Cassandra API-compatible” fare in the compatibility department. But that is all I will do, only API testing, and not an extensive testing, just based on the APIs I see used often. Based on this, you can start building an informed decision on whether or not to change databases. The contenders:
So, with these results, which are not a full comparison (I have left out other parts offered in these systems), you can decide if it is compatible enough for you.
- Apache Cassandra 4.0
- Installation: Build from Source
- Yugabyte - https://www.yugabyte.com/
- “YCQL is a transactional flexible-schema API that is compatible with the Cassandra Query Language (CQL). “
- Installation: Docker
- ScyllaDB - https://www.scylladb.com/
- “Apache Cassandra’s wire protocol, a rich polyglot of drivers, and integration with Spark, Presto, and Graph tools make for resource-efficient and performance-effective coding.”
- Installation: Docker
- Azure Cosmos - https://azure.microsoft.com/en-us/services/cosmos-db/
- “Azure Cosmos DB provides native support for NoSQL and OSS APIs including MongoDB, Cassandra, Gremlin and SQL”
- Installation: Azure Portal Wizard
What was tested
In this test, the following CQL APIs were tested:- Keyspace Creation
- Table Creation
- Adding a Column to a table (Alter table)
- Data Insert
- Data Insert with TTL (Time-to-live)
- Data Insert with LWT (Lightweight Transactions)
- Select Data
- Select data with a full table scan (ALLOW FILTERING)
- Creating a Secondary Index (2I)
Cassandra 4.0
- All statements worked (as expected)
CosmosDB
LWT Not supported ALLOW FILTERING Not supported 2i Is Not supportedScylla
LWT Not supportedYugabyte
2i Not SupportedResults Table
