My name is Nicolas Carlo and I’m the Lead Developer at Amplification Labs which is a small sized software services company in Buenos Aires, Argentina. Recently we started working on a project to serve the community of Buenos Aires by creating a web application that would help the community find and rate good doctors first within the city and then expand it to the rest of the country. The application is designed to have some data in it which will be collected via cooperation with some of the largest insurance companies in the city but the goal is for the data and the ratings to be user driven. We have limited resources and funds for this project as the application’s primary purpose is to serve the community and hence is not a for profit endeavor. Because of this reality, we wanted to stay away from SQL Server or other RDBMS solutions that would require a DBA for the DB architecture to be designed correctly. We also are short on time and the number of developer resources we could assign to this task and so were looking for a DB solution that would just work and get out of the way of the developer rather than be a constant thorn in his side.
ACID NoSQL Solution
We tried some other NoSQL solutions but decided to invest a lot of time into RavenDB. In the beginning this decision was based on the fact that RavenDB is designed to work well with .Net. It’s extremely easy to just start working with it rather than mess around with configuration for 3 days. We also wanted a solution where we didn’t have to worry about normalizing data as in RDBMSs but rather have naturally flowing relationships. We also wanted ACID support.
RavenDB was perfect for these reasons to start our testing with it. As soon as we started using it though we realized how much faster our development and delivery time was. Not only did the fact that it required no configuration to get going help with the speed of development but also in terms of the architecture it helped us get rid of all the cruft that is usually designed by one unneeded principle after another. RavenDB allowed us to worry about the application architecture while covering for everything data storage related on its own.
Another advantage of RavenDB was the fact that it comes with a common sense HTML5 based management studio. No need to screw around with the command line and remember commands that one should never have to remember. You go to the IP address where your instance is running and everything is point and click.
Safe by Design
One of the biggest strengths of RavenDB, in my opinion as the Lead Developer, is the fact that it is safe by design. It makes it harder for you to mess up or do operations that make users want to break their devices because its taking them so long to get to what they want. RavenDB is extremely fast in read operations and it has enough checks in place to make sure that read operations don’t get too slow over time. For example, the fact that you must jump through hoops to get more than 1024 results in one request is a huge plus in my book.
In conclusion, there are a lot of mixed reviews about RavenDB but in my opinion a lot of those reviews are based on a failure to understand how RavenDB works and why some of the limitations are in place. Myself and my team have put in the time to understand these limitations and work with them, this has allowed us to not only use RavenDB with ease but it has also turned RavenDB into a product that is first on our list of technologies to use for any new projects that we start. Our company recommends RavenDB for everything except for reporting purposes. RavenDB is not the ideal DB for reporting purposes and that is because it was not designed for that at all.