Practical Use of a NoSQL Database

Post on 13-Apr-2017

384 views 1 download

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 glynn.bird@uk.ibm.com

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 Servicesglynn.bird@uk.ibm.com@glynn_birdgithub.com/glynnbirdwww.glynnbird.com