Practical Use of a NoSQL Database
-
Upload
ibm-cloud-data-services -
Category
Software
-
view
384 -
download
1
Transcript of Practical Use of a NoSQL Database
NoSQL use-cases you can use today
Glynn Bird – Developer AdvocateMarch 2016
Practical NoSQL
Introduction
@glynn_bird [email protected]
Glynn BirdDeveloper AdvocateIBM Cloud Data Serviceshttp://www.glynnbird.com
3
Agenda
NoSQL vs SQL Types of NoSQL Redis Cloudant
SQL vs NoSQL
5
RDBMs
Releational Database Management Systems SQL language developed by IBM in the 1970s RDBMs power lots of IT systems Oracle, IBM DB2, MySQL, PostgreSQL etc
6
RDBMS downsides
scalability availability price
7
NoSQL
NoSQL = "Not only SQL" Response to use-cases that a RDBMS is not a good fit Easier to scale
8
Key-Value Document
BigTable Graph
Redis
10
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
11
Create a deployment
12
Demo
13
Simple Log Sharing Servicehttps://logshare.mybluemix.net/
14
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
16
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
ChefConfiguration Management
rsyslogFederated Logging
CollectDContinuous Integration
CouchDBJSON storage, API,
Replication
DynamoClustering, Scaling,
Fault Tolerance
LuceneText indexing &
Search
HaproxyGeo-Load Balancing
GeoJSONGeospatial indexing
& query
JenkinsContinuous Integration
18
Cloudant scales
Distributed database Add nodes to scale Fault-tolerance RESTful API
19
CRUD – Document
PrimaryIndex
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
20
Demo
21
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/
22
Simple Search Service Architecture
23
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/
25
Cloudant use-cases
Big Data – Large data sets Scalable operational data store Search – faceted, full-text search Geo-spatial – geographic, GIS systems, GeoJSON Offline-first – replicating data to mobile devices
Glynn BirdDeveloper Advocate, Cloud Data [email protected]@glynn_birdgithub.com/glynnbirdwww.glynnbird.com