Indexes in RavenDB can be automated.
We use automatic indexes, or you can define your own. If you are coming from a relational background, you are used to having a bad choice with indexes: The more indexes the slower writes. The less indexes, the slower reads.
That’s like choosing between a rock and a hard place.
RavenDB will update indexes in the background. We process them behind the scenes. That allows us to do some amazing optimizations. We can aggregate and batch them for a huge boon to performance. When you write, you don’t have to wait. The choice you are forced into for relational databases does not exist in RavenDB.
The lag time in indexes is measured in milliseconds.
RavenDB will also make computations at indexing time, rather than write time. When you use your index, the tabulations are ready for you, saving massive amounts of time. The user is waiting right now for the page to load so the information needs to be ready now. We migrate costs to accommodate your users needs.
Computing Search Fields
Indexes are used for specific fields. For example, I have a price for a product. But different customers, like a VIP customer might see a different price than other customers. There are also discounts for special events, certain days, if it’s the user’s birthday, and so on.
The logic is somewhat trivial, but the computations can be complex. Indexes allow these specific computations to take place faster.
RavenDB shifts computation to indexing time so then you are able to do some complex stuff without compromising performance for the user.
Other Uses for RavenDB Indexes
You can use RavenDB Indexes for all sorts of other MapReduce Aggregations, Full Text Search, Distributed counters, Graph locations, Time Series Data, and a lot more that is described in this webinar.