# Awesome NoSQL Guides

> Curated list of resources and links about using NoSQL databases and things to look for when deciding to use one.

A basic definition of NoSQL databases can be found on Wikipedia as:

> “A NoSQL (originally referring to ‘non SQL’ or ‘non relational’) database provides a mechanism for storage and retrieval of data which is modeled in means other than the tabular relations used in relational databases.”

For actual NoSQL databases, you can go here, here, here, here, here, or here. Also, not to be confused with the relational database management system, NoSQL.

## Contents

- Overview of NoSQL
- Data Structures and Modeling
- Trade-Offs in CAP/Brewer’s Theorem
- Crowd-Sourced Information
- Graph Databases
- Criticisms and Debates
- Miscellaneous

## Overview of NoSQL

- Introduction To NoSQL - Martin Fowler (54:52) - Talk given at GOTO 2012 as a great introduction to NoSQL databases, the types of NoSQL databases, their history, pros and cons, and how and when to use them.
- NoSQL Distilled - Very digestable and affordable book describing the different NoSQL databases and help you make the decision on whether using a NoSQL database is appropriate for your project.
- Seven Databases in Song (1:43) - Fun song from 2012 about seven (six are NoSQL) databases with a very condensed overview of how they each work.
- NoSQL Databases: a Survey and Decision Guidance (2016) - “This NoSQL Toolbox allows us to derive a simple decision tree to help practitioners and researchers filter potential system candidates based on central application requirements”.
- Data Management in the Cloud: Limitations and Opportunities (PDF) - Abadi (2009) discusses limitations and opportunities of data management and data analysis in the cloud.
- 10 NoSQL Misconceptions - Some misconceptions about NoSQL databases relating to topics such as what they are, ACID-compliance, and security.
- 10 Reasons Developers Love NoSQL - A list of ten arguments for why developers like to use NoSQL databases.
- Distribution, Data, Deployment: Software Architecture Convergence in Big Data Systems (PDF) - Gorton and Klein (2014) paper to discuss software engineering concerns when dealing with big data systems in terms of distribution, data, and deployment. Also accessible here.
- Use cases for NoSQL (2017) - Discussion on Stack Overflow on best use cases for using NoSQL databases over traditional SQL databases.
- Five Common Data Stores and When to Use Them (2019) - Article describes five common data stores (relational database, non-relational (“NoSQL”) database, key-value store, full-text search engine, message queue) and their attributes.
- NoSQL Databases (PDF) - A 149-page document outlining motives and rationale for NoSQL databases, and common concepts, techniques and patterns among these databases; last updated around 2011.
- NoSQL Data Architecture & Data Governance: Everything You Need to Know (2018) - Overview of different NoSQL database architectures with diagrams.
- NoSQL vs SQL: Demystifying NoSQL Databases (2019) - General overview and examples of NoSQL database schema types, while covering CAP theorem tradeoffs.
- Comparing Database Types: How Database Types Evolved to Meet Different Needs - Good overview of databases in general and how NoSQL database types differ and can be useful.
- The NoSQL Ecosystem - A chapter written by Adam Marcus from “The Architecture of Open Source Applications” book, this chapter is geared more towards systems architects needing to learn more in-depth understanding of how these systems are built.
- What is NoSQL - Amazon AWS - Great high-level overview of NoSQL databases and how they compare to SQL database technologies and terminologies. Serves as landing page for Amazon’s AWS services for NoSQL options of key-value (Amazon DynamoDB), document (Amazon DocumentDB), graph (Amazon Neptune), in-memory (Amazon ElastiCache), and search-engine (Amazon Elasticsearch) database.
- NoSQL vs. SQL: Important Differences & Which One Is Best for Your Project (2021) - Upwork - Explanation comparing SQL and NoSQL databases, along with giving some advice on what database solution is right for your use case.
- NoSQL Database Tutorial – Full Course for Beginners (2:54:52) - Ania Kubow reviews the four types of NoSQL databases and provides two hands-on projects to experiment with what was reviewed.

## Data Structures and Modeling

