# Cassandra and ScyllaDB

Apache Cassandra and ScyllaDB open in a CQL workspace. It browses a table one partition at a time, pages the way the driver does, runs CQL, and stages inserts, updates and deletes as the exact statements they will run.

## Where to find it

| Action | How |
| --- | --- |
| Create a connection | `New connection`, `⌘N` (`Ctrl+N`), then `Apache Cassandra` or `ScyllaDB` |
| Open the workspace | `Connect` on a saved connection |
| Browse keyspaces and tables | `CQL catalog` on the left, with `Show system keyspaces` for the system ones |
| Read a partition | Select a table, enter each partition key, then `Load partition` |
| Run CQL | `CQL editor`, then `Run` |
| Stage a change | `Staged CQL mutations`, then `Stage and validate` |
| Switch connection | `⌘⇧K` (`Ctrl+Shift+K`) |
The catalog sits on the left, the editor and its history across the top, and the results beside the staged mutations below.

## Connecting

Choose `Apache Cassandra` or `ScyllaDB` in `New connection`. Enter `Contact points` as comma-separated seed hosts, the `CQL port`, the `Local datacenter` and an optional `Default keyspace`, with a `Username` and `Password` when the cluster requires them.

`TLS verification` is `Disabled` or `Verify certificate and hostname`, with optional PEM files for a CA, a client certificate and a key. `Consistency` and `Serial consistency` set the defaults for the connection.

## Browsing by partition

Select a table and an input appears above the results for each partition key column. Rows load only when every partition key has a value and you choose `Load partition`, because the workspace never adds `ALLOW FILTERING`, token scans or `OFFSET`.

Each value is a CQL literal, so text needs single quotes. Results arrive 100 rows at a time, and `Next driver page` continues from the paging state the driver returned.

## Values

Cells cross from the driver to the window as tagged values, so `decimal` and `varint` keep every digit and nothing is rounded. Sets, maps, tuples and user-defined types keep their structure, a blob shows as hexadecimal and a timestamp as milliseconds. Hover a cell to read it as a CQL literal you can paste into the editor.

## CQL

The `CQL editor` runs one statement with `Run`, at the consistency chosen beside it: `ONE`, `LOCAL_QUORUM`, `QUORUM` or `ALL`. Named markers take their values as JSON in `Prepared values`. `History` keeps the last 50 distinct statements on this computer. A server error, such as a refusal that asks for `ALLOW FILTERING`, appears above the results with the server's message.

## Editing

Choose `Insert`, `Update` or `Delete`, write one `column = CQL literal` line per value and, for an update or delete, per key column, then choose `Stage and validate`. Inserts need every partition key, updates and deletes need the complete primary key, and `TTL seconds` adds `USING TTL` to an insert or update.

A condition turns an update or delete into a lightweight transaction with `IF`, and any text in the insert condition box adds `IF NOT EXISTS`. `Apply staged` runs the listed statements in order, and because CQL has no rollback across statements, a failure reports how many earlier statements remain applied.

## Good to know

- ScyllaDB is its own provider with a `scylladb://` URL, and shares this workspace with Cassandra.
- A read-only connection refuses write and schema CQL and staged statements before they reach the cluster.
- `Cancel` stops waiting for a request, but a coordinator that already accepted it may still complete it.
- There is no row inspector, schema designer, diagram, snapshot, import or export here. CQL tables have no foreign keys to draw, and the SQL dump and CSV tools do not describe CQL data.

## Related

- [Connections](https://bobbytables.app/docs/connections.md)
- [Safe mode, read-only mode and the console](https://bobbytables.app/docs/safe-mode.md)
- [Redis and Valkey](https://bobbytables.app/docs/redis.md)
- [MongoDB](https://bobbytables.app/docs/mongodb.md)
