Practical Use of a NoSQL
-
Upload
ibm-cloud-data-services -
Category
Technology
-
view
849 -
download
0
Transcript of Practical Use of a NoSQL
NoSQL use-cases you can use today Practical NoSQL Glynn Bird Developer Advocate, IBM Cloud Data Services [email protected] @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 [email protected] developer.ibm.com/clouddataservices/
Thanks!
Glynn Bird Twitter: @glynn_bird www.glynnbird.com !