One of the challenges with NoSQL is defining it. The term NoSQL is problematic since it doesn’t really describe the core themes in the NoSQL movement. The term origi-nated from a group in the Bay Area who met regularly to talk about common con-cerns and issues surrounding scalable open source databases, and it stuck. Descriptive or not, it seems to be everywhere: in trade press, product descriptions, and confer-ences. We’ll use the term NoSQL as a way of differentiating a system from a traditional relational database management system (RDBMS).
For our purpose, we define NoSQL in the following way:
NoSQL is a set of concepts that allows the rapid and efficient processing of data sets with a focus on performance, reliability, and agility.
Seems like a broad definition, right? It doesn’t exclude SQL or RDBMS systems, right? That’s not a mistake. What’s important is that we identify the core themes behind NoSQL, what it is, and most importantly what it isn’t.
So what is NoSQL?
- It’s more than rows in tables - NoSQL systems store and retrieve data from many formats: key-value stores, graph databases, column-family (Bigtable) stores, doc-ument stores, and even rows in tables.
- It’s free of joins - NoSQL systems allow you to extract your data using simple interfaces without joins.
- It’s schema-free - NoSQL systems allow you to drag-and-drop your data into a folder and then query it without creating an entity-relational model.
- It works on many processors - NoSQL systems allow you to store your database on multiple processors and maintain high-speed performance.
- It uses shared-nothing commodity computers - Most (but not all) NoSQL systems leverage low-cost commodity processors that have separate RAM and disk.
- It supports linear scalability - When you add more processors, you get a consistent increase in performance.
- It’s innovative - NoSQL offers options to a single way of storing, retrieving, and manipulating data. NoSQL supporters (also known as NoSQLers) have an inclusive attitude about NoSQL and recognize SQL solutions as viable options. To the NoSQL community, NoSQL means “Not only SQL.”
Equally important is what NoSQL is not:
- It’s not about the SQL language - The definition of NoSQL isn’t an application that uses a language other than SQL. SQL as well as other query languages are used with NoSQL databases.
- It’s not only open source - Although many NoSQL systems have an open source model, commercial products use NOSQL concepts as well as open source initiatives. You can still have an innovative approach to problem solving with a com-mercial product.
- It’s not only big data - Many, but not all, NoSQL applications are driven by the inability of a current application to efficiently scale when big data is an issue. Though volume and velocity are important, NoSQL also focuses on variability and agility.
- It’s not about cloud computing - Many NoSQL systems reside in the cloud to take advantage of its ability to rapidly scale when the situation dictates. NoSQL systems can run in the cloud as well as in your corporate data center.
- It’s not about a clever use of RAM and SSD - Many NoSQL systems focus on the effi-cient use of RAM or solid state disks to increase performance. Though this is important, NoSQL systems can run on standard hardware.
- It’s not an elite group of products - NoSQL isn’t an exclusive club with a few prod-ucts. There are no membership dues or tests required to join. To be considered a NoSQLer, you only need to convince others that you have innovative solutions to their business problems.
NoSQL applications use a variety of data store types (databases). From the simple key-value store that associates a unique key with a value, to graph stores used to associate relationships, to document stores used for variable data, each NoSQL type of data store has unique attributes and uses as identified in table 1.
Table 1. Types of NoSQL data stores - the four main categories of NoSQL systems, and sample products for each data store type
Key-value store - A simple data stor-age system that uses a key to access a value
| || |
Column family store - A sparse matrix system that uses a row and a column as keys
| || |
Graph store - For relationshipintensive
| || |
Document store - Storing hierarchical
| || |
NoSQL systems have unique characteristics and capabilities that can be used alone or in conjunction with your existing systems. Many organizations considering NoSQL sys-tems do so to overcome common issues such as volume, velocity, variability, and agility, the business drivers behind the NoSQL movement.