Getting started
Getting started with the Node.js driver for DataStax Enterprise.
Upgrading from the core driver
Upgrading from cassandra-driver
to dse-driver
can be as simple as changing the import statement to point to the
dse package:
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['host1'] });
Becomes:
const dse = require('dse-driver');
const client = new dse.Client({ contactPoints: ['host1'] });
All CQL features in the Cassandra driver (see the core driver features) are available in the DSE driver.
Connecting to a DSE cluster
To connect to a DSE cluster, you need to provide at least 1 node of the cluster, if there are more nodes than the ones provided, the driver will automatically discover all the nodes in the cluster after it connects to the first node.
Typically you create only 1 Client
instance for a given Cassandra cluster and use it across your application.
const dse = require('dse-driver');
const client = new dse.Client({ contactPoints: ['host1'] });
client.connect();
At this point, the driver will be connected to one of the contact points and discovered the rest of the nodes in your cluster.
See Getting started with DataStax Node.js driver for more information.
Working with mixed workloads
The driver features Execution Profiles that provide a mechanism to group together a set of configuration options and reuse them across different query executions.
Execution Profiles are specially useful when dealing with different workloads like
Graph and CQL workloads, allowing you to use a single Client
instance for all workloads, for example:
const client = new dse.Client({
contactPoints: ['host1'],
profiles: [
new ExecutionProfile('time-series', {
consistency: consistency.localOne,
readTimeout: 30000,
serialConsistency: consistency.localSerial
}),
new ExecutionProfile('graph', {
loadBalancing: new DseLoadBalancingPolicy('graph-us-west'),
consistency: consistency.localQuorum,
readTimeout: 10000,
graphOptions: { name: 'myGraph' }
})
]
});
// Use an execution profile for a CQL query
client.execute('SELECT * FROM system.local', null, { executionProfile: 'time-series' });
// Use an execution profile for a gremlin query
client.executeGraph('g.V().count()', null, { executionProfile: 'graph' });