No-Nonsense NoSQL

@jennstrater | Senior Consultant | Object Partners| Co-Founder | Gr8Ladies

http://jlstrater.github.io/No-Nonsense-NoSQL

Slides(source)

Printable PDF

Agenda

  • Definition
  • Types
  • Gr8Ladies Example Application
    • MongoDB
    • Redis

What is NoSQL?

  • Not Only SQL
  • Group of data storage solutions that are not Relational Database Management System(RDBMS)
    • Schemaless
    • Non-relational

Types of NoSQL solutions

  • Key-value
  • Document
  • Column
  • Graph

Key-value Stores

Examples

  • MemCached
  • DynamoDB
  • Redis*

Uses

  • Content Caching
  • Transient Data
    • Session Data
  • Image Stores

Considerations

  • Relationships
  • Transactions
  • Querying

Libraries & Plugins

Document Stores

Examples

  • CouchDB
  • RavenDB
  • Azure DocumentDB
  • MongoDB

Uses

  • Content Management Systems(CMS) / Blogging Platforms
  • Forms/data with many optional fields
  • Frequently Changing Schemas

Considerations

  • Complex transactions
  • Complex searching

Libraries & Plugins

Column Databases

Examples

  • Cassandra
  • HBase
  • Hypertable

Use Cases

  • CMS Systems/ Blogging Platforms
  • Log Aggregators
  • Incremental Counters

Considerations

  • Schema Changes
  • Arbitrary unstructured data

Graph Databases

Examples

  • Neo4J
  • OrientDB
  • Allegro Graph

Uses

  • Many connections between data
    • Social Networks
    • E-commerce Recommendations
  • Nearby Locations and Routing

Considerations

  • Casscading writes
  • Very different way of thinking about data

Libraries & Plugins

Suggested Reading

  • Sadalage, Pramod J., and Martin Fowler. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley Professional, 2012. Print.
  • Vardanyan, Mikayel. "Picking the Right NoSQL Database Tool." Monitis Blog. 22 May 2011. Web.
  • Copeland, Rick. MongoDB Applied Design Patterns. O'Reilly Media, 2013. Print.
  • Chinnachamy, Arun. Redis Applied Design Patterns. Packt Publishing, 2014. Print.

How do I pick just one?

You don't have to!

Example Task

Gr8Ladies Products

  • Catalog Products
  • Shopping Cart

Approaches

  • All In - MongoDB GORM
  • Partial - Grails-Redis plugin

MongoDB

Terminology

  • Databases
  • Collections
  • Document