NoSQL databases and relational database management systems (RDBMSes) are very different animals with different strengths and weaknesses. Does that mean a NoSQL Database and a RDBMS cannot possibly sit side-by-side in the same server room? Of course not.
On the contrary, their very differences complement one another, with each delivering functionality the other cannot, occupying different but equally important pieces of the database pie.
A little history might put all of this in perspective. The RDBMS model has been around for more than 40 years. Invented in 1970 by IBMer Edgar Codd, the DB model is centered on three basics: all information must be held in the form of a table, where all data are described using data values; each value found in the columns does not repeat; and the DB uses Standard Query Language (SQL).
The benefits of an RDBMS are that the DB is simple, flexible, and productive. Because the tables are simple, data is easy to understand and communicate with others. The average RDBMS is flexible because users do not have to use predefined keys to input information. An RDBMS is productive because SQL is relatively easy to learn, enabling users to spend more time inputting data instead of updating their skills.
Perhaps an RDBMS' biggest advantage is it makes it easy for users to create and access data and extend it if needed, without changing an existing application.
Of course, an RDBMS is not without its limitations. The biggest one is it lacks enough storage area to handle such data as digital and audio/video files. These are the so-called 'big data' files of the Internet age that people create, send, store, download and upload every minute.
Another limitation of a relational database is its inability to operate with languages outside of SQL.
A third limitation is the requirement that information must be in tables where relationships between entities are defined by values.
Enter NoSQL, a loose collection of technologies that addresses those limitations while creating its own list of drawbacks. NoSQL provides non-relational data stores that do not require fixed table schemas, typically avoid join operations, and scale horizontally, which RDBMSes do not.
Unlike an RDBMS, a NoSQL DB doesn't use a relationship data model. Its data models come in four flavors: Key-value stores, which store key BLOBs (Binary Large Objects); table-oriented; document-oriented, and graph-oriented.
The variety of NoSQL flavors can be traced to NoSQL's web-based origins. NoSQL databases were created to answer the deficiencies of RDBMSes -- notably, their slow performance on data-intensive applications such as indexing a large number of documents, serving pages on busy web sites, and delivering streaming media.
More than anything, NoSQL solves the major downside of RDBMSes -- their inability to scale quickly to keep up with the demands of rapidly growing environments such as popular websites.
The greater scalability of NoSQL DBs over RDBMSes comes at a price. Most NoSQL DBs sacrifice some level of data consistency.
This logic reflects the famous CAP Theorem, which states that a distributed database can support only two of the following features:
Consistency, in which all sessions see the same view of the data at any point in time.
Availability, in which the database can continue to provide full functionality when nodes in the cluster fail.
Partition tolerance, in which the database continues to function even if some network segments lose connectivity. In other words, the database can scale reliably across wide area networks.
The bottom line for all of this: Yes, an RDBMS and a NoSQL DB can happily coexist. It just depends on the project. If a project generates a large amount of big data with very fast query speeds, such as those inherent in a social media site, NoSQL is the better choice. Companies such as Amazon, Digg, Facebook and Google rely on NoSQL DBs.
But, when the data are smaller, have a tight structure and their integrity is the main concern, a RDBMS is the solution.