SlideShare a Scribd company logo
NoSQL
Why, When, and How
 starring CouchDB
aka            built   rebuilding on




                          hack at


contribute to
                          work at
One More thing...


Co‐organizing
REST

Fest
2011
w/Mike

Amundsen

restfest.org
What
   is
  Why NoSQL
       ^
NoSQL is...


                Not Only
SQL      or
                  SQL

              I
vote
for
this
one
Origins of the Name
Carlo
Strozzi
‐
NoSQL
app

  started
in
1998.
RDBMS
sans
SQL

applied
to
non‐relational
DB’s
around

2008‐ish

no:sql(east)

select
fun,
profit
from
real_world

where
relational=false;
Origin of the Species

non‐relational
databases
pre‐date

relational
ones

it’s
sorta
like
AJAX

  been
doin’
it
for
awhile

  gets
a
name

  now
it’s
cool!!1!
Types of NoSQL DBs

graph
(RDF/Semantic
Web/triples)

key‐value
(just
what
it
says)

document
(k/v
+
queriability)

object
(big
in
the
1980s)

multivalue
(old
tech...like
1960s)

NewSQL?
NewSQL?
Recently
(April,
2011)
coined
term

  by
The
451
Group

mostly
means
SQL
db’s
+
better

scallability

or
NoSQL
db’s
+
SQL
layers

yeah!
more
keywords!!

  keeps
marketing
happy...
...on to specifics
Graph (RDF)
                         pretty
heady
stuff

                         Web
3.0?
Maybe...

                         simple
concept,

FlockDB (from Twitter)   complicated
execution

                         (often)
      AllegroGraph
                         Queried
with:
   Cytoscape
                           SPARQL

                           Java
Key Value Stores

                             scalable
caches

                             generally
no

                             query
language
Project Voldemort            get
key(s)
                    Hibari
                             return
value(s)

                             Big
Co
need

                             driven
Document Databases
        key value + querying




   Lotus Notes

Amazon SimpleDB
object
multivalue



pretty
antique

lots
of
legacy
rollouts
NewSQL
any
of
the
previously
mentioned
DB’s

+
query
layers...maybe

expect
any
and
all
SQL
DB’s
to
jump

on
this
train
and/or
slip
in
the
next

few
years

worth
a
look
if
you
*must*
have

normalized
storage

but
who
needs
normalization?
Why
One Reason
options
denormalization

schemaless

graph/object
schema

  closer
match
to
business
logic

generally
faster/more
scalable

certainly
more
distributable
alt.queries

Map/Reduce

  thanks,
Google
(paper
from
2004)

XPath
and/or
XQuery

SPARQL

SQL...or
something
quite
similar

  Linq
licensing

Apache
License
2.0
the
favorite

AGPLv3
the
commercial
favorite

others
include

  LGPL(v2/3),
GPL(v2/3),
BSD,
MIT,

  custom
commercial
or
open
source

    ...here
there
be
dragons...
(un)expected extras
         at least in CouchDB


Built
in
Web
Server

  or
App
Server

Geospatial
bounding
box
queries

n‐master
replication

binary
file
storage

scales
up
and
down
When
Scenarios

Scalability

  caching,
sharding

Analytics

Data
Warehousing

Ubiquitous/Distributed
Data

  mobile,
desktop,
server
Scalability

“cache”
style
DBs

  data
served
from
RAM
(mostly)

  Membase,
Elastic
Couchbase,

  memcached,
MongoDB,
Casandra

horizontal
scalability

  add
more
servers,
not
more
server
Analytics

Hadoop

HBase

Cassandra



this
bleeds
over
into
data

warehousing
quickly
Ubiquitous/Distributed
         Data

 CouchDB

   server
<=>
desktop
<=>
mobile

 Riak
Mobile?

   go
to
Erlang
Factory
in
June
FALE Scenarios


power
outages

data
loss

  failed
persistence,
no
persistence

network
unavailability



 special thanks to @coats who runs fale.ca for the FALE stamp
Solution: CouchDB
How
with CouchDB
Time to Relax
Time to Relax



                 That’s
Damien.
                He
built
CouchDB.
That’s
the
CouchDB
       gang
sign.




Time to Relax



                         That’s
Damien.
                        He
built
CouchDB.
That’s
the
CouchDB
       gang
sign.




Time to Relax               Learn
it!




                         That’s
Damien.
                        He
