| # Execution Profiles |
| |
| Execution profiles provide a mechanism to group together a set of configuration options and reuse them across different |
| query executions. This feature is specially useful when dealing with different workloads like DSE Graph, Cql OLTP |
| workloads, DSE search, ... |
| |
| These options include: |
| |
| - Load balancing policy |
| - Retry policy |
| - Consistency levels |
| - Per-host request timeout |
| - Graph Options |
| - Graph name |
| - Graph traversal source |
| - Graph read consistency |
| - Graph write consistency |
| |
| ## Using Execution Profiles |
| |
| ### Initializing cluster with profiles |
| |
| Execution profiles should be created when creating the `Client` instance with a name that identifies it and the settings |
| that apply to the profile. |
| |
| ```javascript |
| const aggregationProfile = new ExecutionProfile('aggregation', { |
| consistency: consistency.localQuorum, |
| loadBalancing: new DCAwareRoundRobinPolicy('us-west'), |
| retry: myRetryPolicy, |
| readTimeout: 30000, |
| serialConsistency: consistency.localSerial |
| }); |
| |
| const client = new Client({ |
| contactPoints: ['host1'], |
| localDataCenter, |
| profiles: [ aggregationProfile ] |
| }); |
| ``` |
| |
| Note that while the above options are all the supported settings on the execution profiles, you can specify only the |
| ones that are required for the executions, using the `'default'` profile to fill the rest of the options. |
| |
| #### Default execution profile |
| |
| You can define a default profile, using the name `'default'`: |
| |
| ```javascript |
| const client = new Client({ |
| contactPoints: ['host1'], |
| localDataCenter, |
| profiles: [ |
| new ExecutionProfile('default', { |
| consistency: consistency.one, |
| readTimeout: 10000 |
| }), |
| new ExecutionProfile('graph-oltp', { |
| consistency: consistency.localQuorum, |
| graphOptions: { name: 'myGraph' } |
| }) |
| ] |
| }); |
| ``` |
| |
| The default profile will be used to fill the unspecified options in the rest of the profiles. In the above example, the |
| read timeout for the profile named `'graph-oltp'` will be the one defined in the default profile (10,000 ms). |
| |
| For the settings that are not specified in the default profile, the driver will use the default `Client` options. |
| |
| ### Using an execution profile by name |
| |
| Use the name to specify which profile you want to use for the execution. |
| |
| ```javascript |
| client.execute(query, params, { executionProfile: 'aggregation' }); |
| ``` |
| ### Using an execution profile by instance |
| |
| You can also use the `ExecutionProfile` instance. |
| |
| ```javascript |
| client.execute(query, params, { executionProfile: aggregationProfile }); |
| ``` |
| |
| ### Using default execution profile |
| |
| When the execution profile is not provided in the options, the default execution profile is used. |
| |
| ```javascript |
| client.execute(query, params, null); |
| ``` |