SlideShare a Scribd company logo
1 of 123
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

Big Data on the Microsoft Platform
Big Data on the Microsoft PlatformBig Data on the Microsoft Platform
Big Data on the Microsoft PlatformAndrew Brust
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdbiammutex
 
NoSQL: An Analysis
NoSQL: An AnalysisNoSQL: An Analysis
NoSQL: An AnalysisAndrew 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 ProsAndrew 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 ProsAndrew 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
 
Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101Ike Ellis
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBRavi Teja
 
NoSQL databases and managing big data
NoSQL databases and managing big dataNoSQL databases and managing big data
NoSQL databases and managing big dataSteven Francia
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and consFabio Fumarola
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the WebKarel Minarik
 

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 DatabasesCambridge Semantics
 
Neo4j - graph database for recommendations
Neo4j - graph database for recommendationsNeo4j - graph database for recommendations
Neo4j - graph database for recommendationsproksik
 
An Introduction to Graph Databases
An Introduction to Graph DatabasesAn Introduction to Graph Databases
An Introduction to Graph DatabasesInfiniteGraph
 
Relational to Graph - Import
Relational to Graph - ImportRelational to Graph - Import
Relational to Graph - ImportNeo4j
 
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 eBayDataStax Academy
 
Converting Relational to Graph Databases
Converting Relational to Graph DatabasesConverting Relational to Graph Databases
Converting Relational to Graph DatabasesAntonio Maccioni
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databasesJames 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 - CastanoCodemotion
 
Introduction to graph databases GraphDays
Introduction to graph databases  GraphDaysIntroduction to graph databases  GraphDays
Introduction to graph databases GraphDaysNeo4j
 
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 Neo4jDebanjan Mahata
 
Introduction to Graph Databases
Introduction to Graph DatabasesIntroduction to Graph Databases
Introduction to Graph DatabasesMax De Marzi
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
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 analysisDataminingTools 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

Couchbase - Yet Another Introduction
Couchbase - Yet Another IntroductionCouchbase - Yet Another Introduction
Couchbase - Yet Another IntroductionKelum 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 toolkitsBelighted
 
DynamoDB Gluecon 2012
DynamoDB Gluecon 2012DynamoDB Gluecon 2012
DynamoDB Gluecon 2012Appirio
 
Gluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDBGluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDBJeff Douglas
 
JS App Architecture
JS App ArchitectureJS App Architecture
JS App ArchitectureCorey Butler
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBJustin Smestad
 
NoSQL and MapReduce
NoSQL and MapReduceNoSQL and MapReduce
NoSQL and MapReduceJ 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.irdatastack
 
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 ThinkIke Ellis
 
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 EmbulkSadayuki 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
 

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
 
DynamoDB Gluecon 2012
DynamoDB Gluecon 2012DynamoDB Gluecon 2012
DynamoDB Gluecon 2012
 
Gluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDBGluecon 2012 - DynamoDB
Gluecon 2012 - DynamoDB
 
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

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

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