Reputation: 9611
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. :)
Upvotes: 3
Views: 166
Reputation: 3985
If your requirement is to store and process structured data (or maybe sound files, images etc.) and you're used to Oracle, I'd suggest to look into LOBs and XMLType. Oracle has built-in support for XML technologies (schema validation, xslt transformation, binary storage, xpath indexes might be areas of interest).
Upvotes: 1
Reputation: 9114
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.
Upvotes: 3