- Structure Your Database - Best practices (as of 2018) of structuring your data if your database uses JSON.
- NoSQL Data Modeling Techniques (2012) - This article provides a short comparison of NoSQL system families from the data modeling point of view and digests several common modeling techniques.
- Data Models For MongoDB - Data modeling help specific to MongoDB, ranging from schema validation and example patterns. However, concepts may carry over to other document NoSQL databases.
- Data Models Will Be Beautiful Again (2016) - Essay argues that despite existing schema-less databases, thoughtful database modeling is important to gain knowledge and insights using algorithms.
- Unified Data Modeling for Relational and NoSQL Databases - Solution for managing both NoSQL and relational databases using the Unified Data Modeling technique.
- Unifying Relational, Document, Graph, and Temporal Data Models - Patterns for querying across multiple paradigms in the same database.
- How To Design Schema For Your NoSQL Database? - Despite popular belief that NoSQL are schema-less, this article outlines how NoSQL databases follow “query driven design” and considerations for this flexibility in schema.
- Best Practices for NoSQL Database Design (2012) - A couple answers and links for NoSQL database design.

## Trade-Offs in CAP/Brewer’s Theorem

- Visual Guide To NoSQL Systems (2010) - Visual display of trade-offs in the CAP theorem among different NoSQL databases.
- How to Choose The Right NoSQL Database For Your Application? (2018) - Reviews CAP theorem and maps common NoSQL databases to CAP categories to help choose one.

## Crowd-Sourced Information

- /r/nosql - Reddit page on NoSQL on general questions and discussions people may have about NoSQL databases.
- [nosql] Tag On Stack Overflow
- Ask HN: Learning NoSQL, Papers and Books (2017) - “In your opinion, which papers and books are mandatory to really understand NoSQL subject?”
- Difference Between Scaling Horizontally And Vertically For Databases - Common terms talked about in the database world and here are answers from others.
- NoSQL - Wikipedia - Wikipedia entry on all things NoSQL databases.

## Graph Databases

- Graph Databases Use Cases - Although documents geared towards Neo4j, concepts are applicable to all graph databases.
- How The ICIJ Used Neo4j To Unravel The Panama Papers - Mar Cabra (32:02) - Learn how graph databases were key to explore who were the main names connected to companies in tax havens, including 140 politicians in more than 50 countries.
- Graph Databases For Beginners: The Basics Of Data Modeling - Discusses the basics of modeling your data and which approach you should take.
- Graph Data Modeling Guidelines - Directly related to Neo4j, but possibly applicable to any graph database.
- Graph Data Modeling Visualize Structure and Meaning - Brief introduction to graph data modeling and is an introduction to the book “Graph Data Modeling for NoSQL and SQL” by Thomas Frisendal.

## Criticisms and Debates

- Addressing the NoSQL Criticism (2011) - Argues against nine criticisms to NoSQL databases as they apply to CouchDB, but may apply to others as well.
- Thank You For Your Help NoSQL, But We Got It From Here (2020) - Argument that NoSQL databases have pushed the evolution of databases given the problem of scaling, but now NewSQL has addressed those concerns (from the perspective of MemSQL).
- The Five Stages Of NoSQL (2016) - Stages of going through picking and using a NoSQL database mirroring the five stages of grief.
- The Biggest Challenges Of Moving To NoSQL (2017) - Speed and scalability and developer joy have been the gains found from enduring through challenges of moving to NoSQL.

## Miscellaneous

- What As A NoSQL Database? Learn By Writing One In Python - Excellent tutorial in learning NoSQL vs RDBMS through building a toy database using Python.
- Dynamo Vs Cassandra : Systems Design Of NoSQL Databases - Blog post comparing and constrating system designs of two well known NoSQL databases.
- Why You Should Build Your Wwn NoSQL Database - Brief overview of NoSQL databases and the spectrum of schema, along with a very basic implementation of a NoSQL database using the Crystal programming language.
- PostgreSQL, The NoSQL Database (2015) - An argument for PostgreSQL being an alternative to NoSQL databases with NoSQL-like features using its new features like HStore (key-value store) and JSONB (document-based) as of Version 9.4.

nosqlguides.md Github