SlideShare una empresa de Scribd logo
1 de 148
Descargar para leer sin conexión
CouchDB
     relax
CouchDB
                           relax
                              Sander van de Graaf
                                  @svdgraaf
Focus -> practical usage examples
http://joind.in/talk/view/2495




second talk ever, please provide feedback
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
CouchDB
     relax
NOSQL
IT’S A MOVEMENT
Movement, definitions vary
1998




Back in the day...
Lame movie 1
Another one
And then some more...
XML was introduced
Some game was published
MC Donald’s Happy Meal
Carlo Strozzi



Released NOSQL open source DB
NOSQL == Not Only SQL
“[The NoSQL movement] departs from the relational
model altogether, it should therefore have been called
more appropriately ‘NoREL’, or something to that
effect.”
                                         - Carlo Strozzi
CouchDB
     relax
Ubuntu One, contacts sync
NUTSHELL
SPEED
Speed Not diskpace (see cleanup)
APPEND ONLY
Append only storage, happy cup of coffee!
NO REPAIR NEEDED
COMPACTING
HTTP SERVER
caching, loadbalancing, without extra
costs :D
CAP
CouchDB




 CAP
CouchDB




       EVENTUALLY CONSISTENT
CouchDB focus is on Availability + Reliability, and will be
consistent after replication.
FULL REST API
REST
• GET        • SELECT

• PUT        • UPDATE

• POST       • INSERT

• DELETE     • DELETE

• COPY       • ...
JSON
    {
        total_rows: 2,
        offset: 0,
        rows: [
            {
                id: '_design/foobar',
                key: '_design/foobar',
                value: { rev: '5-982b2fc36835715b2aae54609b5d5f1e' }
            },
            {
                id: 'f0e1fd96eb6e094f74dda8d949000a6a',
                key: 'f0e1fd96eb6e094f74dda8d949000a6a',
                value: { rev: '1-86bca407fce8234a63c90ff549b56b10' }
            },
        ]
    }




Javascript == awesome! :D
REPLICATION
Key feature, relaxed about replication
issues, and version conflicts
Welcome to Futon, I prefer a UI
http-console rocks the socks out of telnet
Berkeley
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
PHP USAGE
PHP LIBRARIES

  • PHPillow     (LGPL)

  • PHP    Object Freezer (BSD)

  • PHP    On Couch (GPL 2 / 3)

  • PHP    CouchDB Extension (PHP license)

  • SAG    for CouchDB (apache)

  • Doctrine     2 CouchDB ODM

All are quite nice, doctrine has some rough edges, I use PHP On Couch with custom patch for
Zend autoloader easyness
<?PHP

  // setup connection for couchdb
  $client = new Couchdb_Client('http://ponies.couchone.com:5984','rainbows');

  // fetch a document
  $doc = $client->getDoc('awesome_pony');

  // updating document
  $doc->newproperty = array("type","awesome");

  try
  {
        $client->storeDoc($doc);
  }
  catch (Exception $e)
  {
      echo "Document storage failed : " . $e->getMessage();
  }




PHP On Couch with small ZF autoloader fix
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
REPLICATION
DEFINITION


“Replication is the process of sharing information so
as to ensure consistency between redundant
resources, such as software or hardware components,
to improve reliability, fault-tolerance, or accessibility.”

                                                   Source: wikipedia
CouchDB
     relax
CouchDB
     relax
             CouchDB
                  relax
CouchDB
CouchDB
                            relax




          CouchDB
               relax
                       CouchDB
                            relax




                       CouchDB
                            relax




Mysql can do this
CouchDB
                relax
                         CouchDB
                              relax




Master, Master replication
CouchDB
                  relax




CouchDB
     relax




             CouchDB
                  relax
US   NL


                             CouchDB
                                  relax




           CouchDB
                relax
                        BE


                             CouchDB
                                  relax




Not only locally
P2P WEB
“World Domination”
CLUSTERING
  “The fun stuff ”
Couchdb doesn’t support partitioning (sharding) itself, couchdb -> http based -> lots of
possibilities
loadbalancer




                                                                   ...n
              CouchDB
                   relax
                                       CouchDB
                                            relax


The basics are all the same: easy => couchdb instances 1..n => loadbalancer
CHALLENGES

• Large   amounts of data

• Large   views (with big/long map/reduce queries)

• LOTS    of traffic

• Location   based partitions

