At my workplace, we just stumbled upon the problem where we need to create a sort of inventory application which stores different types of properties for each object and with the capability to dynamically handle properties/columns, i.e. we don’t want to have to modify the application every time a new property for an existing object (say, now we need to take into account bluetooth hardware!) or when a new object altogether comes up (now we need to take into account gamepads!). These objects would of course have to be readable as well as editable.
Although we are traditional-SQL-centric (Oracle, MySQL, MSSQL), I am not against the possibility of doing it any other way (say, NoSQL), for which we have never dealt with and are kind of oblivious to. We would however need to develop using ASP.NET MVC.
Any guidance will be much appreciated. 🙂
Actually, the problem you described is perfectly solvable via relational dbms, but it will take much more time for your team. I think document database is a better choice for you.
RavenDB is a great document database, it combines the pros of both, relational and document database. It is fully ACID compliant, it has a wonderful Linq provider and it’s pretty fast, especially latest build.
So my suggestion would be, you never know exactly till you try it. The only problem I had with ravendb so far was grasping with indexing. The documentation lacks some important notes and I hope Ayende will soon address that issue, otherwise, just go for it.
BTW, you can also give a try to MongoDB. It is not ACID compliant, it also doesn’t have a Linq provider and writing queries is harder than in RavenDB as you’ve guessed, but is is written in C++, has atomic I/O operations and is very very fast.