Who are you? (Name, company, position)
My name is Raciel Rodriguez and I’m a software developer at Speartek Inc. in Atlanta, GA (http://www.speartek.com).
In what kind of project / environment did you deploy RavenDB?
We are deploying RavenDB in a project we built for a company who offers software and crew services for field service companies.
The framework we built includes:
- Database replication.
- Synchronization to legacy systems.
- REST API.
- Web based Management and Reporting tool.
- Android clients for both data submission and mapping.
- Windows GIS application for historical analysis and visualization.
What made you select a NoSQL solution for your project?
Most of the data we work with is based on forms. These forms change frequently (too often) and we needed a schema-less data storage that allow us to introduce changes w/o creating a maintenance nightmare.
What made you select RavenDB as the NoSQL solution?
- Native .net with redundancy and multi-tenancy.
- Good performance and reliability.
- Great user group, supported by a developer with a strong background in the .net community. No brainer.
How did you discover RavenDB?
I had been following Ayende's blog for a long time, mostly in read-only mode. I was following RavenDB and playing with it since its inception.
How long did it take to learn to use RavenDB?
It was really easy to setup and create a test application. The API is clear and fluent.
It takes some time and training to understand how it works internally regarding infrastructure and extensibility.
Lucene queries, map/reduce and indexes are straight forward, but were new to me. Also there are alternatives in the API that you need to understand to make the best design decisions.
It is hard to maintain strong documentation for a product that has evolved at such a fast pace. However, even when the doc was not always available, it is always possible to get what you need on the user group, stack overflow, etc.
What are you doing with RavenDB?
As mentioned before we are storing forms in a multi-tenant environment, these forms have a standard definition (set of common fields: time, GIS position, author, etc.) and a set of fields that is unique for each type of form, and version/client (not yet supported).
Raven holds these forms for management interfaces (approved, closed, etc.) by a simple workflow that is executed mostly by crew supervisors and other type of managers. Additionally data is automatically aggregated in a SQL DB for reporting using triggers and Rhino ESB.
What was the experience, compared to other technologies you used before?
The learning curve is sharp and in the process you not only learn how to deal with a document database, but a lot of other good practices RavenDB uses and encourages for optimization, performance, etc.
RavenDB can be challenging (sometimes scary when things don't work as you expect most of the problems are on my end, I have to admit), but it was a big part of our architecture and we were able to address all our needs adequately.
When dealing with other technologies from big companies, proprietary code, etc. the type of relationship you develop with those companies and the learning process is totally different from the interactions you go through when dealing with open source products, with a great community behind it.
In the case of RavenDB, the information you get is of high quality, usually problems get resolved quickly and you are never alone without help. Even when the group is busy or the subject of your problem is not addressed quickly, you have the code base as the ultimate resource to get your questions answered.
What do you consider to be RavenDB strengths?
In this order:
- Constant evolution
- Fluent api
What do you consider to be RavenDB weaknesses?
Coming from a SQL background we expected to have more tools available when it comes to querying and handling documents. For example, Bulk deletes, Updates given a query, etc.
Raven Studio has given me trouble in the past, but I’m pretty happy with build 616.
Now that you are in production, do you think that choosing RavenDB was the right choice?
So far so good. We haven’t experienced any major problem.
What would you tell other developers who are evaluating RavenDB?
Read, join the user group, grab the code and try to untangle it to get familiar with its design and core principles.
Play with it; ask questions and prototype your ideas.
Finally buy it, you can’t go wrong.