• For   fun and profit
MAP/REDUCE
INPUT
           IP                 Bytes
     212.122.174.13           18271
     212.122.174.13           191726
     212.122.174.13            198
      74.119.8.111            91272
      74.119.8.111             8371
     212.122.174.13             43



Map/Reduce example
MAPPER => REDUCER
      IP         Bytes
                 18271
                 191726
212.122.174.13
                  198
                   43
                 91272
 74.119.8.111
                  8371
AFTER REDUCE
      IP          Bytes



212.122.174.13   210238




 74.119.8.111    99643
PARTITION INPUT
 Partition           IP         Bytes
    0          212.122.174.13   18271
    0          212.122.174.13   191726
    0          212.122.174.13    198
    1           74.119.8.111    91272
    1           74.119.8.111     8371
    0          212.122.174.13     43



Map/Reduce example
MAPPER => REDUCER
   Partition                         IP                         Bytes
                                                                18271
                                                                191726
        0                   212.122.174.13
                                                                 198
                                                                  43
                                                                91272
        1                     74.119.8.111
                                                                 8371


If data is big enough, you could even need a re-re-re-reducer
AFTER REDUCE
      IP          Bytes



212.122.174.13   210238




 74.119.8.111    99643
CLUSTERING OPTIONS


• CouchDB    Lounge

• Pillow

• BigCouch
LOUNGE

• partitioning/clustering

• Nginx    module

• meebo.com

• ‘easy’

• http://tilgovi.github.com/couchdb-lounge/
LOUNGE


 • dumb_proxy         => proxy for simple PUT/GET’s

 • smart_proxy        => proxy for map/reduce over shards

 • replicator    => updates all copies, redudantly




it can make sure that there are N copies of a document at every moment
nginx
                             dumb_proxy




                                           ...n
            CouchDB
                 relax
                              CouchDB
                                   relax


dumb_proxy == ONLY GET/PUT
nginx
                                   smart_proxy




                                                                  ...n
              CouchDB
                   relax
                                      CouchDB
                                           relax


smart_proxy takes care of the map/reduce and re-reducers over multiple nodes
Bonus:

                    other nginx modules work too




mod_cache, mod_expire, etc.
PILLOW

• Erlang   based

• router/rereducer   (map/reduce over multiple
 systems)

• In   development (but promising!)

• https://github.com/khellan/Pillow
BIGCOUCH

• Fork

• 100%   api compatible

• Open   Source/Commercial

• https://cloudant.com/#!/solutions/bigcouch
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
BACKEND USAGE
PROXIED




                                       CouchDB
                                            relax
proxied via middleware, or via mod_proxy or similiar
DIRECT




                                                           CouchDB
                                                                relax




or direct, because http based, content is directly available in javascript
NOSQL && SQL HYBRID

• onSave, onCommit      hooks available in every major framework

