SlideShare a Scribd company logo
1 of 73
Download to read offline
I have a NoSQLToaster.
Why would I want a NoSQL database?
Matthew D. Groves @mgroves
Original slides by Matthew Revell - @matthewrevell
©2016 Couchbase Inc. 2
Where am I?
• Connect.Tech
• http://connect-js.com
• http://twitter.com/connect_js
©2016 Couchbase Inc. 3
Who am I?
• Matthew D. Groves
• Developer Advocate for Couchbase
• @mgroves onTwitter
• Podcast and blog: http://crosscuttingconcerns.com
• “I am not an expert, but I am an enthusiast.” – Alan Stevens
©2016 Couchbase Inc. 4
Tweet something, get a sticker!
Use #Couchbase
Tweet something interesting you’ve learned.
Tweet a picture.
I’ve got stickers and a prize for the best tweet!
©2016 Couchbase Inc. 5
Couchbase and CouchDB
Couchbase is to CouchDB
as
MySQL is to SQL Server
©2016 Couchbase Inc. 6
SQL is the norm, right?
https://commons.wikimedia.org/wiki/File:George_Wendt_at_the_41st_Emmy_Awards_cropped.jpg
~3200 BC: invention of writing in Mesopotamia
~300 BC: Library of Alexandria
~1041AD: Movable type invented in China
1450: Movable type invented in Europe
1822: Babbage’s paper on the application of difference engines
1943: Colossus, the first programmable digital computer
1957-1960: IBM SABRE, the first commercial use of a database
1970: EF Codd proposes the relational database model
1974: Ingres released
1979: Commercial launch of Oracle database
1988: Object databases appear
1989: Microsoft SQL Server version 1
1991: HTTP v0.9
1995: MySQL’s initial release
2005: CouchDB released
2006: Google’s BigTable paper
2007: Amazon’s Dynamo paper
2008-2009: The NoSQL Cambrian explosion: Riak, MongoDB,Cassandra, Redis
2010: Couchbase arrives on the scene
NoSQL isn’t a very useful term
©2016 Couchbase Inc. 9
Easy?
©2016 Couchbase Inc. 10
Scalable?
https://commons.wikimedia.org/wiki/File:Dagwood_sandwich.jpg
©2016 Couchbase Inc. 11
Commodity Hardware
https://commons.wikimedia.org/wiki/File:Rear_of_rack_at_NERSC_data_center_-_closeup.jpg
©2016 Couchbase Inc. 12
ACID vs BASE?
https://commons.wikimedia.org/wiki/File:PH_Scale.svg
Atomic
Consistent
Isolated
Durable
Basic Availability
Soft-state
Eventual consistency
©2016 Couchbase Inc. 13
Schema Schemaless
https://en.wikipedia.org/wiki/File:Star-schema-example.png
©2016 Couchbase Inc. 14
Normalized Denormalized
https://commons.wikimedia.org/wiki/File:Frown.JPG
©2016 Couchbase Inc. 15
First: Why NoSQL?
https://www.flickr.com/photos/wonderlane/13067014944
©2016 Couchbase Inc. 16
Round pegs, square holes
http://www.timesofbook.com/2013/09/blobfish-image-gallery.html#.V6iXwbgrJhE
©2016 Couchbase Inc. 17
Perhaps SQL is right for this project
©2016 Couchbase Inc. 18
Scaling can be hard
https://commons.wikimedia.org/wiki/File:Sandwiches_Vienna.jpg
©2016 Couchbase Inc. 19
Availability is hard
https://www.flickr.com/photos/jeepersmedia/14562425273/
C
A
P
©2016 Couchbase Inc. 20
Schemas can be hard
https://commons.wikimedia.org/wiki/File:MediaWiki_database_schema_1-17_(r82044).svg
©2016 Couchbase Inc. 21
Types of NoSQL databases
Document
Key/Value
Columnar
Graph
©2016 Couchbase Inc. 22
Convergence!
©2016 Couchbase Inc. 23
Document
???
©2016 Couchbase Inc. 25
What makes it a document database?
JSON
XML
BSON
©2016 Couchbase Inc. 28
The document database
understands the
format of the document
©2016 Couchbase Inc. 29
It can do
server-side stuff
Buckets
Documents
Views
N1QL
"ClientProductCode","Title","Quantity"
"TShirtCBS","Couchbase logo t-shirt (small)",29
"TShirtCBM","Couchbase logo t-shirt (medium)",72
"TShirtCBL","Couchbase logo t-shirt (large)",34
"TShirtCBXL","Couchbase logo t-shirt (extra large)",12
"StickerCBLogo","Couchbase logo sticker",256
"PenCBLogo","Couchbase logo pen",365
class Program
{
private static IBucket _bucket;
static void Main(string[] args)
{
SetupCouchbase();
LoadStockList();
ClusterHelper.Close();
}
private static void SetupCouchbase()
{
ClientConfiguration config = new ClientConfiguration();
config.Servers = new List<Uri> {new Uri("couchbase://192.168.1.5") };
ClusterHelper.Initialize(config);
_bucket = ClusterHelper.GetBucket("default");
}
private static void LoadStockList()
{
var csv = new CsvReader(File.OpenText("swag.csv"));
while (csv.Read())
{
var record = csv.GetRecord<dynamic>();
var document = new Document<dynamic>
{
Id = record.ClientProductCode,
Content = new
{
record.Title,
record.Quantity
}
};
_bucket.Insert(document);
Console.WriteLine($"Added document '{record.ClientProductCode}'");
}
}
}
private static void SetupCouchbase()
{
ClientConfiguration config = new ClientConfiguration();
config.Servers = new List<Uri> {new Uri("couchbase://192.168.1.5") };
ClusterHelper.Initialize(config);
_bucket = ClusterHelper.GetBucket("default");
}
private static void LoadStockList() {
var csv = new CsvReader(File.OpenText("swag.csv"));
while (csv.Read()) {
var record = csv.GetRecord<dynamic>();
var document = new Document<dynamic> {
Id = record.ClientProductCode,
Content = new {
record.Title,
record.Quantity
}
};
_bucket.Insert(document);
Console.WriteLine($"Added document '{record.ClientProductCode}'");
}
}
private static void GetDocument()
{
var doc = _bucket.Get<dynamic>("StickerCBLogo");
Console.WriteLine($"Document Key: {doc.Id}");
Console.WriteLine($"Title: {doc.Value.title}");
Console.WriteLine($"Quantity: {doc.Value.quantity}");
}
©2016 Couchbase Inc. 38
Typical Document Database Operations
• Upsert (aka set)
• Inserts document if key doesn’t exist, replaces otherwise
• Insert (aka add)
• Inserts document, error if it already exists
• Update (aka replace)
• Updates document, error if it doesn’t exist
• Delete
• Get
©2016 Couchbase Inc. 39
N1QL
SELECT m.*
FROM `default` m
WHERE META(m).id = ‘StickerCBLogo’
SELECT m.*
FROM `default` m
WHERE m.quantity > 10
Great for Dev
Scales Easily
Consistently Fast
©2016 Couchbase Inc. 41
Use cases for Document Databases
• User profiles
• Session stores
• Content management
• General relational replacement
• http://info.couchbase.com/15Q1TopTenUC.html
©2016 Couchbase Inc. 42
Key/Value Database
©2016 Couchbase Inc. 44
Key-Value Databases
In-memory caches
and
distributed data stores
©2016 Couchbase Inc. 45
Doesn’t care what your data is (mostly)
KEY1 { type: “json” }
KEY2 <data type=“xml”></data>
KEY3 Lorem ipsum
… 00100101000100101
KEYN
https://www.flickr.com/photos/dcmot/23168680069
Buckets
Key-Value Pairs
©2016 Couchbase Inc. 47
C# Riak
private static void DoStuffWithRiak()
{
var cluster = RiakCluster.FromConfig("riakConfig");
var client = cluster.CreateClient();
var actor = new RiakObject("actors", "James Bond","Sean Connery");
client.Put(actor);
var actorBackOut = client.Get("actors", "James Bond");
var str = System.Text.Encoding.UTF8.GetString(actorBackOut.Value.Value);
Console.WriteLine($"Value: {str}");
}
©2016 Couchbase Inc. 49
Introducing: Eventual Consistency!
©2016 Couchbase Inc. 50
Eventual Consistency
https://www.flickr.com/photos/scottchene/7046992749
https://commons.wikimedia.org/wiki/File:Timothy_Dalton_1987.jpg
https://commons.wikimedia.org/wiki/File:Sir_Roger_Moore_crop.jpg
©2016 Couchbase Inc. 51
There can be only one!
https://en.wikipedia.org/wiki/File:Highlander_film_Connor_MacLeod.jpg
©2016 Couchbase Inc. 52
So, fix it
https://www.flickr.com/photos/94086507@N00/84368105
ScalesWell
Highly Available
Data Agnostic
Maybe some extra work
©2016 Couchbase Inc. 54
Use Cases for K/V
• Data variability
• Object caching
• Session storage
• Large object storage
©2016 Couchbase Inc. 55
Columnar
Keyspaces
Column Families
Rows
Columns
©2016 Couchbase Inc. 58
Keyspace
©2016 Couchbase Inc. 59
Column Family
CREATE KEYSPACE mykeyspace
WITH replication = { 'class': 'SimpleStrategy',
'replication_factor': '1'};
CREATE TABLE users (firstname text, lastname text, age int,
email text, city text, PRIMARY KEY (lastname));
private static void DoStuffWithDataStax()
{
var cluster = Cluster.Builder().AddContactPoint("127.0.0.1").Build();
var session = cluster.Connect("mykeyspace");
session.Execute("insert into users (lastname, age, city, email, firstname)
values ('Jones', 35, 'Austin', 'bob@example.com', 'Bob')");
var userBackOut = session.Execute("select * from users where
lastname='Jones'").First();
Console.WriteLine($"{userBackOut["firstname"]} {userBackOut["age"]}");
}
Impedance Mismatch
ScalesWell (Ops Headache)
Suited to Analytics
©2016 Couchbase Inc. 64
Use cases for Columnar
•Metering data
•Really big data
•Analytics
©2016 Couchbase Inc. 65
Graph
https://commons.wikimedia.org/wiki/File:The_protein_interaction_network_of_Treponema_pallidum.png
©2016 Couchbase Inc. 66
Leonhard Euler
©2016 Couchbase Inc. 67
7 Bridges of Königsberg
©2016 Couchbase Inc. 69
Use cases for Graph databases
• Social networks / dating sites
• Fraud detection
• Parcel routing
• Shopping recommendations
©2016 Couchbase Inc. 70
Say what?
Relational
Document
Key/Value
Columnar
Graph
Object
others…
©2016 Couchbase Inc. 71
Box arrow box arrow
Web Logic
SQL
Riak
Couchbase
More Logic
Mobile
©2016 Couchbase Inc. 72
Couchbase, everybody!
http://couchbase.com/connect
http://info.couchbase.com/Connect16_Livestream_Registration.html
©2016 Couchbase Inc. 73
Where do you find us?
• developer.couchbase.com
• blog.couchbase.com
• forums.couchbase.com
• @couchbasedev
• #couchbase
• @mgroves
• @couchbase

More Related Content

Similar to I have a NoSQL Toaster - ConnectJS - October 2016

I Have a NoSQL Toaster - Troy .NET User Group - July 2017
I Have a NoSQL Toaster - Troy .NET User Group - July 2017I Have a NoSQL Toaster - Troy .NET User Group - July 2017
I Have a NoSQL Toaster - Troy .NET User Group - July 2017Matthew Groves
 
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical ApproachSlides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical ApproachDATAVERSITY
 
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptx
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptxi_have_a_nosql_toaster_-_qcon_-_june_2017.pptx
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptxKAMAUALEX
 
The Why, When, and How of NoSQL - A Practical Approach
The Why, When, and How of NoSQL - A Practical ApproachThe Why, When, and How of NoSQL - A Practical Approach
The Why, When, and How of NoSQL - A Practical ApproachDATAVERSITY
 
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedIn
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedInCouchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedIn
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedInMichael Kehoe
 
Kafka & Couchbase Integration Patterns
Kafka & Couchbase Integration PatternsKafka & Couchbase Integration Patterns
Kafka & Couchbase Integration PatternsManuel Hurtado
 
Migration and Coexistence between Relational and NoSQL Databases by Manuel H...
 Migration and Coexistence between Relational and NoSQL Databases by Manuel H... Migration and Coexistence between Relational and NoSQL Databases by Manuel H...
Migration and Coexistence between Relational and NoSQL Databases by Manuel H...Big Data Spain
 
DMDW Extra Lesson - NoSql and MongoDB
DMDW  Extra Lesson - NoSql and MongoDBDMDW  Extra Lesson - NoSql and MongoDB
DMDW Extra Lesson - NoSql and MongoDBJohannes Hoppe
 
Moving Past Infrastructure Limitations
Moving Past Infrastructure LimitationsMoving Past Infrastructure Limitations
Moving Past Infrastructure LimitationsCaserta
 
Cassandra 2.0 to 2.1
Cassandra 2.0 to 2.1Cassandra 2.0 to 2.1
Cassandra 2.0 to 2.1Johnny Miller
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsMike Broberg
 
Paul Angus - Welcome to CloudStack Collaboration Conference
Paul Angus - Welcome to CloudStack Collaboration ConferencePaul Angus - Welcome to CloudStack Collaboration Conference
Paul Angus - Welcome to CloudStack Collaboration ConferenceShapeBlue
 
NoSQL and MongoDB Introdction
NoSQL and MongoDB IntrodctionNoSQL and MongoDB Introdction
NoSQL and MongoDB IntrodctionBrian Enochson
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octParadigma Digital
 
Simply Responsive CSS3
Simply Responsive CSS3Simply Responsive CSS3
Simply Responsive CSS3Denise Jacobs
 

Similar to I have a NoSQL Toaster - ConnectJS - October 2016 (20)

I Have a NoSQL Toaster - Troy .NET User Group - July 2017
I Have a NoSQL Toaster - Troy .NET User Group - July 2017I Have a NoSQL Toaster - Troy .NET User Group - July 2017
I Have a NoSQL Toaster - Troy .NET User Group - July 2017
 
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical ApproachSlides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
 
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptx
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptxi_have_a_nosql_toaster_-_qcon_-_june_2017.pptx
i_have_a_nosql_toaster_-_qcon_-_june_2017.pptx
 
The Why, When, and How of NoSQL - A Practical Approach
The Why, When, and How of NoSQL - A Practical ApproachThe Why, When, and How of NoSQL - A Practical Approach
The Why, When, and How of NoSQL - A Practical Approach
 
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedIn
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedInCouchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedIn
Couchbase Connect 2016: Monitoring Production Deployments The Tools – LinkedIn
 
Introduction to Couchbase
Introduction to CouchbaseIntroduction to Couchbase
Introduction to Couchbase
 
Kafka & Couchbase Integration Patterns
Kafka & Couchbase Integration PatternsKafka & Couchbase Integration Patterns
Kafka & Couchbase Integration Patterns
 
Migration and Coexistence between Relational and NoSQL Databases by Manuel H...
 Migration and Coexistence between Relational and NoSQL Databases by Manuel H... Migration and Coexistence between Relational and NoSQL Databases by Manuel H...
Migration and Coexistence between Relational and NoSQL Databases by Manuel H...
 
Couchbase Day
Couchbase DayCouchbase Day
Couchbase Day
 
DMDW Extra Lesson - NoSql and MongoDB
DMDW  Extra Lesson - NoSql and MongoDBDMDW  Extra Lesson - NoSql and MongoDB
DMDW Extra Lesson - NoSql and MongoDB
 
Moving Past Infrastructure Limitations
Moving Past Infrastructure LimitationsMoving Past Infrastructure Limitations
Moving Past Infrastructure Limitations
 
Cassandra 2.0 to 2.1
Cassandra 2.0 to 2.1Cassandra 2.0 to 2.1
Cassandra 2.0 to 2.1
 
Couchbase 101
Couchbase 101 Couchbase 101
Couchbase 101
 
SQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 QuestionsSQL to NoSQL: Top 6 Questions
SQL to NoSQL: Top 6 Questions
 
Paul Angus - Welcome to CloudStack Collaboration Conference
Paul Angus - Welcome to CloudStack Collaboration ConferencePaul Angus - Welcome to CloudStack Collaboration Conference
Paul Angus - Welcome to CloudStack Collaboration Conference
 
NoSQL and MongoDB Introdction
NoSQL and MongoDB IntrodctionNoSQL and MongoDB Introdction
NoSQL and MongoDB Introdction
 
Who *is* Jenkins?
Who *is* Jenkins?Who *is* Jenkins?
Who *is* Jenkins?
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Apache hadoop
Apache hadoopApache hadoop
Apache hadoop
 
Simply Responsive CSS3
Simply Responsive CSS3Simply Responsive CSS3
Simply Responsive CSS3
 

More from Matthew Groves

CREAM - That Conference Austin - January 2024.pptx
CREAM - That Conference Austin - January 2024.pptxCREAM - That Conference Austin - January 2024.pptx
CREAM - That Conference Austin - January 2024.pptxMatthew Groves
 
FluentMigrator - Dayton .NET - July 2023
FluentMigrator - Dayton .NET - July 2023FluentMigrator - Dayton .NET - July 2023
FluentMigrator - Dayton .NET - July 2023Matthew Groves
 
Cache Rules Everything Around Me - DevIntersection - December 2022
Cache Rules Everything Around Me - DevIntersection - December 2022Cache Rules Everything Around Me - DevIntersection - December 2022
Cache Rules Everything Around Me - DevIntersection - December 2022Matthew Groves
 
Putting the SQL Back in NoSQL - October 2022 - All Things Open
Putting the SQL Back in NoSQL - October 2022 - All Things OpenPutting the SQL Back in NoSQL - October 2022 - All Things Open
Putting the SQL Back in NoSQL - October 2022 - All Things OpenMatthew Groves
 
Cache Rules Everything Around Me - Momentum - October 2022.pptx
Cache Rules Everything Around Me - Momentum - October 2022.pptxCache Rules Everything Around Me - Momentum - October 2022.pptx
Cache Rules Everything Around Me - Momentum - October 2022.pptxMatthew Groves
 
Don't Drop ACID (July 2021)
Don't Drop ACID (July 2021)Don't Drop ACID (July 2021)
Don't Drop ACID (July 2021)Matthew Groves
 
Don't Drop ACID - Data Love - April 2021
Don't Drop ACID - Data Love - April 2021Don't Drop ACID - Data Love - April 2021
Don't Drop ACID - Data Love - April 2021Matthew Groves
 
Demystifying NoSQL - All Things Open - October 2020
Demystifying NoSQL - All Things Open - October 2020Demystifying NoSQL - All Things Open - October 2020
Demystifying NoSQL - All Things Open - October 2020Matthew Groves
 
Autonomous Microservices - Manning - July 2020
Autonomous Microservices - Manning - July 2020Autonomous Microservices - Manning - July 2020
Autonomous Microservices - Manning - July 2020Matthew Groves
 
CONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQLCONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQLMatthew Groves
 
JSON Data Modeling - GDG Indy - April 2020
JSON Data Modeling - GDG Indy - April 2020JSON Data Modeling - GDG Indy - April 2020
JSON Data Modeling - GDG Indy - April 2020Matthew Groves
 
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...Matthew Groves
 
Intro to SQL++ - Detroit Tech Watch - June 2019
Intro to SQL++ - Detroit Tech Watch - June 2019Intro to SQL++ - Detroit Tech Watch - June 2019
Intro to SQL++ - Detroit Tech Watch - June 2019Matthew Groves
 
Autonomous Microservices - CodeMash - January 2019
Autonomous Microservices - CodeMash - January 2019Autonomous Microservices - CodeMash - January 2019
Autonomous Microservices - CodeMash - January 2019Matthew Groves
 
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 20185 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018Matthew Groves
 
JSON Data Modeling - July 2018 - Tulsa Techfest
JSON Data Modeling - July 2018 - Tulsa TechfestJSON Data Modeling - July 2018 - Tulsa Techfest
JSON Data Modeling - July 2018 - Tulsa TechfestMatthew Groves
 
5 NoSQL Options - Toronto - May 2018
5 NoSQL Options - Toronto - May 20185 NoSQL Options - Toronto - May 2018
5 NoSQL Options - Toronto - May 2018Matthew Groves
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
 
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...Matthew Groves
 
Querying NoSQL with SQL - KCDC - August 2017
Querying NoSQL with SQL - KCDC - August 2017Querying NoSQL with SQL - KCDC - August 2017
Querying NoSQL with SQL - KCDC - August 2017Matthew Groves
 

More from Matthew Groves (20)

CREAM - That Conference Austin - January 2024.pptx
CREAM - That Conference Austin - January 2024.pptxCREAM - That Conference Austin - January 2024.pptx
CREAM - That Conference Austin - January 2024.pptx
 
FluentMigrator - Dayton .NET - July 2023
FluentMigrator - Dayton .NET - July 2023FluentMigrator - Dayton .NET - July 2023
FluentMigrator - Dayton .NET - July 2023
 
Cache Rules Everything Around Me - DevIntersection - December 2022
Cache Rules Everything Around Me - DevIntersection - December 2022Cache Rules Everything Around Me - DevIntersection - December 2022
Cache Rules Everything Around Me - DevIntersection - December 2022
 
Putting the SQL Back in NoSQL - October 2022 - All Things Open
Putting the SQL Back in NoSQL - October 2022 - All Things OpenPutting the SQL Back in NoSQL - October 2022 - All Things Open
Putting the SQL Back in NoSQL - October 2022 - All Things Open
 
Cache Rules Everything Around Me - Momentum - October 2022.pptx
Cache Rules Everything Around Me - Momentum - October 2022.pptxCache Rules Everything Around Me - Momentum - October 2022.pptx
Cache Rules Everything Around Me - Momentum - October 2022.pptx
 
Don't Drop ACID (July 2021)
Don't Drop ACID (July 2021)Don't Drop ACID (July 2021)
Don't Drop ACID (July 2021)
 
Don't Drop ACID - Data Love - April 2021
Don't Drop ACID - Data Love - April 2021Don't Drop ACID - Data Love - April 2021
Don't Drop ACID - Data Love - April 2021
 
Demystifying NoSQL - All Things Open - October 2020
Demystifying NoSQL - All Things Open - October 2020Demystifying NoSQL - All Things Open - October 2020
Demystifying NoSQL - All Things Open - October 2020
 
Autonomous Microservices - Manning - July 2020
Autonomous Microservices - Manning - July 2020Autonomous Microservices - Manning - July 2020
Autonomous Microservices - Manning - July 2020
 
CONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQLCONDG April 23 2020 - Baskar Rao - GraphQL
CONDG April 23 2020 - Baskar Rao - GraphQL
 
JSON Data Modeling - GDG Indy - April 2020
JSON Data Modeling - GDG Indy - April 2020JSON Data Modeling - GDG Indy - April 2020
JSON Data Modeling - GDG Indy - April 2020
 
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...
Background Tasks Without a Separate Service: Hangfire for ASP.NET - KCDC - Ju...
 
Intro to SQL++ - Detroit Tech Watch - June 2019
Intro to SQL++ - Detroit Tech Watch - June 2019Intro to SQL++ - Detroit Tech Watch - June 2019
Intro to SQL++ - Detroit Tech Watch - June 2019
 
Autonomous Microservices - CodeMash - January 2019
Autonomous Microservices - CodeMash - January 2019Autonomous Microservices - CodeMash - January 2019
Autonomous Microservices - CodeMash - January 2019
 
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 20185 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
 
JSON Data Modeling - July 2018 - Tulsa Techfest
JSON Data Modeling - July 2018 - Tulsa TechfestJSON Data Modeling - July 2018 - Tulsa Techfest
JSON Data Modeling - July 2018 - Tulsa Techfest
 
5 NoSQL Options - Toronto - May 2018
5 NoSQL Options - Toronto - May 20185 NoSQL Options - Toronto - May 2018
5 NoSQL Options - Toronto - May 2018
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
 
Querying NoSQL with SQL - KCDC - August 2017
Querying NoSQL with SQL - KCDC - August 2017Querying NoSQL with SQL - KCDC - August 2017
Querying NoSQL with SQL - KCDC - August 2017
 

Recently uploaded

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

I have a NoSQL Toaster - ConnectJS - October 2016

  • 1. I have a NoSQLToaster. Why would I want a NoSQL database? Matthew D. Groves @mgroves Original slides by Matthew Revell - @matthewrevell
  • 2. ©2016 Couchbase Inc. 2 Where am I? • Connect.Tech • http://connect-js.com • http://twitter.com/connect_js
  • 3. ©2016 Couchbase Inc. 3 Who am I? • Matthew D. Groves • Developer Advocate for Couchbase • @mgroves onTwitter • Podcast and blog: http://crosscuttingconcerns.com • “I am not an expert, but I am an enthusiast.” – Alan Stevens
  • 4. ©2016 Couchbase Inc. 4 Tweet something, get a sticker! Use #Couchbase Tweet something interesting you’ve learned. Tweet a picture. I’ve got stickers and a prize for the best tweet!
  • 5. ©2016 Couchbase Inc. 5 Couchbase and CouchDB Couchbase is to CouchDB as MySQL is to SQL Server
  • 6. ©2016 Couchbase Inc. 6 SQL is the norm, right? https://commons.wikimedia.org/wiki/File:George_Wendt_at_the_41st_Emmy_Awards_cropped.jpg
  • 7. ~3200 BC: invention of writing in Mesopotamia ~300 BC: Library of Alexandria ~1041AD: Movable type invented in China 1450: Movable type invented in Europe 1822: Babbage’s paper on the application of difference engines 1943: Colossus, the first programmable digital computer 1957-1960: IBM SABRE, the first commercial use of a database 1970: EF Codd proposes the relational database model 1974: Ingres released 1979: Commercial launch of Oracle database 1988: Object databases appear 1989: Microsoft SQL Server version 1 1991: HTTP v0.9 1995: MySQL’s initial release 2005: CouchDB released 2006: Google’s BigTable paper 2007: Amazon’s Dynamo paper 2008-2009: The NoSQL Cambrian explosion: Riak, MongoDB,Cassandra, Redis 2010: Couchbase arrives on the scene
  • 8. NoSQL isn’t a very useful term
  • 10. ©2016 Couchbase Inc. 10 Scalable? https://commons.wikimedia.org/wiki/File:Dagwood_sandwich.jpg
  • 11. ©2016 Couchbase Inc. 11 Commodity Hardware https://commons.wikimedia.org/wiki/File:Rear_of_rack_at_NERSC_data_center_-_closeup.jpg
  • 12. ©2016 Couchbase Inc. 12 ACID vs BASE? https://commons.wikimedia.org/wiki/File:PH_Scale.svg Atomic Consistent Isolated Durable Basic Availability Soft-state Eventual consistency
  • 13. ©2016 Couchbase Inc. 13 Schema Schemaless https://en.wikipedia.org/wiki/File:Star-schema-example.png
  • 14. ©2016 Couchbase Inc. 14 Normalized Denormalized https://commons.wikimedia.org/wiki/File:Frown.JPG
  • 15. ©2016 Couchbase Inc. 15 First: Why NoSQL? https://www.flickr.com/photos/wonderlane/13067014944
  • 16. ©2016 Couchbase Inc. 16 Round pegs, square holes http://www.timesofbook.com/2013/09/blobfish-image-gallery.html#.V6iXwbgrJhE
  • 17. ©2016 Couchbase Inc. 17 Perhaps SQL is right for this project
  • 18. ©2016 Couchbase Inc. 18 Scaling can be hard https://commons.wikimedia.org/wiki/File:Sandwiches_Vienna.jpg
  • 19. ©2016 Couchbase Inc. 19 Availability is hard https://www.flickr.com/photos/jeepersmedia/14562425273/ C A P
  • 20. ©2016 Couchbase Inc. 20 Schemas can be hard https://commons.wikimedia.org/wiki/File:MediaWiki_database_schema_1-17_(r82044).svg
  • 21. ©2016 Couchbase Inc. 21 Types of NoSQL databases Document Key/Value Columnar Graph
  • 22. ©2016 Couchbase Inc. 22 Convergence!
  • 23. ©2016 Couchbase Inc. 23 Document
  • 24. ???
  • 25. ©2016 Couchbase Inc. 25 What makes it a document database?
  • 27.
  • 28. ©2016 Couchbase Inc. 28 The document database understands the format of the document
  • 29. ©2016 Couchbase Inc. 29 It can do server-side stuff
  • 31. "ClientProductCode","Title","Quantity" "TShirtCBS","Couchbase logo t-shirt (small)",29 "TShirtCBM","Couchbase logo t-shirt (medium)",72 "TShirtCBL","Couchbase logo t-shirt (large)",34 "TShirtCBXL","Couchbase logo t-shirt (extra large)",12 "StickerCBLogo","Couchbase logo sticker",256 "PenCBLogo","Couchbase logo pen",365
  • 32. class Program { private static IBucket _bucket; static void Main(string[] args) { SetupCouchbase(); LoadStockList(); ClusterHelper.Close(); } private static void SetupCouchbase() { ClientConfiguration config = new ClientConfiguration(); config.Servers = new List<Uri> {new Uri("couchbase://192.168.1.5") }; ClusterHelper.Initialize(config); _bucket = ClusterHelper.GetBucket("default"); } private static void LoadStockList() { var csv = new CsvReader(File.OpenText("swag.csv")); while (csv.Read()) { var record = csv.GetRecord<dynamic>(); var document = new Document<dynamic> { Id = record.ClientProductCode, Content = new { record.Title, record.Quantity } }; _bucket.Insert(document); Console.WriteLine($"Added document '{record.ClientProductCode}'"); } } }
  • 33. private static void SetupCouchbase() { ClientConfiguration config = new ClientConfiguration(); config.Servers = new List<Uri> {new Uri("couchbase://192.168.1.5") }; ClusterHelper.Initialize(config); _bucket = ClusterHelper.GetBucket("default"); }
  • 34. private static void LoadStockList() { var csv = new CsvReader(File.OpenText("swag.csv")); while (csv.Read()) { var record = csv.GetRecord<dynamic>(); var document = new Document<dynamic> { Id = record.ClientProductCode, Content = new { record.Title, record.Quantity } }; _bucket.Insert(document); Console.WriteLine($"Added document '{record.ClientProductCode}'"); } }
  • 35.
  • 36. private static void GetDocument() { var doc = _bucket.Get<dynamic>("StickerCBLogo"); Console.WriteLine($"Document Key: {doc.Id}"); Console.WriteLine($"Title: {doc.Value.title}"); Console.WriteLine($"Quantity: {doc.Value.quantity}"); }
  • 37.
  • 38. ©2016 Couchbase Inc. 38 Typical Document Database Operations • Upsert (aka set) • Inserts document if key doesn’t exist, replaces otherwise • Insert (aka add) • Inserts document, error if it already exists • Update (aka replace) • Updates document, error if it doesn’t exist • Delete • Get
  • 39. ©2016 Couchbase Inc. 39 N1QL SELECT m.* FROM `default` m WHERE META(m).id = ‘StickerCBLogo’ SELECT m.* FROM `default` m WHERE m.quantity > 10
  • 40. Great for Dev Scales Easily Consistently Fast
  • 41. ©2016 Couchbase Inc. 41 Use cases for Document Databases • User profiles • Session stores • Content management • General relational replacement • http://info.couchbase.com/15Q1TopTenUC.html
  • 42. ©2016 Couchbase Inc. 42 Key/Value Database
  • 43.
  • 44. ©2016 Couchbase Inc. 44 Key-Value Databases In-memory caches and distributed data stores
  • 45. ©2016 Couchbase Inc. 45 Doesn’t care what your data is (mostly) KEY1 { type: “json” } KEY2 <data type=“xml”></data> KEY3 Lorem ipsum … 00100101000100101 KEYN https://www.flickr.com/photos/dcmot/23168680069
  • 47. ©2016 Couchbase Inc. 47 C# Riak private static void DoStuffWithRiak() { var cluster = RiakCluster.FromConfig("riakConfig"); var client = cluster.CreateClient(); var actor = new RiakObject("actors", "James Bond","Sean Connery"); client.Put(actor); var actorBackOut = client.Get("actors", "James Bond"); var str = System.Text.Encoding.UTF8.GetString(actorBackOut.Value.Value); Console.WriteLine($"Value: {str}"); }
  • 48.
  • 49. ©2016 Couchbase Inc. 49 Introducing: Eventual Consistency!
  • 50. ©2016 Couchbase Inc. 50 Eventual Consistency https://www.flickr.com/photos/scottchene/7046992749 https://commons.wikimedia.org/wiki/File:Timothy_Dalton_1987.jpg https://commons.wikimedia.org/wiki/File:Sir_Roger_Moore_crop.jpg
  • 51. ©2016 Couchbase Inc. 51 There can be only one! https://en.wikipedia.org/wiki/File:Highlander_film_Connor_MacLeod.jpg
  • 52. ©2016 Couchbase Inc. 52 So, fix it https://www.flickr.com/photos/94086507@N00/84368105
  • 54. ©2016 Couchbase Inc. 54 Use Cases for K/V • Data variability • Object caching • Session storage • Large object storage
  • 55. ©2016 Couchbase Inc. 55 Columnar
  • 56.
  • 58. ©2016 Couchbase Inc. 58 Keyspace
  • 59. ©2016 Couchbase Inc. 59 Column Family
  • 60. CREATE KEYSPACE mykeyspace WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '1'}; CREATE TABLE users (firstname text, lastname text, age int, email text, city text, PRIMARY KEY (lastname));
  • 61. private static void DoStuffWithDataStax() { var cluster = Cluster.Builder().AddContactPoint("127.0.0.1").Build(); var session = cluster.Connect("mykeyspace"); session.Execute("insert into users (lastname, age, city, email, firstname) values ('Jones', 35, 'Austin', 'bob@example.com', 'Bob')"); var userBackOut = session.Execute("select * from users where lastname='Jones'").First(); Console.WriteLine($"{userBackOut["firstname"]} {userBackOut["age"]}"); }
  • 62.
  • 63. Impedance Mismatch ScalesWell (Ops Headache) Suited to Analytics
  • 64. ©2016 Couchbase Inc. 64 Use cases for Columnar •Metering data •Really big data •Analytics
  • 65. ©2016 Couchbase Inc. 65 Graph https://commons.wikimedia.org/wiki/File:The_protein_interaction_network_of_Treponema_pallidum.png
  • 66. ©2016 Couchbase Inc. 66 Leonhard Euler
  • 67. ©2016 Couchbase Inc. 67 7 Bridges of Königsberg
  • 68.
  • 69. ©2016 Couchbase Inc. 69 Use cases for Graph databases • Social networks / dating sites • Fraud detection • Parcel routing • Shopping recommendations
  • 70. ©2016 Couchbase Inc. 70 Say what? Relational Document Key/Value Columnar Graph Object others…
  • 71. ©2016 Couchbase Inc. 71 Box arrow box arrow Web Logic SQL Riak Couchbase More Logic Mobile
  • 72. ©2016 Couchbase Inc. 72 Couchbase, everybody! http://couchbase.com/connect http://info.couchbase.com/Connect16_Livestream_Registration.html
  • 73. ©2016 Couchbase Inc. 73 Where do you find us? • developer.couchbase.com • blog.couchbase.com • forums.couchbase.com • @couchbasedev • #couchbase • @mgroves • @couchbase