Functional Differences: Amazon Keyspaces versus Apache Cassandra
Following are the functional differences between Amazon Keyspaces and Apache Cassandra.
Topics
- Apache Cassandra APIs, Operations, and Data Types
- Asynchronous Creation and Deletion of Keyspaces and Tables
- Authentication and Authorization
- Batch
- Cluster Configuration
- CQL Query Throughput Tuning
- Empty Strings
- Lightweight Transactions
- Load Balancing
- Pagination
- Prepared Statements
- Range Delete
- System Tables
Apache Cassandra APIs, Operations, and Data Types
Amazon Keyspaces supports all commonly used Cassandra data-plane operations, such as creating keyspaces and tables, reading data, and writing data. To see what is currently supported, see Supported Cassandra APIs, Operations, and Data Types in Amazon Keyspaces.
Asynchronous Creation and Deletion of Keyspaces and Tables
Amazon Keyspaces performs data definition language (DDL) operations, such as creating and deleting keyspaces and tables, asynchronously. To learn how to monitor the creation status of resources, see Creating Keyspaces in Amazon Keyspaces and Creating Tables in Amazon Keyspaces. For a list of DDL statements in the CQL language reference, see DDL Statements (Data Definition Language) in Amazon Keyspaces.
Authentication and Authorization
Amazon Keyspaces (for Apache Cassandra) uses AWS Identity and Access Management (IAM) for user authentication and authorization, and supports the equivalent authorization policies as Apache Cassandra. As such, Amazon Keyspaces does not support Apache Cassandra's security configuration commands.
Batch
Amazon Keyspaces supports unlogged batch commands with up to 30 commands in the batch. Only unconditional INSERT, UPDATE, or DELETE commands are permitted in a batch. Logged batches are not supported.
Cluster Configuration
Amazon Keyspaces is serverless, so there are no clusters, hosts, or Java virtual machines (JVMs) to configure. Cassandra’s settings for compaction, compression, caching, garbage collection, and bloom filtering are not applicable to Amazon Keyspaces and are ignored if specified.
CQL Query Throughput Tuning
Amazon Keyspaces supports up to 3000 CQL queries per TCP connection per second, but there is no limit on the number of connections a driver can establish. Most open source Cassandra drivers establish a connection pool to Cassandra and load balance queries over that pool of connections. Amazon Keyspaces exposes 9 peer IP addresses to drivers, and the default behavior of most drivers is to establish a single connection to each peer IP address. Therefore, the maximum CQL query throughput of a driver using the default settings will be 27000 CQL queries per second. To increase this number, we recommend increasing the number of connections per IP address your driver is maintaining in its connection pool. For example, setting the maximum connections per IP address to 2 will double the maximum throughput of your driver to 54000 CQL queries per second.
Empty Strings
Amazon Keyspaces supports empty strings and blob values. However, empty strings and blobs are not supported as clustering column values.
Lightweight Transactions
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.
Load Balancing
The system.peers
table entries correspond to Amazon Keyspaces load balancers. For
best results, we recommend using a round robin load-balancing policy and tuning the
number
of connections per IP to suit your applications needs.
Pagination
Amazon Keyspaces paginates results based on the number of rows that Keyspaces reads to process a request, not the number of rows returned in the result set. As a result, some pages may contain less rows than you specify in PAGE SIZE for filtered queries. In addition, Amazon Keyspaces paginates results automatically after reading 1MB of data to provide customers with consistent, single-digit millisecond read performance. For more information, see Paginating Results in Amazon Keyspaces
Prepared Statements
Amazon Keyspaces supports the use of prepared statements for data manipulation language (DML) operations, such as reading and writing data. Amazon Keyspaces does not currently support the use of prepared statements for data definition language (DDL) operations, such as creating tables and keyspaces. DDL operations must be executed outside of prepared statements.
Range Delete
Amazon Keyspaces supports deleting items in range. A range deletion is limited to 1,000 rows in a single command. A range delete is atomic, but it is not isolated.
System Tables
Amazon Keyspaces populates the system tables required by Apache 2.0 open source Cassandra drivers. The system tables visible to a client contain information unique to the authenticated user. The system tables are fully controlled by Amazon Keyspaces and are read-only.