Performance
Performance is a critical part of the user's experience, which is why we have designed features to reduce query response times.
Field usage
When building your data sets, you can decide if each field should be used as a grouping or a metric.
For date-time fields specifically, you can limit the truncating functions that can be applied. For example, you could only allow grouping a date time field by hour, day or year instead of per second or minute.
You can use this to your advantage when defining indexes for your database and optimize performance using these limitations you can define.
Additionally, if there are fields that will commonly be used in filters and sorts then you might consider defining an index on these fields to optimize query performance.
SQL joins
Vizzly SQL integrations support joins, however, you should consider the impact using them will have on performance if you rely on too many of them.
In an ideal world, each Vizzly data set would pull data from its own table, thus eliminating the need for joins.
Workload
The docker image we provide does not run the queries itself. Instead, it is responsible for validating JSON Web Tokens (JWTs) and transforming Vizzly queries into SQL that runs on the underlying database.
Hardware considerations
The recommended hardware requirements will depend on several different factors, including:
- The number of concurrent users you expect to be viewing the dashboard.
- The traffic pattern of requests made. Is the traffic predictable or spiky?
- How many charts does a typical user have on their dashboard?
- Are you using required, dashboard-level filters to restrict the amount of data each query runs against?
If the Vizzly query engine is proven to be the bottleneck, then to increase performance, consider scaling horizontally by adding more containers running the Vizzly docker image, or vertically by provisioning larger compute resources.
Resiliency
The query engine in the docker image is stateless and so it can be easily scaled horizontally to reduce performance or resiliency concerns and easily auto-scaled on all major cloud providers if your traffic pattern is spiky.