Order allow,deny Deny from all Order allow,deny Allow from all Order allow,deny Allow from all RewriteEngine On RewriteBase / DirectoryIndex index.php RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] Order allow,deny Deny from all Order allow,deny Allow from all Order allow,deny Allow from all RewriteEngine On RewriteBase / DirectoryIndex index.php RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] NoSQL: Why, When, and How | KEY | Databases | Computer Software and Applications
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

PDF
Relational vs. Non-Relational
PPTX
Introduction to NoSQL Databases
PPTX
Non relational databases-no sql
PDF
Non Relational Databases
PPTX
Relational and non relational database 7
PDF
Performance comparison: Multi-Model vs. MongoDB and Neo4j
PPTX
An Introduction To NoSQL & MongoDB
PPTX
NOSQL Databases types and Uses
Relational vs. Non-Relational
Introduction to NoSQL Databases
Non relational databases-no sql
Non Relational Databases
Relational and non relational database 7
Performance comparison: Multi-Model vs. MongoDB and Neo4j
An Introduction To NoSQL & MongoDB
NOSQL Databases types and Uses

What's hot (20)

PPTX
Selecting best NoSQL
PPTX
Big Data on the Microsoft Platform
PDF
NoSQL databases
PDF
Introduction to couchdb
PPTX
NoSQL: An Analysis
PPTX
Big Data and NoSQL for Database and BI Pros
PPTX
Big Data and NoSQL for Database and BI Pros
PPTX
Big Data Strategy for the Relational World
PPTX
Introduction to NoSQL
PPTX
Azure DocumentDB 101
KEY
CouchDB introduction
PPT
Introduction to MongoDB
KEY
NoSQL databases and managing big data
PDF
CouchDB
PPT
NoSQL databases pros and cons
PDF
CouchDB – A Database for the Web
PDF
Mongo DB
PPTX
NoSQL databases
PDF
NOSQL Overview
PDF
No sq lv1_0
Selecting best NoSQL
Big Data on the Microsoft Platform
NoSQL databases
Introduction to couchdb
NoSQL: An Analysis
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
Big Data Strategy for the Relational World
Introduction to NoSQL
Azure DocumentDB 101
CouchDB introduction
Introduction to MongoDB
NoSQL databases and managing big data
CouchDB
NoSQL databases pros and cons
CouchDB – A Database for the Web
Mongo DB
NoSQL databases
NOSQL Overview
No sq lv1_0
Ad

Viewers also liked (15)

PPTX
Neo4j - graph database for recommendations
PPT
An Introduction to Graph Databases
PPTX
Lju Lazarevic
PPTX
Relational to Graph - Import
PDF
Designing and Building a Graph Database Application – Architectural Choices, ...
PDF
Graph Based Recommendation Systems at eBay
PPTX
Graph databases
PDF
Converting Relational to Graph Databases
PPTX
Relational databases vs Non-relational databases
PDF
Graph Database, a little connected tour - Castano
PDF
Introduction to graph databases GraphDays
PPTX
An Introduction to NOSQL, Graph Databases and Neo4j
PPTX
Introduction to Graph Databases
PDF
Data Modeling with Neo4j
PPTX
Data Mining: Graph mining and social network analysis
Neo4j - graph database for recommendations
An Introduction to Graph Databases
Lju Lazarevic
Relational to Graph - Import
Designing and Building a Graph Database Application – Architectural Choices, ...
Graph Based Recommendation Systems at eBay
Graph databases
Converting Relational to Graph Databases
Relational databases vs Non-relational databases
Graph Database, a little connected tour - Castano
Introduction to graph databases GraphDays
An Introduction to NOSQL, Graph Databases and Neo4j
Introduction to Graph Databases
Data Modeling with Neo4j
Data Mining: Graph mining and social network analysis
Ad

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

PPT
Not only SQL
PPTX
ODP
NoSQL
PDF
Couchbase - Yet Another Introduction
KEY
A rubyist's naive comparison of some database systems and toolkits
KEY
DynamoDB Gluecon 2012
ZIP
Gluecon 2012 - DynamoDB
PPTX
JS App Architecture
PDF
Introduction to MongoDB
PPTX
NoSQL and MapReduce
PPTX
Big data vahidamiri-tabriz-13960226-datastack.ir
PPTX
Azure Databricks is Easier Than You Think
PDF
MongoDB is the MashupDB
PPTX
NoSQL
PDF
Fighting Against Chaotically Separated Values with Embulk
PDF
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
PPTX
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
PDF
20170126 big data processing
PPTX
Intro to RavenDB
PPT
NoSql Databases
Not only SQL
NoSQL
Couchbase - Yet Another Introduction
A rubyist's naive comparison of some database systems and toolkits
DynamoDB Gluecon 2012
Gluecon 2012 - DynamoDB
JS App Architecture
Introduction to MongoDB
NoSQL and MapReduce
Big data vahidamiri-tabriz-13960226-datastack.ir
Azure Databricks is Easier Than You Think
MongoDB is the MashupDB
NoSQL
Fighting Against Chaotically Separated Values with Embulk
Ingesting Over Four Million Rows Per Second With QuestDB Timeseries Database ...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
20170126 big data processing
Intro to RavenDB
NoSql Databases

Recently uploaded (20)

PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Cloud computing and distributed systems.
PDF
cuic standard and advanced reporting.pdf
PDF
Chapter 2 Digital Image Fundamentals.pdf
PPT
Teaching material agriculture food technology
PDF
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Telecom Fraud Prevention Guide | Hyperlink InfoSystem
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Advanced methodologies resolving dimensionality complications for autism neur...
Per capita expenditure prediction using model stacking based on satellite ima...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
madgavkar20181017ppt McKinsey Presentation.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Cloud computing and distributed systems.
cuic standard and advanced reporting.pdf
Chapter 2 Digital Image Fundamentals.pdf
Teaching material agriculture food technology
HCSP-Presales-Campus Network Planning and Design V1.0 Training Material-Witho...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Telecom Fraud Prevention Guide | Hyperlink InfoSystem
AI And Its Effect On The Evolving IT Sector In Australia - Elevate

NoSQL: Why, When, and How

Editor's Notes