• onSave -> make a JSON representation of your object, and
 PUT it to couchdb (#protip: only ‘public’ data)

• sql   db is leading, you don’t care about versioning in couchdb

• youcan use your data directly from couchdb within your
 frontend javascript
MODEL
<?php
class Pony extends Application_models
{
    public function toArray()
    {
        $data = $this->_getData();
        unset($data['created_on']);
        unset($data['created_by']);
        unset($data['access_level']);
        unset($data['private_data']);

        $data['tags'] = $this->getTags();
        $data['categories'] = $this->getCategories();
        $data['rainbows'] = 'double';

        return $data;
    }
}
AFTER_SAVE

<?php
class article_module extends admin_module
{
    public function after_save()
    {
        parent::after_save();
        $data = $this->toJson();

        $res = CouchDB::put($data);
        $this->_id = $res->_id;
        $this->_rev = $res->_rev;
    }
}
PROXY



            RewriteEngine On
            RewriteRule /data/(.*)      http://127.0.0.1:5984/db/$1 [P,L]




Proxy the calls (work around sandbox/other domain error), or use jsonp
JAVASCRIPT
<script type="text/javascript">
$.getJSON("/db/ponies/_design/ponies/_view/best-ponies?include_docs=true",
    function(res){
        for(i in res.rows)
        {
            doc = res.rows[i].doc;
            // do stuff
        }
    }
);
</script>
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
COUCHAPP




CouchDB has it’s own structure for “distributed, scalable web applications” called couchapps
“Distributed, scalable, web
   applications you say?
omgwtfbbq!?!1!!!11!1!eleven”
_attachments




the magic is in _attachments
CouchDB
                                    relax




                CouchDB
                     relax




                               CouchDB
                                    relax




distribution via replication
INSTALLATION




                         Couchapp 0.7.0
installation is easy
$ couchapp init




init a project
LAYOUT




creates a default folder
$ couchapp push http://ponies.couchone.com:5984/rainbows
https://github.com/brandon-beacher/couchapp-tmbundle


couchapp push on save -> textmate
CONTENTS

• Introduction

• PHP   Usage

• Replication/Scalability

• Backend   usage

• Couchapps

• Other   stuff
OTHER STUFF
REWRITES
_REWRITE
$ curl "http://ponies.couchone.com/rainbows/_design/ponies/_view/best-
ponies?descending=true&limit=5&key=”foobar”
such urls make us a sad panda
{
    ....
    "rewrites": [
    {
        "from": "/best-5-ponies",
        "to": "ponies/_view/best-ponies",
        "method": "GET",
        "query": {
            "descending": true,
            "limit": 5,
            "key": "foobar"
         }
    }
    ]
}
$ curl "http://ponies.couchone.com/rainbows/_design/ponies/_view/best-
 ponies?descending=true&limit=5&key=”foobar”




rewrite this
$ curl "http://ponies.couchone.com/rainbows/_design/ponies/_rewrite/best-5-ponies"




to this
[vhosts]
awesomeponies.com = /rainbows/_design/ponies/_rewrite
$ curl "http://ponies.couchone.com/rainbows/_design/ponies/_rewrite/best-5-ponies"




rewrite this
$ curl "http://awesomeponies.com/best-5-ponies"




to this
_CHANGES
$ curl -X GET "http://ponies.couchone.com/rainbows/_changes"
{"results":[

],
"last_seq":0}
curl -X PUT http://ponies.couchone.come/rainbows/foobar -d '{"type":"awesome"}'
{"results":[
{"seq":1,"id":"foobar","changes":[{"rev":"1-aaa8e2a031bca334f50b48b6682fb486"}]}
],
"last_seq":1}
{"results":[
{"seq":1,"id":"foobar","changes":[{"rev":"1-aaa8e2a031bca334f50b48b6682fb486"}]},
{"seq":2,"id":"foobar2","changes":[{"rev":"1-e18422e6a82d0f2157d74b5dcf457997"}]}
],
"last_seq":2}
_CHANGES OPTIONS

• ?since

• Longpolling

• Continuous
$ curl -X GET "http://ponies.couchone.com/rainbows/_changes?since=20"
curl -X GET "http://ponies.couchone.com/rainbows/_changes?feed=longpoll&since=2"




Longpolling: good for little updates, connections stays open until change, then gets closed
and you need to reconnect, lots of reconnects for lots of updates
curl -X GET "http://ponies.couchone.com/rainbows/_changes?feed=continuous&since=2"




Connections stays open, and you get updates on the fly!
FILTERS




filters can be used to filter documents from output
function(doc, req)
                           {
                               if(doc.priority == 'high')
                               {
                                   return true;
                               }
                               return false;
                           }




we only want high priority documents
curl -X GET
"http://ponies.couchone.com/rainbows/_changes?feed=continuous&filter=app/important
function(doc, req)
                        {
                            if(doc.name == req.query.name) {
                                return true;
                            }

                             return false;
                        }




you can use req for request based filters
curl -X GET
"http://ponies.couchone.com/rainbows/_changes?feed=continuous&filter=app/name&name=foobar
SHOWS
function(doc, req) {
  return {
    body: "Hello World"
  }
}
curl -X
"http://ponies.couchone.com/rainbows/_design/foobar/_show/showfunction/docid"
function(doc) {
                            return {
                                "code": 302,
                                "body": "See other",
                                "headers": {
                                        "Location": doc.target
                                }
                            };
                        }




You can also define http headers, we used this for translating public id’s into private storage
id’s. In this way, couchdb took care of all the headers and http stuff, and we could use a
regular nginx proxy module
LUCENE
[external]
fti=/path/to/python /path/to/couchdb-lucene/tools/couchdb-external-hook.py

[httpd_db_handlers]
_fti = {couch_httpd_external, handle_external_req, <<"fti">>}
function(doc) {
    var ret=new Document();
    ret.add(doc.message);
    ret.add(new Date(doc.datetime));
    return ret;
}
curl -X GET
"http://ponies.couchone.com/rainbows/_fti/_design/unicorns/by-query?q=foobar"
GEOCOUCH
https://github.com/vmx/couchdb
See Dericks talk yesterday
GEOCOUCH

    • Supports     bbox

    • fork

    • outputs    via lists, georss possible

    • directly   useable by google maps

    • can    read GIS data

    • combined      with _changes makes interesting usecase

-   bbox => all items withing a certain bounding box, polygon is in the works
-   currently a fork of couchdb, in the works as external module
-   output can be setup seperately
-   google maps can use georss
-   GIS: Geographic Information System (used worldwide?)
SPATIAL INDEX
                                       in spatial/points.js


function(doc)
{
    if (doc.geo && doc.geo.latitude != '' && doc.geo.longitude != '')
    {
        emit(
            {
                type: "Point",
                coordinates: [parseFloat(doc.geo.latitude), parseFloat(doc.geo.longitude)]
            },
            [doc._id, doc]
        );
    }
}
Worldwide search
http://ponies.couchone.com/rainbows/_design/unicorns/_spatial/points?bbox=0,0,180,90




    {"update_seq":3,"rows":[
        {
            "id":"augsburg",
            "bbox":[10.898333,48.371667,10.898333,48.371667],
            "value":["augsburg",[10.898333,48.371667]]
        }
    ]}
GEORSS && GOOGLE MAPS

if (GBrowserIsCompatible())
{
    map = new GMap2(document.getElementById('map'));
    var geoXML = new GGeoXml('http://ponies.couchone.com/rainbows/url-to-georss-view');
    map.addOverlay(geoXML);
}
curl -X GET "http://ponies.couchone.com/rainbows/_design/alarmeringen/_spatial/points?
bbox=51.711369,4.218407,52.136520,4.745740";
Q?
http://www.couchone.com/get
http://joind.in/talk/view/2495




second talk ever, please provide feedback

Más contenido relacionado

La actualidad más candente

Single node hadoop cluster installation
Single node hadoop cluster installation Single node hadoop cluster installation
Single node hadoop cluster installation Mahantesh Angadi
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasaggarrett honeycutt
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker, Inc.
 
GOTO 2011 preso: 3x Hadoop
GOTO 2011 preso: 3x HadoopGOTO 2011 preso: 3x Hadoop
GOTO 2011 preso: 3x Hadoopfvanvollenhoven
 
Provisioning Bare Metal with OpenStack
Provisioning Bare Metal with OpenStackProvisioning Bare Metal with OpenStack
Provisioning Bare Metal with OpenStackDevananda Van Der Veen
 
General Bare-metal Provisioning Framework.pdf
General Bare-metal Provisioning Framework.pdfGeneral Bare-metal Provisioning Framework.pdf
General Bare-metal Provisioning Framework.pdfOpenStack Foundation
 
サンプルから見るMap reduceコード
サンプルから見るMap reduceコードサンプルから見るMap reduceコード
サンプルから見るMap reduceコードShinpei Ohtani
 
Apache Hive micro guide - ConfusedCoders
Apache Hive micro guide - ConfusedCodersApache Hive micro guide - ConfusedCoders
Apache Hive micro guide - ConfusedCodersYash Sharma
 
Thinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotThinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotMark Broadbent
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Devananda Van Der Veen
 
Big Data @ Orange - Dev Day 2013 - part 2
Big Data @ Orange - Dev Day 2013 - part 2Big Data @ Orange - Dev Day 2013 - part 2
Big Data @ Orange - Dev Day 2013 - part 2ovarene
 
Webinar - Getting Started With Ceph
Webinar - Getting Started With CephWebinar - Getting Started With Ceph
Webinar - Getting Started With CephCeph Community
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지충섭 김
 

La actualidad más candente (19)

Single node hadoop cluster installation
Single node hadoop cluster installation Single node hadoop cluster installation
Single node hadoop cluster installation
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag
 
SkinKit
SkinKitSkinKit
SkinKit
 
Ironic
IronicIronic
Ironic
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
 
Docker
DockerDocker
Docker
 
GOTO 2011 preso: 3x Hadoop
GOTO 2011 preso: 3x HadoopGOTO 2011 preso: 3x Hadoop
GOTO 2011 preso: 3x Hadoop
 
Belvedere
BelvedereBelvedere
Belvedere
 
Provisioning Bare Metal with OpenStack
Provisioning Bare Metal with OpenStackProvisioning Bare Metal with OpenStack
Provisioning Bare Metal with OpenStack
 
Zabbix
Zabbix Zabbix
Zabbix
 
General Bare-metal Provisioning Framework.pdf
General Bare-metal Provisioning Framework.pdfGeneral Bare-metal Provisioning Framework.pdf
General Bare-metal Provisioning Framework.pdf
 
サンプルから見るMap reduceコード
サンプルから見るMap reduceコードサンプルから見るMap reduceコード
サンプルから見るMap reduceコード
 
Apache Hive micro guide - ConfusedCoders
Apache Hive micro guide - ConfusedCodersApache Hive micro guide - ConfusedCoders
Apache Hive micro guide - ConfusedCoders
 
Thinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lotThinking outside the box, learning a little about a lot
Thinking outside the box, learning a little about a lot
 
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
 
Big Data @ Orange - Dev Day 2013 - part 2
Big Data @ Orange - Dev Day 2013 - part 2Big Data @ Orange - Dev Day 2013 - part 2
Big Data @ Orange - Dev Day 2013 - part 2
 
Shark - Lab Assignment
Shark - Lab AssignmentShark - Lab Assignment
Shark - Lab Assignment
 
Webinar - Getting Started With Ceph
Webinar - Getting Started With CephWebinar - Getting Started With Ceph
Webinar - Getting Started With Ceph
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지
 

Similar a Advanced CouchDB

Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with dockerGiacomo Bagnoli
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesJérôme Petazzoni
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudSamuel Chow
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementNicola Paolucci
 
Docker - Lightweight Virtualization
Docker - Lightweight VirtualizationDocker - Lightweight Virtualization
Docker - Lightweight VirtualizationMehdi Hasan
 
Shipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerShipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerJérôme Petazzoni
 
Big Data in Container; Hadoop Spark in Docker and Mesos
Big Data in Container; Hadoop Spark in Docker and MesosBig Data in Container; Hadoop Spark in Docker and Mesos
Big Data in Container; Hadoop Spark in Docker and MesosHeiko Loewe
 
Getting started with Docker sandboxes for MariaDB
Getting started with Docker sandboxes for MariaDBGetting started with Docker sandboxes for MariaDB
Getting started with Docker sandboxes for MariaDBMariaDB plc
 
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)Puppet
 
