Multiple Virtual Instances

Why Multiple Virtual Instances?

Multiple Virtual Instances allow you to isolate and independently scale compute for streaming ingest, low latency queries, and multiple applications also referred to as compute-compute separation. The workload served by one Virtual Instance does not affect the workload running on any other Virtual Instance.

Streaming Ingest Isolation & Scaling

Virtual Instances allow you to isolate and independently scale compute for ingest and queries. To eliminate the problem of compute contention, we recommend using one Virtual Instance for handling all the streaming ingest workload exclusively (with no query requests routed to that Virtual Instance, sometimes referred to as an “Ingest VI”), and additional VIs for each query use case.

💡

Multi-VI Tip: Configuring Separate Ingest and Default Query VIs

Only theIngest Virtual Instance may be used for streaming ingest. We recommend dedicating this Virtual Instance to streaming ingest and using other Virtual Instances for queries.

You can also configure a Default Query Virtual Instance for queries to run on by default if no other Virtual Instance is specified. Learn more about how to configure this in our Default Query Virtual Instance docs.

Isolation & Scaling for Multiple Real-time Applications

Suppose you're using Rockset to power both a feature in your customer-facing application and an internal dashboard. A spike in internal usage shouldn't degrade the performance of your customer-facing application, and you should be able to isolate and scale compute for each application independently (upsizing customer-facing compute for an anticipated event, for example). We recommend using a dedicated Virtual Instance for each application.

Concurrency Scaling

Applications with fluctuations in demand can provide a consistent and predictable performance by scaling out the query requests to multiple virtual instances. Each of the virtual instances can mount the same set of collections and serve the same queries, allowing for better load balancing of increased loads during peak times.

Isolation for Analysis/Development

Virtual Instances allow you to isolate compute for one-off data analysis sessions (say running a set of complex compute-intensive aggregations for a monthly or quarterly report). You can run a compute-intensive query on one Virtual Instance while your application queries are safely served from another.

💡

Multi-VI Tip

We suggest using a second dedicated Virtual Instance for development queries to avoid affecting your production workloads.

Multi-Tenant Isolation

Virtual Instances allow you to provide your own tenants (whether they be internal teams or customers) compute isolation and track usage and spend accordingly. You can mount collections across these Virtual Instances to share data as needed while using custom roles to limit access.

Providing a dedicated Virtual Instance for your largest tenants enables a better experience by avoiding resource contention from your smaller tenants and vice versa.