To simplify the selection of materials for installing doors and windows according to local building codes, TOAD, LLC uses RavenDB indexing to organize the data, run computations on it behind the scenes, then quickly query the extensive parts catalog whenever users enter the specs they need.
What did TOAD, LLC use before RavenDB?
Their system has been based on a relational database, but this new tool was built on RavenDB and C# because RavenDB can efficiently handle a complex set of heterogeneous data from various sources. Also, it does behind-the-scenes calculations while indexing the data, so that users’ queries are fast. RavenDB can then send the required data to Toad’s relational system.
Why they prefer RavenDB?
RavenDB’s Cloud hosted solution has proven that it’s up to the task of storing and quickly querying our millions of documents. Our customers spend their day using our product configuration & pricing tools, and RavenDB makes that really fast.Dan Stevens, Owner/Manager – TOAD, LLC
Indexes organize heterogeneous data and run calculations
Different manufacturers in their catalog use different terms for the same thing. RavenDB’s indexes are able to aggregate them and calculate dimensions and pricing. RavenDB’s indexes can be defined to compute data incrementally as it changes in the collections. Indexes prepare the data for queries so that queries don’t have to do hard, time-consuming work. When the clients query the database, the results are relevant and fast because the query uses RavenDB’s advanced indexes instead of scanning multiple tables and running computations each time anew.
Queries are frequently used by their customers, while index processes only happen incrementally whenever the data changes. This translates to substantial time and cost savings.
Stability – they never had problems with unavailable servers
They run a standard three-node cluster in the cloud. If one node goes down or needs to be taken offline for maintenance, another node provides instant, automatic failover. Their clients don’t miss a beat. The cluster then updates the downed server with changes when it comes back online.
Document model gives them flexibility
Relational tables require a strict and uniform schema. What if the data comes in from multiple sources, with different names for the same thing (i.e., door handle, handle, door knob…)? RavenDB’s documents are in JSON format so that they can be heterogeneous. Also, what would otherwise require costly table joins is replaced by embedded blocks in a JSON document, thus reducing complexity and trips to the server. When relational data does not fit nicely into one document, RavenDB is able to include multiple related documents in each trip to the server.
Then RavenDB’s indexing prowess is able to give structure to unstructured data. Altogether, complex RavenDB queries consistently take <30ms when the same complex query in a relational database would take >3000ms!
The document model is also known for the flexible data structure that enables more agile release cycles and time to market.
Difficulties they had with RavenDB
They haven’t had any complaints yet, and are very satisfied with the support they received when they needed help. Also, RavenDB’s Github discussion board is very active – most questions either have already been answered or will be answered before long.
About TOAD, LLC
TOAD, LLC provides dealers of non-residential doors, frames & hardware with tools to design doors and windows according to various local and national building codes. The tool analyzes the opening, makes computations, then gives appropriate options for frames, doors, windows, and other products required. When the products are selected, the users can see how the opening will look, how much it costs, and all of the needed components are gathered into an order form from the catalog. Users can rest assured that nothing will be forgotten and that the products they buy will fit and be up to safety codes.
TOAD uses RavenDB for its ability to index and run computations on and query a huge catalog of components, then sends the selected components to their legacy relational database that handles the orders.