Above the cloud: Big Data and BI
Above the cloud: Big Data and BIAbove the cloud: Big Data and BI
Above the cloud: Big Data and BIDenny Lee
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707Clarence Ho
 
Docker for the Rubyist
Docker for the RubyistDocker for the Rubyist
Docker for the RubyistBrian DeHamer
 
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"OpenStack Korea Community
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Partner S.A.
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xrkr10
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedDataStax Academy
 
Docker in Action
Docker in ActionDocker in Action
Docker in ActionAlper Kanat
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerBardia Heydari
 

Similar a Advanced CouchDB (20)

Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los Angeles
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google Cloud
 
The age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster managementThe age of orchestration: from Docker basics to cluster management
The age of orchestration: from Docker basics to cluster management
 
Docker - Lightweight Virtualization
Docker - Lightweight VirtualizationDocker - Lightweight Virtualization
Docker - Lightweight Virtualization
 
Sheep it
Sheep itSheep it
Sheep it
 
Shipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with DockerShipping Applications to Production in Containers with Docker
Shipping Applications to Production in Containers with Docker
 
Big Data in Container; Hadoop Spark in Docker and Mesos
Big Data in Container; Hadoop Spark in Docker and MesosBig Data in Container; Hadoop Spark in Docker and Mesos
Big Data in Container; Hadoop Spark in Docker and Mesos
 
Getting started with Docker sandboxes for MariaDB
Getting started with Docker sandboxes for MariaDBGetting started with Docker sandboxes for MariaDB
Getting started with Docker sandboxes for MariaDB
 
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
Puppet Camp Chicago 2014: Docker and Puppet: 1+1=3 (Intermediate)
 
Above the cloud: Big Data and BI
Above the cloud: Big Data and BIAbove the cloud: Big Data and BI
Above the cloud: Big Data and BI
 
Docker HK Meetup - 201707
Docker HK Meetup - 201707Docker HK Meetup - 201707
Docker HK Meetup - 201707
 
Docker for the Rubyist
Docker for the RubyistDocker for the Rubyist
Docker for the Rubyist
 
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12x
 
Docker
DockerDocker
Docker
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
 
Docker in Action
Docker in ActionDocker in Action
Docker in Action
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 

Último

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Último (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Advanced CouchDB