For last several years I have noticed that interest to NoSQL DBs is increasing.
A lot of new such DBs are released :
- MongoDB
- CouchDB
- Memcachedb
- memcached
- Velocity
- Cassandra
- Tokyo Cabinet
- etc..
What you think is it targeted to replace relational model and in general how do you see the future for NoSQL.
Why NoSql (MongoDB)?
Scalable and flexible datastore : This is the primary reason for moving away from relational database.
Schema less : represent complex hierarchical relationships with a single record.
Scaling Out: Partitioning data across more machine.
Amazingly Fast : MongoDB uses a binary wire protocol as the primary mode of interaction
with the server
Features:
Indexing with ease
Stored Java Script
Simple Administration (automatic fail over if master goes down in master-slave architecture)
MongoDB is powerful and attempts to keep many features from relational
systems, it is not intended to do everything that a relational database does. Whenever
possible, the database server offloads processing and logic to the client side.
NoSQL systems such as MongoDB are those which are designed for incredibly data-intensive applications - Facebook for example created a NoSQL solution called Cassandra to handle the vast amounts of data they had. NoSQL is useful for those who are building highly scalable applications and helps to reduce the need for empty table columns by not enforcing a database schema, so for instance if you had a table in which you stored information about your friends, you wouldn't have to include the reading interests of one where you knew the reading interests of the other.
Relational databases do have their place, however NoSQL isn't really meant as a replacement, just as a different way of approaching the idea of data storage on a large scale. I would say that in the future more and more companies will begin using NoSQL solutions, but at the moment most people with small websites simply don't have need of a system designed to deal with such quantities of information.
Hope that helps!
I think NoSQL Is meant to replace 'SQL'. The title alone sort of alludes to it. NoSQL means approaching the problem differently. Any system making use of both NoSQL and SQL are not fully embracing what it means to be a Key value store.
That is not to say this approach is not ideal (it is, since many of the NoSQL technologies do not have the advanced features SQL databases have had for decades that currently solve the problem better than NoSQL.)
As NoSQL technologies mature (data consistency is assured) companies will feel more comfortable completely removing SQL from their technology stack; and the commercial licensing of open source databases (MySql being bought by Oracle) will set the pace for the speed of this migration.
There are systems like playORM that can now do joins within partitions so it is more and more likely that noSQL can replace SQL systems in the future. In fact, playORM uses S-SQL(Scalable SQL) and you do nearly the same SQL as before except specify the partitions you are querying. As a start, you can move a relational model to noSQL using playORM with no partitioning and it will be just as fast and hten you can aadd partitioning to your relational model so that it scales.