Cassandra Data Source (CASSANDRA
) v25.1+ PREVIEW
The Cassandra data source enables interaction with a Cassandra cluster.
While it shares similarities with other Kubling database data sources, it is not categorized under that group because:
- Capabilities: The supported query operations and optimizations differ from standard relational databases.
- Translation Mechanism: The internal query translation process requires a distinct approach for Cassandra.
Due to these differences, Cassandra is handled in Kubling as a separate data source type under the database datasource category.
As of version v25.1
, only passthrough
mode is supported. This means that custom DDL definitions are not yet available.
We plan to introduce this capability in a future release, along with support for synthetic
tables.
However, you can still define additional columns through the schema configuration.
Configuration
Cassandra Source configuration
type: "object"
id: "schema:kubling:dbvirt:model:vdb:sources:CassandraSourceConfig"
properties:
datastaxConfigFilePath:
type: "string"
description: "Specifies the path to the DataStax configuration file. If provided,\
\ this file will take precedence over individual configuration fields such as\
\ address, dataCenter, etc."
address:
type: "string"
dataCenter:
type: "string"
keyspace:
type: "string"
description: "The default keyspace for all queries. This will be used even if\
\ the configuration is loaded from a DataStax configuration file."
userName:
type: "string"
token:
type: "string"
port:
type: "integer"
cache:
type: "object"
id: "schema:kubling:dbvirt:translation:model:CacheDataSourceConfig"
properties:
enabled:
type: "boolean"
description: "Specifies whether the cache is enabled for this Data Source.\
\ Default is false."
ttlSeconds:
type: "integer"
description: "The time-to-live (TTL) for cache entries, in seconds. Default\
\ is 43,200 seconds (12 hours)."
enableSoftTransactions:
type: "boolean"
allowBruteForceOperations:
type: "boolean"
description: "Allows the engine to perform Update and Delete operations using\
\ all fields as a fallback when no other way to identify rows is available."
connectionPool:
type: "object"
id: "schema:kubling:dbvirt:model:vdb:sources:ConnectionPool"
properties:
partitions:
type: "integer"
description: "Internal connections pool partitions. Default: 2"
minConnections:
type: "integer"
description: "Minimum available connections in the pool per partition. The\
\ overall total Minimum connections must be calculated per partition, that\
\ is: partitions * minConnections. Default: 3"
maxConnections:
type: "integer"
description: "Maximum connections to be added to the pool per partition. Once\
\ reached, subsequent connection requests will be enqueued. The overall\
\ total Maximum connections must be calculated per partition, that is: partitions\
\ * maxConnections. Default: 10"
maxWaitMilliseconds:
type: "integer"
description: "Maximum wait time in milliseconds the thread will wait in the\
\ queue for a connection from the pool. Once reached, an error is thrown\
\ if no available connection.Default: 10000ms (10s)"
contributesToHealth:
type: "boolean"
description: "Indicates whether this data source contributes to the engine's overall\
\ health status. When set to true, if this data source is not healthy, the engine\
\ will be marked as unhealthy. Otherwise, the health status of this data source\
\ is ignored in the overall assessment."
Configuration example
dataSources:
- name: "cassandra"
dataSourceType: "CASSANDRA"
configObject:
address: 127.0.0.1
dataCenter: "datacenter1"
keyspace: "test_keyspace"
cache:
enabled: false
ttlSeconds: 43200
allowBruteForceOperations: false
schema:
type: "PHYSICAL"
cacheDefaultStrategy: "NO_CACHE"
Using a DataStax Configuration File v25.2+
Kubling supports the use of a DataStax configuration file when connecting to a Cassandra cluster.
This allows for advanced connection options, such as:
- Custom load balancing policies
- SSL configurations
- Connection pooling and timeouts
- Retry and reconnection policies
- Authentication mechanisms
Example
dataSources:
- name: "cassandra"
dataSourceType: "CASSANDRA"
configObject:
datastaxConfigFilePath: "/etc/kubling/dse-driver.conf"
schema:
type: "PHYSICAL"
cacheDefaultStrategy: "NO_CACHE"
Note: The file must be accessible by the engine at runtime.
For more details about available options, see the official DataStax driver documentation:
https://docs.datastax.com/en/developer/java-driver/latest/manual/core/configuration/