Search Shortcut cmd + k | ctrl + k
cassandra

Connect to Apache Cassandra, ScyllaDB, and DataStax Astra databases directly from DuckDB. Query Cassandra tables using SQL with support for all major Cassandra data types, SSL/TLS connections, and cloud deployments.

Maintainer(s): dioptre

Installing and Loading

INSTALL cassandra FROM community;
LOAD cassandra;

Example

-- Load the extension
LOAD 'cassandra';

-- Connect to local Cassandra
SELECT * FROM cassandra_scan('my_keyspace.my_table', host='127.0.0.1', port=9042);

-- Execute custom CQL queries
SELECT * FROM cassandra_query('SELECT * FROM my_keyspace.users WHERE status = ''active''', host='127.0.0.1');

-- Attach a Cassandra database for persistent access
ATTACH 'host=127.0.0.1 port=9042 keyspace=my_keyspace' AS cass_db (TYPE cassandra);
SELECT * FROM cass_db.users LIMIT 10;

About cassandra

The Cassandra extension enables DuckDB to connect to Apache Cassandra, ScyllaDB, and DataStax Astra databases. It supports three connection methods:

1. Direct Table Scanning - Query specific tables with cassandra_scan() 2. Custom CQL Queries - Execute any CQL query with cassandra_query()
3. Database Attachment - Attach entire keyspaces with ATTACH for persistent access

Supported Databases:

  • Apache Cassandra (local and remote)
  • DataStax Astra (cloud Cassandra)
  • ScyllaDB (Cassandra-compatible)
  • Any Cassandra-compatible database

Security Features:

  • SSL/TLS encryption with custom certificates
  • Username/password authentication
  • DataStax Astra token-based authentication
  • Base64 and hex-encoded certificate support

Data Type Support:

  • All primitive types (text, int, bigint, double, boolean, etc.)
  • UUID and TimeUUID with proper conversion
  • Timestamp with timezone support
  • Collections (list, set, map) as JSON strings
  • Blob data with binary support
  • NULL value handling

Connection Examples:

-- SSL connection with certificates
SELECT * FROM cassandra_scan('keyspace.table', 
    host='secure-cluster.com', 
    ssl=true, 
    certfile_b64='LS0tLS1CRU...',
    usercert_b64='LS0tLS1CRU...',
    userkey_b64='LS0tLS1CRU...'
);

-- DataStax Astra connection
SELECT * FROM cassandra_query('SELECT * FROM users', 
    client_id='your-client-id',
    client_secret='your-client-secret',
    astra_host='your-db-id-region.apps.astra.datastax.com',
    astra_ca_cert_b64='LS0tLS1CRU...',
    astra_client_cert_b64='LS0tLS1CRU...',
    astra_client_key_b64='LS0tLS1CRU...'
);

Added Functions

function_name function_type description comment examples
cassandra_query table NULL NULL  
cassandra_scan table NULL NULL  

Added Settings

name description input_type scope aliases
cassandra_cert_file_hex SSL certificate file in hex format VARCHAR GLOBAL []
cassandra_consistency Default consistency level VARCHAR GLOBAL []
cassandra_contact_points Comma-separated list of Cassandra contact points VARCHAR GLOBAL []
cassandra_keyspace Default Cassandra keyspace VARCHAR GLOBAL []
cassandra_password Cassandra password for authentication VARCHAR GLOBAL []
cassandra_port Cassandra port number INTEGER GLOBAL []
cassandra_use_ssl Enable SSL/TLS connections BOOLEAN GLOBAL []
cassandra_user_cert_hex SSL user certificate file in hex format VARCHAR GLOBAL []
cassandra_user_key_hex SSL private key file in hex format VARCHAR GLOBAL []
cassandra_username Cassandra username for authentication VARCHAR GLOBAL []