After acknowledging the fact that data indexers are some of the most valuable pieces of infrastructure for web3 projects, especially associated with new Layer2 solutions like Rollups, the next obvious question comes in the form of choice. Shared vs Dedicated data indexing services? Which one is the right choice for you? Both come with their own set of pros and cons. Whether it is a simple indexer based on relational databases, SubQuery, or GraphQL-based indexers specialized for blockchain operations, the decision ultimately boils down to the use case of your project. So, Let’s analyze those neutrally and try to figure out which one might be the best fit for your specific use case.
The infrastructure:
The names “Shared” and “Dedicated” are pretty descriptive. They tell us how the indexer will be operated. A shared indexing service serves multiple parties and shares the infrastructure between those. In contrast, a dedicated service prioritizes your project and dedicates the entire infrastructure to you only. And this working principle creates the differences between the two types.
The key differences between Shared & Dedicated services:
- Cost
If it were not for the cost, why would anyone bother to share their infrastructure with anyone else? Cost is THE major separating factor. It comes in the form of setup, maintenance, and servers. Cost is obviously lower for the “Shared” indexing solutions as they “Share” the resources and hence the cost between multiple parties. However, it’s slightly on the higher side for “Dedicated” indexers. However, the additional cost brings some additional features, as we shall see. So, if you’re on a tight budget, your requirement is less, and you don’t want a ton of resources, you would choose “Shared” indexing service, whereas if you have more things to do with data and budget is not the issue, you’d choose “dedicated” indexing service.
- Performance
Cost is an important factor, but not the only factor. Shared indexers take a slight hit back in case of performance because the service distributes the resources between the users in the “shared” environment. Hence, it’s almost always slower than the dedicated counterpart if other things are constant. And “Dedicated” services shine here as they get special treatment through complete resource access. The increased allocation means faster processing of requests, faster data retrieval, the ability to optimize for optimal performance, and, therefore, better user experience. If performance is your priority, you will choose a “dedicated” indexing service; if you’re in the initial phases of building the project, you may want to cut down costs and go with a slightly low-performance option, which is a “shared” server.
- Control
“Dedicated” data indexing solutions give you better control over the underlying data and the infrastructure setup, as everything will be built for your specific project. This is not necessarily the case with “Shared” solutions, as they need to be suitable for more than one project. Allowing anyone to customize the infrastructure to a greater extent may lead to others getting left out. Hence, if you want to customize the behavior of your indexer, you may prefer “a Dedicated” solution over a “Shared” one.
- Scalability
When the network activity increases, “Dedicated” indexers have a better chance of performing well instead of “Shared” indexers. This is because the shared infrastructure will still try to balance the performance throughout the network of projects working together to share the resources. And in this case, it won’t give you the priority you may need on an urgent basis. And if your project grows big enough, the shared infrastructure may even become a bottleneck for your growth. In such cases, “Dedicated” indexers work better and are more futureproof. But again, it is subject to many variables. So, if you expect a very high scale in a short time, “dedicated” infrastructure is for you, and if you think you’ll grow slowly, “Shared” infrastructure makes more sense.
While these are the primary things to focus on while choosing between a dedicated or shared indexing service, there are other factors too, such as maintenance cost, the infrastructure requirements, the infrastructure provider, uptime guarantee of the service, query response time, ease of setting up and usage, the additional features and more, after considering each of these factors, you’ll be able to make an informed decision.
Conclusion:
But to sum it all up, if you’re a small project on a tight budget, don’t need very high performance, and still want a decent indexing service, you would want to choose the “Shared” indexation option. And if you don’t have a strictly low budget and want high performance, faster indexing service that offers a high degree of customization, you want to choose the “Dedicated” indexation option.