Configure Query Containers
Configuring Query Containers
When you create a continuous query, you can specify which query container should host that query. This enables you to isolate groups of queries to use a specific set of resources. A new installation of Drasi will include a default
query container but you can also create your own.
Query Container Configuration
The Kubernetes resource definition for a Query Container has the following structure:
apiVersion: query.reactive-graph.io/v1
kind: QueryContainer
metadata:
name: default
spec:
queryHostCount: <query host count>
defaultStore: <profile name>
storage:
<profile name>:
kind: <type>
property1: <value1>
property2: <value2>
<profile name>:
kind: <type>
property1: <value1>
property2: <value2>
results:
- name: <property_1_name>
value: <property_1_value>
- name: <property_2_name>
value: <property_2_value>
The following table provides a summary of these configuration settings:
Name | Description |
---|---|
apiVersion | Must have the value query.reactive-graph.io/v1 |
kind | Must have the value QueryContainer |
metadata.name | The id of the Query Container. Must be unique. The id is used to manage the QueryContainer through Kubectl. |
spec.queryHostCount | The number of query host instances to run for this query container. The queries within this container will be distributed across a number of query host instances. Scale this up to support a larger number of queries. |
spec.defaultStore | The default storage profile for queries that do not request a specific one. |
spec.storage | This section specifies the storage profiles that this container will support |
spec.storage.(profile name) | The name of a storage profile identified by queries |
spec.storage.(profile name).kind | The type of the storage profile. Valid values are memory , redis and rocksDb |
spec.storage.(profile name).(property) | Specific config values for each storage type |
spec.results | Name/value pairs used to configure the results store. These are documented below. |
The following table provides a summary of the properties:
Name | Description |
---|---|
MONGO_URI | The MongoDB connection string to use, example: mongodb://rg-mongo:27017 |
MONGO_RESULT_STORE_DB_NAME | The DB name to use for the Mongo result store |
MONGO_RESULT_STORE_COLL_NAME | The collection name to use for the Mongo result store |
Example
apiVersion: query.reactive-graph.io/v1
kind: QueryContainer
metadata:
name: default
spec:
queryHostCount: 3
defaultStore: rocks
storage:
memory:
kind: memory
enableArchive: false
redis:
kind: redis
connectionString: redis://rg-redis:6379
rocks:
kind: rocksDb
storageClass: azurefile-csi-premium
enableArchive: false
directIo: false
results:
MONGO_URI: mongodb://rg-mongo:27017
MONGO_RESULT_STORE_DB_NAME: ReactiveGraph
MONGO_RESULT_STORE_COLL_NAME: Results
In Memory storage options
Name | Description |
---|---|
enableArchive | Enable the archive feature that supports time travel functions |
Redis storage options
Name | Description |
---|---|
connectionString | The Redis connection string, eg. redis://rg-redis:6379 |
cacheSize (optional) | Use an in-memory LRU cache |
RocksDb storage options
Name | Description |
---|---|
storageClass (optional) | The storage class to provision the underlying volume. Must support ReadWriteMany access. (default :azurefile-csi-premium ) |
directIo (optional) | Enable direct IO for RocksDb (default: false ) |
enableArchive (optional) | Enable the archive feature that supports time travel functions (default: false ) |