built
CouchDB.
and here’s why
CouchDB has Super
     Powers!
Schemaless

Document
centric

Replication/Sync

Fail
Fast
Architecture

  stateless
API

  append
only
file
storage
Document centric

“natural”
data
model

  store
data
like
it
exists

  everywhere
else:
as
a
document

map/reduce
vs.
sql

  sorting
documents
out
of
a
drawer

  vs.
reassembling
them
from
bits
of

  data
Replication/Sync
MVCC‐based
transactions

  versioning...but
only
meant
for

  transactions

safely
merge
databases

documents
aren’t
compared,
only

UUID’s
&
revision
ID’s

conflicting
documents
are
marked
and

a
winner
is
picked
Fail Fast

append
only
database
file

  everything
goes
on
the
end
of
the

  file

  querys
are
cached
there
too

bounce
back
from
errors
rather
than

spin
wheels
indefinitely
C.O.U.C.H

Collection

Of

Unreliable

Commodity

Hardware
CouchDB Scaling

scales
up
and
down

  server
<=>
desktop
<=>
mobile

  thanks
to
n‐master
replication

BigCouch
plugin
for
sharding

HTTP
API
can
be
load
balanced

  reverse
proxies
and
caching
Get CouchDB
http://www.couchbase.com/downloads/
couchbase‐server/community
http://iriscouch.com/
  both
have
GeoCouch
built
in!
https://cloudant.com/
(BigCouch/sharded)

your
system’s
package
installer...
  http://wiki.apache.org/couchdb/
  Installation
Time to Relax
         (command line)

Apache CouchDB 1.0.2 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
[info] [<0.31.0>] Apache CouchDB has 
  started on http://127.0.0.1:5984/
PHP & CouchDB
HTTP Clients
All
you
really
need
to
get
started

Does
require
a
better
understanding
of

CouchDB’s
API...but
that’s
A
Good
Thing!

Will
improve
your
HTTP
skillz...another

Good
Thing!

requires
more
work...the
part
you
won’t

like

  but
it’s
worth
it
to
learn
HTTP
&
REST
CouchDB Clients
CouchDB’s
API
is
just
HTTP
but...helper
libraries
can...help:
  auto
(en|de)code
JSON
  handle
base64‐ing
“inline”
attachments
  manage
authentication,
cookies,
OAuth

  token
exchange
  caching!!!

  _changes
feed
watching
CouchDB Clients
Sag
for
CouchDB
(Apache
License
2.0)
PHP
On
Couch
(GPLv2
or
v3)
Beyond
here,
there
be
giants...
  PHPillow
(LGPL
3)

  PHP
Object_Freezer
(BSD)
  PHP
CouchDB
Extension
(PHP
License
3.0)
  Doctrine2
CouchDB
ODM
HTTP Clients
curl

  ugh...messy

pecl_http

  lovely
(next
to
curl),
but
takes

  some
install
time,
lacks
examples

Zend_HTTP
&
PEAR
HTTP_Request2

Most
major
frameworks
have
their
own
Client Suggestions
HTTP

  pick
one
that’s
flexible
(can

  handle
COPY)

CouchDB

  I
use
Sag
currently.
Caching,

  Cookie
Auth,
nice
name.

  PHP‐on‐Couch
seems
great,
but
watch

  the
license
(GPL)
Today’s Stack
In
PHP:

  Sag
‐
saggingcouch.com/

For
HTTP
API
Demoing/Testing:

  Resty
‐
github.com/micha/resty

  Poster
for
Firefox

    code.google.com/p/poster‐
    extension/
Other Handy HTTP
      Clients
HTTPClient
for
Mac
OS
X

Charles
Proxy
($$)

http‐twiddle
for
Emacs

Fiddler
for
Windows

Solex
for
Eclipse
CouchDB HTTP API
  we’ll be back to PHP in a bit
JSON Documents


all
responses
are
valid
JSON

JSON
support
is
built
into
PHP
5.2+

pecl
&
“pure”
PHP
(de|en)code
for

older
versions
A JSON Document
{
 “json”: “key/value pairs”,
 “_id” : “some uuid”,
 “_rev”: “mvcc key”,
 “string keys”:
   [1,2,3,”four”,null],
 “schema free”:
   {“so it’s”:“flexible”}
}
JSON to PHP Object
$json
=
'{"json":"document","with":["an",
"array"]}';

$j
=
json_decode($json);

