Big Data application requirements are usually very extensive and might not fit into one database technology. The list of these requirements can be huge and specific. Some general ones are below:
• Handling huge amounts of unstructured data
• Combination from search and analytical type of queries
• Denormalized data patterns
• Support for high volume writes and read volumes that are not always predictable
• High availability
• No downtime deployments
Perhaps that is the reason why NoSQL solutions are very much application and situation specific based on every product in corresponding category functionality and features. Usually no one NoSQL database matches all the application requirements like usual General-Purpose RDBMS systems. It depends a lot on the application architecture and what NoSQL database fits better you have to decide.
The NoSQL databases have specific characteristics to showcase and they perform best if used for that purpose. So you cannot use a Key-Value store when you need a Graph or Document database for example, while Relational database systems (RDBMS) are all quite compatible.
Then what NoSQL database to choose? Read more »
NoSQL (Not only SQL) term covers different database technologies that were developed to handle huge unstructured data volumes and the frequency in which this data is accessed as well as performance and processing needs. NoSQL is NOT a database that we used to think. In my understanding NoSQL is a range of technologies, approaches and even projects directed to realization of unstructured – so-called Big Data models – that have considerable differences to traditional Relational Database Management Systems (RDBMS). The main goal of NoSQL storage systems is to resolve unstructured data manipulation issues that are not efficiently managed by RDBMS. Note, I’m not saying RDBMS can not manage the same unstructured stuff. On the contrary, with new features the modern RDBMS can do more and more in the Big Data area but obviously not as efficient as some NoSQL solutions.
In practice, “NoSQL” means non-relational database, but this concept of NoSQL does not disclaim SQL language completely often however querying these databases in data-model specific way. Anyway, the underlying query execution strategy is usually very different from the way a traditional RDBMS would use.
Many of the NoSQL platforms allow for RESTful interfaces to the data, while others offer query APIs. NoSQL storage systems are often used in combination with Hadoop Distributed File System that enables large scale computations on clustered servers.
Important to mention that NoSQL databases are not General-Purpose Database Management Systems, but they are very specific to application use cases. Also, NoSQL engines are not compatible to each other and NOT to the General-Purpose DBMSs.
See below some common attributes of noSQL databases:
• Specialized databases for various scenarios
• They manage Unstructured Data (Big Data)
• Often as pure data stores offering just standard APIs for developers
• Non-Relational data model is optimized for the type of data being stored
• Underlying query execution done in data-model specific way
• Usually do NOT support ANSI SQL and ACID standards
• Usually do NOT support transactions and data consistency across entire DB
• Usually optimized for high performance data loads and reads
• Data Updates are often slow
• Table Joins are usually NOT supported
• Usually do NOT include comprehensive Database Manageability features
The data in NoSQL DB engines are represented in a view of hash-tables, tries, documents etc. Based on this representation approach they are divided into four major categories or types: Key-Value Stores, Document Databases, Column Stores and Graph databases. See their description below:
Read more »