Since NoSQL became a trendy term you often see this sort of post in various blogs and forums.
“We are building a new application and we are considering using NoSQL(Trendy NoSQL name here) as the only Database so no hybrid system RDBMS/noSQL
Now there are a number of immediate flaws in this question which should lead to a lot of pain in the project if they carry on like this.
The first and simplest is that while SQL (or perhaps we should say relational) standard databases are just that, a standard, based on the ANSI SQL and meaning that whether you use Oracle or MySQL or MSSQL you are pretty well grappling with the same thing. However NoSQL while seeming to does not imply any standardisation or even similarity.
One list of the architectures of NoSQL breaks down as follows
- Document store
- Key-value store (with these variants)
- Eventuallyâ€consistent keyâ€value store
- Hierarchical key-value store
- Hosted services
- Key-value cache in RAM
- Key-value stores on disk
- Ordered key-value stores
- Multivalue databases
- Object database
- Tuple store
The problem is people are deciding to go with a technology that they know so little about that they need to ask a rather general forum if it is a good idea and how to do it. Then everyone jumps in and suggest pro’s and con’s and esoteric plumbing for data structures and even some alternative products which are “much better” than whatever the other one was.
Now call me old fashioned if you like but wouldn’t it be better to perform a detailed requirements analysis (or at least a basic requirements analysis) of the project to determine it’s architecture and the data structures needed to support that architecture and the longer term application objectives and then investigate which data storage method is going to fit those requirements?
Of course if it’s just a fashion thing and you just feel like using a new technology you have seen blogged about then go ahead. In this case one is as good as another and yes sure use a couple of them to make life more interesting.