//
$j
stdClass
Object
(




[json]
=>
document




[with]
=>
Array








(












[0]
=>
an












[1]
=>
array








)
)
echo
$j‐>with[1];
JSON to PHP array
 $json = '{"json":"document","with":["an",
 "array"]}';

 $j = json_decode($json, true);

 // $j
 Array
 (
     [json] => document
     [with] => Array
         (
             [0] => an
             [1] => array
         )
 )
 echo $j[‘with’][1];
I got tired of having to
      pick -> or []
 $j
=
new
ArrayObject(
 






json_decod($json),
 






ArrayObject::ARRAY_AS_PROPS
 




);

 print_r($j[‘with’][0]);

 print_r($j‐>with[0]);

 //
“an”
‐‐
same
result!
no
errors!
HTTP / REST
         basics


 GET          read

 PUT     create or update

DELETE        delete

POST      bulk operation
Resty
command line RESTful good times
Setup Resty

install
(see
resty
page)

$
resty
.

#
GET,
POST,
PUT,
DELETE
&
HEAD
#
are
scripts
now!

$
resty
http://localhost:5984/

#
set
Resty
to
default
to
CouchDB
Create a Database
$
PUT
/pouch/
{“ok”:true}
$
GET
/pcouch/
{"db_name":"pcouch",
"doc_count":0,"doc_del_count":0,
"update_seq":0,"purge_seq":0,
"compact_running":false,
"disk_size":79,
"instance_start_time":"1289923325819422",
"disk_format_version":5,
"committed_update_seq":0}
DELETE a Database

$
DELETE
/pouch/

{“ok”:true}

#
^^^
be
careful
with
that
one!

#
let’s
recreate
it

$
PUT
/pouch/
Create Document


PUT
/pouch/tek

‘{“php”:”tek”}’

