NoSQL use-cases you can use today
Practical NoSQL
Glynn Bird
Developer Advocate, IBM Cloud Data Services
glynn.bird@uk.ibm.com
@glynn_bird
Agenda
•  NoSQL vs. SQL
•  Types of NoSQL
•  Redis
•  Cloudant
SQL vs. NoSQL
RDBMS
•  Relational Database Management Systems
•  SQL language developed by IBM in the 1970s
•  RDBMS power lots of IT systems
•  Oracle, IBM DB2, MySQL, PostgreSQL, etc.
RDBMS downsides
•  Scalability
•  Availability
•  Price
NoSQL
•  NoSQL = “Not Only SQL”
•  Response to use-cases that an RDBMS is not a good fit
•  Easier to scale
Key-Value
 Document
BigTable
 Graph
Redis
Redis
•  Key-value store
•  In-memory storage
•  Simple data storage structures
•  Libraries for many programming languages
•  Available as-a-service through Compose.io
!  Auto-failover
!  Free daily backups
!  Scalable
!  Enterprise Edition
Create a deployment
Demo
Simple Log Sharing Service https://logshare.mybluemix.net/
!
Redis use-cases
•  Cache – time-limited data
•  Pubsub – sharing a data stream with many clients
•  Queues – distributing work
•  Leaderboards – sorted sets
•  Counting – incrementing, unique users
•  Auto-complete – custom indexes
Cloudant
What is Apache CouchDB?
•  Free, open-source, NoSQL database
•  JSON data store
•  Built for the web - HTTP
•  RESTful API
•  It syncs!
•  http://couchdb.apache.org
Graphite &
Riemann
Monitoring
Chef
Configuration
Management
rsyslog
Federated Logging
CollectD
Continuous
Integration
CouchDB
JSON storage, API,
Replication
Dynamo
Clustering, Scaling,
Fault Tolerance
Lucene
Text indexing &
Search
Haproxy
Geo-Load Balancing
GeoJSON
Geospatial indexing
& query
Jenkins
Continuous
Integration
Cloudant scales
•  Distributed database
•  Add nodes to scale
•  Fault-tolerance
•  RESTful API
18!
CRUD – Document
 Primary
Index
Secondary Index
(view)
Search 
Index
GeoSpatial Index
 Cloudant 
Query
•  Direct document
look up by _id!
•  Exists “OOTB”!
•  stored in a b-tree!
•  Primary key "
doc._id!
•  Built using
MapReduce!
•  stored in a b-tree!
•  Key " user-
defined field(s)!
•  Built using
Lucene!
•  FTI: Any or all
fields can be
indexed!
•  stored in R*, TPR,
KD tree!
•  Lat/Long
coorindates in
GeoJSON!
•  “Mongo-style”
querying!
•  Built natively in
erlang!
•  Use when you
want a single
document and
can find by its _id!
•  Use when you
can find
documents based
on their _id!
•  Pull back a range
of keys!
•  Use when you
need to analyze
data or get a
range of keys!
•  Ex: count data
fields, sum/
average numeric
results, advanced
stats, group by
date, etc.!
•  Ad-hoc queries!
•  Find documents
based on their
contents!
•  Can do groups,
facets, and basic
geo queries (bbox
& sort by
distance)!
•  Complex
geometries
(polygon,
circularstring,
etc.) !
•  Advanced
relations
(intersect,
overlaps, etc.)!
•  Ad-hoc queries!
•  Lots of operators
(>, <, IN, OR,
AND, etc.)!
•  Intuitive for
people coming
from Mongo or
SQL backgrounds!
Demo
Simple Search Service
•  Free, open-source Bluemix App – install
with one click
•  Upload your .csv or .tsv
#  Imports data into cloudant
#  Indexes everything for search
#  Presents HTTP Search API
•  Demo!
https://developer.ibm.com/clouddataservices/simple-search-service
Simple Search Service – Architecture
Simple Search Service – Production Architecture
https://developer.ibm.com/clouddataservices/simple-search-service/
https://cloudant.com/blog/turning-a-spreadsheet-into-a-faceted-
search-engine-with-cloudant/
Cloudant Use Cases
•  Big Data – Large Data Sets
•  Scalable operational data store
•  Search – faceted, full-text search
•  Geospatial – geographic, GIS systems, GeoJSON
•  Offline-first – replicated data to mobile devices
Developer Advocate
Glynn.Bird@uk.ibm.com
developer.ibm.com/
clouddataservices/
Thanks!
Glynn Bird
Twitter: @glynn_bird
www.glynnbird.com
!

Practical Use of a NoSQL