Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,900 courses, including more Developer and personalized recommendations.Start Your Free Trial Now
- View Offline
- What is NoSQL?
- Installing CouchDB on Mac, Windows, and Linux
- Storing data
- Nesting document data
- Specifying search criteria
- Reducing data
- Attaching and retrieving images
- Deploying applications
- Securing CouchDB
- Understanding the CAP theorem
Skill Level Intermediate
There are numerous types of NoSQL databases. Not all NoSQL databases operate under the same principles, but many of them fall under one of many broad categories. First, they are document stores. Documents are usually stored in a structured format such as XML or JSON or some other standardized format that can be queried. Documents are usually organized into collections or databases. This allows you to group similar documents all together. Individual documents can have unique structures. You don't have to have the same fields in each document.
Each document usually has a specific key. This allows you to retrieve the document quickly, and normally it's possible to query a document by the specific fields contained inside. Next, there are key-value stores. Typically you have a key you can query by, and then there's a specific value at that key. However, you usually can't query by anything other than the key. Some key-value stores let you define more than one key though, which can help you get around the drawback.
Key-value stores are sometimes used alongside relational databases for caching. Next we have BigTable/tabular databases. Tabular databases are named after Google's proprietary BigTable implementation. Each row in a tabular database can have a different set of columns. Tabular databases are designed for large numbers of columns in each row, and rows are typically versioned. They're also graph databases. Graph databases are designed for data that's best represented as interconnected nodes.
So for example, if you have a series of rowed intersections that you want to keep in a database, a graph database is a good way of doing that. And then finally, there are object databases. Object databases are tightly integrated with object-oriented programming languages. Object databases act as a persistence layer. You store the objects from your programming language directly into the object database. You can also link objects together through pointers. In this course, we'll be exploring a document database.
While document databases do not necessarily enforce a specific data structure, they typically give the capability of querying and indexing against fields within each document.