{"ok":true,
"id":"test",
"rev":"1‐89af21439a03933bc3fc8c14cbeb
496e"}
GET the Document

GET
/pouch/tek

{"_id":"test",
"_rev":"1‐89af21439a03933bc3fc8c14cbe
b496e",
"php":"tek"}

//
we'll
need
that
_rev
value
to

update
this
doc
PUT (failure)
          on purpose...




PUT
/pouch/tek
‘{“php”:”tek”}’

{"error":"conflict","reason":"Documen
t
update
conflict."}

#
we
need
that
_rev
value
now
PUT things right
PUT
/pouch/tek
‘{"_rev":

"1‐89af21439a03933bc3fc8c14cbeb496e",

"php":"tek"}’

#
that

represents
a
new
line

#
doc
could
also
contain
the
“id”

{"ok":true,
"id":"tek",
"rev":"2‐
fff750985c2c2602e859fe38cd1d347e"}
PUT binary attachments
 PUT
/pouch/tek/photo?rev=2‐
 fff750985c2c2602e859fe38cd1d347e

 ‐Q
filename.png

 ‐H
“Content‐Type:
image/png”

 {"ok":true,"id":"tek",
 "rev":"3‐18d519e58b569e43a6fd5e87491f0c4c"}

 GET
/pouch/tek

 {"_id":"tek",
 "_rev":"3‐18d519e58b569e43a6fd5e87491f0c4c",
 "_attachments":{"photo":{"content_type":"image/
 png",
 "revpos":1,"length":18,"stub":true}}}
A bit about
      attachments
Each
attachment
to
a
doc
has
it’s
own

URL:

  /pouch/tek/photo

  /pouch/tek/schedule.pdf

each
attachments
has
it’s
own

mimetype

attachments
can
be
added/updated
via

their
own
URLs
or
inline
DELETE (failure)
       on purpose...again



DELETE
/pouch/tek

{"error":"conflict",
"reason":"Document
update
conflict."}

#
you
always
have
to
send
a
“rev”

when
changing
a
doc
in
any
way
DELETE
DELETE
‘/pouch/tek?rev=

3‐18d519e58b569e43a6fd5e87491f0c4c’
‐Q
#
that
‐Q
tells
Resty
not
to
urlencode
{"ok":true,"id":"tek",
"rev":"4‐3e8c21e8e610c4ea7f8e247a45c6e
b04"}
#
what?!?
another
rev?...but
the
#
document
should
be
dead?!
GETing 404’s
GET
/pouch/tek
{"error":"not_found",
"reason":"deleted"}
GET
/pouch/tek12
{"error":"not_found",
"reason":"missing"}
#
RESTifarian
note:
would
be
a
409

#
if
cache’s
were
built
better
That was just the very
       basics
 GET
/_stats
(server
stats)

 GET
/_all_dbs
(list
all
DB’s)

 GET
/_all_docs
(list
all
docs)

 GET
/db/_changes
(list
recent

 changes)

   super
powers!
Map/Reduce Queries
      searching the file drawer


essentially
stored
queries

  a.k.a.
“Views”

written
in
JavaScript
(or
Python
or

Ruby
or
Erlang
or
PHP?)

  similar
to
array_map()/
  array_reduce(),
but
scalable

no
ad‐hoc
queries
Pouch
put your media in the Couch
       starring PHP!
i want to cover
schema‐less
JSON
docs        _security

Binary
Attachments        server
side
rendering

                          stuff
Map/Reduce
                             _show
   Javascript
                             _list
   several
examples
                          URL
Rewriting
replication
                             _rewrite
security
                             vhosts
   validate_doc_updates
Pouch is...

a
Database
of

  JSON
docs
of
file
meta‐data

  with
the
file
attached!

a
filesystem
importer

a
Web‐based
CouchApp
for
browsing
0.1 Files into CouchDB


 gather
EXIF
data

 add
attachment

 PUT
to
CouchDB

 let
us
know
how
it
went
code preamble
#!/usr/bin/php
<?php
if ($argc < 2) die('I need a file name.'."n");
// CouchDB config
$user = 'admin';
$password = 'passwd';

// gather and clean EXIF data
$exif = exif_read_data($argv[1]);
unset($exif['MakerNote']);
unset($exif['ComponentsConfiguration']);
unset($exif['JPEGThumbnail']);
unset($exif['TIFFThumbnail']);
require_once dirname(realpath(__FILE__)).'/../libs/Sag/src/Sag.php';


$sag = new Sag('localhost', 5984);
$sag->setDatabase('pouch');
// PUT the binary attachment first
$sag->setAttachment('original', // the attachment name
	 file_get_contents($argv[1]), // the file
	 image_type_to_mime_type(exif_imagetype($argv[1])),
	 $id = md5_file($argv[1])); // the doc id
// then add the EXIF data
// GET the full doc as we need to add our info to what's there
// atomicity is at a document level in CouchDB
$doc = $sag->get($id)->body;
$doc->exif = $exif;
print_r($sag->put(md5_file($argv[1]), $doc));
handle updates: GET/PUT or
    HEAD/PUT or PUT/
     error_handle/PUT
3 Tier UI for viewing
  browser <-> php <-> couchdb
- GET attachments
_all_docs for doc list
loading CouchDB results into
JSON and then into template/
         PHP output
Just certain documents
       ala Map/Reduce
_view API & query
     params
include_docs
thumbnail creation
    from PHP
     async or during upload
  if we want to wrap CouchDB
disadvantages of non-
   async operations
2.5 Tier refactoring
    browser <-> couchdb
               ^ php
find photos sans
  thumbnails
    and add them
_changes feed
could check this first before hitting the view:
           _changes is “lighter”
JS app to replace the
    PHP-built UI
PHP cronjob handles
thumbs/metadata async
CouchDB setup on
   public port
couchapp script
  http://couchapp.org
Replicating the App
big advantage: data &
  app stay together
       this is huge!
small disadvantages: dynamic
data (thumbs) won’t always be
            there
no real data loss in this case, as they can be
               re-created later
_replicate
Removing Images
   just DELETE the docs
Compaction (for space
     cleanup)
               _deleted docs
 _stats (for CouchDB-wide) space usage)
Securing the
 CouchApp
_security API
Users/Roles on docs
CouchDB permissions
Cookie Authentication
  (in the CouchApp)
Basic Authentication
  (for the cronjob)
   Sag, HTTP API access, etc.
OAuth
it’s an option, but a whole ‘nother talk
Replicating with
    security
Adding a form for User
     Data Entru
- Server-side
  validation
validate_doc_updates
    document validate for
     additional security
Making the App “Static” (less
     AJAX dependent)
_show
“templating” for a single doc
_list
templating for view output
Migrating existing MySQL-
based Gallery data to Pouch
writing JSON docs
pulled from old Gallery
requesting those docs, PUTing
 them, PUTing the attachment
CouchDB as REST API
      server
 Building
another
API
for
Pouch
   In
addition
to
(or
instead
of)
the

   standard
CouchDB
API
 Putting
that
into
CouchDB
   _list
‐
index
pages
   _show
‐
single
document
page
   _update
‐
document
modification

   _rewrite
‐
URL
Rewriting
Any questions?
Other CouchApps


demo/review
other
CouchApps?

discuss
scalability/load
balancing?

deeper
dive
into
Map/Reduce
joins?

More Related Content

What's hot

Selecting best NoSQL
Selecting best NoSQL Selecting best NoSQL
Selecting best NoSQL
Mohammed Fazuluddin
 
Big Data on the Microsoft Platform
Big Data on the Microsoft PlatformBig Data on the Microsoft Platform
Big Data on the Microsoft Platform
Andrew Brust
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
Marin Dimitrov
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdb
iammutex
 
NoSQL: An Analysis
NoSQL: An AnalysisNoSQL: An Analysis
NoSQL: An Analysis
Andrew Brust
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
Andrew Brust
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
Andrew Brust
 
Big Data Strategy for the Relational World
Big Data Strategy for the Relational World Big Data Strategy for the Relational World
Big Data Strategy for the Relational World
Andrew Brust
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQL
PolarSeven Pty Ltd
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
Ike Ellis
 
CouchDB introduction
CouchDB introductionCouchDB introduction
CouchDB introduction
Sander van de Graaf
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Ravi Teja
 
NoSQL databases and managing big data
NoSQL databases and managing big dataNoSQL databases and managing big data
NoSQL databases and managing big data
Steven Francia
 
CouchDB
CouchDBCouchDB
CouchDB
Rashmi Agale
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and cons
Fabio Fumarola
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the Web
Karel Minarik
 
Mongo DB
Mongo DBMongo DB
Mongo DB
Edureka!
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
Filip Ilievski
 
NOSQL Overview
NOSQL OverviewNOSQL Overview
NOSQL Overview
Tobias Lindaaker
 
No sq lv1_0
No sq lv1_0No sq lv1_0
No sq lv1_0
Tuan Luong
 

What's hot (20)

Selecting best NoSQL
Selecting best NoSQL Selecting best NoSQL
Selecting best NoSQL
 
Big Data on the Microsoft Platform
Big Data on the Microsoft PlatformBig Data on the Microsoft Platform
Big Data on the Microsoft Platform
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdb
 
NoSQL: An Analysis
NoSQL: An AnalysisNoSQL: An Analysis
NoSQL: An Analysis
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
 
Big Data Strategy for the Relational World
Big Data Strategy for the Relational World Big Data Strategy for the Relational World
Big Data Strategy for the Relational World
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQL
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
 
CouchDB introduction
CouchDB introductionCouchDB introduction
CouchDB introduction
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
NoSQL databases and managing big data
NoSQL databases and managing big dataNoSQL databases and managing big data
NoSQL databases and managing big data
 
CouchDB
CouchDBCouchDB
CouchDB
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and cons
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the Web
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
NOSQL Overview
NOSQL OverviewNOSQL Overview
NOSQL Overview
 
No sq lv1_0
No sq lv1_0No sq lv1_0
No sq lv1_0
 

Viewers also liked

Semantic Graph Databases: The Evolution of Relational Databases
Semantic Graph Databases: The Evolution of Relational DatabasesSemantic Graph Databases: The Evolution of Relational Databases
Semantic Graph Databases: The Evolution of Relational Databases
Cambridge Semantics
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendations
proksik
 
An Introduction to Graph Databases
An Introduction to Graph DatabasesAn Introduction to Graph Databases
An Introduction to Graph Databases
InfiniteGraph
 
Lju Lazarevic
Lju LazarevicLju Lazarevic
Lju Lazarevic
Connected Data World
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - Import
Neo4j
 
Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...
Neo4j
 
Graph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBayGraph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBay
DataStax Academy
 
Graph databases
Graph databasesGraph databases
Graph databases
Vinoth Kannan
 
Converting Relational to Graph Databases
Converting Relational to Graph DatabasesConverting Relational to Graph Databases
Converting Relational to Graph Databases
Antonio Maccioni
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
James Serra
 
Graph Database, a little connected tour - Castano
Graph Database, a little connected tour - CastanoGraph Database, a little connected tour - Castano
Graph Database, a little connected tour - Castano
Codemotion
 
Introduction to graph databases GraphDays
Introduction to graph databases  GraphDaysIntroduction to graph databases  GraphDays
Introduction to graph databases GraphDays
Neo4j
 
An Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4jAn Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4j
Debanjan Mahata
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph Databases
Max De Marzi
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
Neo4j
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysis
DataminingTools Inc
 

Viewers also liked (16)

Semantic Graph Databases: The Evolution of Relational Databases
Semantic Graph Databases: The Evolution of Relational DatabasesSemantic Graph Databases: The Evolution of Relational Databases
Semantic Graph Databases: The Evolution of Relational Databases
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendations
 
An Introduction to Graph Databases
An Introduction to Graph DatabasesAn Introduction to Graph Databases
An Introduction to Graph Databases
 
Lju Lazarevic
Lju LazarevicLju Lazarevic
Lju Lazarevic
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - Import
 
Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...Designing and Building a Graph Database Application – Architectural Choices, ...
Designing and Building a Graph Database Application – Architectural Choices, ...
 
Graph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBayGraph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBay
 
Graph databases
Graph databasesGraph databases
Graph databases
 
Converting Relational to Graph Databases
Converting Relational to Graph DatabasesConverting Relational to Graph Databases
Converting Relational to Graph Databases
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
 
Graph Database, a little connected tour - Castano
Graph Database, a little connected tour - CastanoGraph Database, a little connected tour - Castano
Graph Database, a little connected tour - Castano
 
Introduction to graph databases GraphDays
Introduction to graph databases  GraphDaysIntroduction to graph databases  GraphDays
Introduction to graph databases GraphDays
 
An Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4jAn Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4j
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph Databases
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Data Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysisData Mining: Graph mining and social network analysis
Data Mining: Graph mining and social network analysis
 

Similar to NoSQL: Why, When, and How

Not only SQL
Not only SQL Not only SQL
Not only SQL
Niklas Gustavsson
 
Nosql seminar
Nosql seminarNosql seminar
NoSQL
NoSQLNoSQL
NoSQL
Novelys
 
Couchbase - Yet Another Introduction
Couchbase - Yet Another IntroductionCouchbase - Yet Another Introduction
Couchbase - Yet Another Introduction
Kelum Senanayake
 
A rubyist's naive comparison of some database systems and toolkits
A rubyist's naive comparison of some database systems and toolkitsA rubyist's naive comparison of some database systems and toolkits
A rubyist's naive comparison of some database systems and toolkits
Belighted
 
Gluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDBGluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDB
Jeff Douglas
 
DynamoDB Gluecon 2012
DynamoDB Gluecon 2012DynamoDB Gluecon 2012
DynamoDB Gluecon 2012
Appirio
 
JS App Architecture
JS App ArchitectureJS App Architecture
JS App Architecture
Corey Butler
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Justin Smestad
 
NoSQL and MapReduce
NoSQL and MapReduceNoSQL and MapReduce
NoSQL and MapReduce
J Singh
 
Big data vahidamiri-tabriz-13960226-datastack.ir
Big data vahidamiri-tabriz-13960226-datastack.irBig data vahidamiri-tabriz-13960226-datastack.ir
Big data vahidamiri-tabriz-13960226-datastack.ir
datastack
 
Azure Databricks is Easier Than You Think
Azure Databricks is Easier Than You ThinkAzure Databricks is Easier Than You Think
Azure Databricks is Easier Than You Think
Ike Ellis
 
MongoDB is the MashupDB
MongoDB is the MashupDBMongoDB is the MashupDB
MongoDB is the MashupDB
Wynn Netherland
 
NoSQL
NoSQLNoSQL
NoSQL
dbulic
 
Fighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with EmbulkFighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with Embulk
Sadayuki Furuhashi
 
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
javier ramirez
 
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
DneprCiklumEvents
 
20170126 big data processing
20170126 big data processing20170126 big data processing
20170126 big data processing
Vienna Data Science Group
 
Intro to RavenDB
Intro to RavenDBIntro to RavenDB
Intro to RavenDB
Alonso Robles
 
NoSql Databases
NoSql DatabasesNoSql Databases
NoSql Databases
Nimat Khattak
 

Similar to NoSQL: Why, When, and How (20)

Not only SQL
Not only SQL Not only SQL
Not only SQL
 
Nosql seminar
Nosql seminarNosql seminar
Nosql seminar
 
NoSQL
NoSQLNoSQL
NoSQL
 
Couchbase - Yet Another Introduction
Couchbase - Yet Another IntroductionCouchbase - Yet Another Introduction
Couchbase - Yet Another Introduction
 
A rubyist's naive comparison of some database systems and toolkits
A rubyist's naive comparison of some database systems and toolkitsA rubyist's naive comparison of some database systems and toolkits
A rubyist's naive comparison of some database systems and toolkits
 
Gluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDBGluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDB
 
DynamoDB Gluecon 2012
DynamoDB Gluecon 2012DynamoDB Gluecon 2012
DynamoDB Gluecon 2012
 
JS App Architecture
JS App ArchitectureJS App Architecture
JS App Architecture
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
NoSQL and MapReduce
NoSQL and MapReduceNoSQL and MapReduce
NoSQL and MapReduce
 
Big data vahidamiri-tabriz-13960226-datastack.ir
Big data vahidamiri-tabriz-13960226-datastack.irBig data vahidamiri-tabriz-13960226-datastack.ir
Big data vahidamiri-tabriz-13960226-datastack.ir
 
Azure Databricks is Easier Than You Think
Azure Databricks is Easier Than You ThinkAzure Databricks is Easier Than You Think
Azure Databricks is Easier Than You Think
 
MongoDB is the MashupDB
MongoDB is the MashupDBMongoDB is the MashupDB
MongoDB is the MashupDB
 
NoSQL
NoSQLNoSQL
NoSQL
 
Fighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with EmbulkFighting Against Chaotically Separated Values with Embulk
Fighting Against Chaotically Separated Values with Embulk
 
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
 
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
 
20170126 big data processing
20170126 big data processing20170126 big data processing
20170126 big data processing
 
Intro to RavenDB
Intro to RavenDBIntro to RavenDB
Intro to RavenDB
 
NoSql Databases
NoSql DatabasesNoSql Databases
NoSql Databases
 

Recently uploaded

Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
Brian Pichman
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
alexjohnson7307
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
Matthias Neugebauer
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
Alison B. Lowndes
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
siddu769252
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10
ankush9927
 
Intel Unveils Core Ultra 200V Lunar chip .pdf
Intel Unveils Core Ultra 200V Lunar chip .pdfIntel Unveils Core Ultra 200V Lunar chip .pdf
Intel Unveils Core Ultra 200V Lunar chip .pdf
Tech Guru
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
DianaGray10
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
Zilliz
 
Google I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged SlidesGoogle I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged Slides
Google Developer Group - Harare
 
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptxMAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
janagijoythi
 
Sonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdfSonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdf
SubhamMandal40
 
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdfLeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
SelfMade bd
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
sunilverma7884
 
Tailored CRM Software Development for Enhanced Customer Insights
Tailored CRM Software Development for Enhanced Customer InsightsTailored CRM Software Development for Enhanced Customer Insights
Tailored CRM Software Development for Enhanced Customer Insights
SynapseIndia
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
Steven Carlson
 
Types of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technologyTypes of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technology
ldtexsolbl
 
kk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdfkk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdf
KIRAN KV
 
Acumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptxAcumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptx
BrainSell Technologies
 

Recently uploaded (20)

Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
 
Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10Computer HARDWARE presenattion by CWD students class 10
Computer HARDWARE presenattion by CWD students class 10
 
Intel Unveils Core Ultra 200V Lunar chip .pdf
Intel Unveils Core Ultra 200V Lunar chip .pdfIntel Unveils Core Ultra 200V Lunar chip .pdf
Intel Unveils Core Ultra 200V Lunar chip .pdf
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
 
Google I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged SlidesGoogle I/O Extended Harare Merged Slides
Google I/O Extended Harare Merged Slides
 
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptxMAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
MAKE MONEY ONLINE Unlock Your Income Potential Today.pptx
 
Sonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdfSonkoloniya documentation - ONEprojukti.pdf
Sonkoloniya documentation - ONEprojukti.pdf
 
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdfLeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
 
Tailored CRM Software Development for Enhanced Customer Insights
Tailored CRM Software Development for Enhanced Customer InsightsTailored CRM Software Development for Enhanced Customer Insights
Tailored CRM Software Development for Enhanced Customer Insights
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
 
Types of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technologyTypes of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technology
 
kk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdfkk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdf
 
Acumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptxAcumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptx
 

NoSQL: Why, When, and How

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n