SlideShare uma empresa Scribd logo
1 de 148
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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 : 설치부터 컨테이너 배포까지충섭 김
 

Mais procurados (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 : 설치부터 컨테이너 배포까지
 

Semelhante 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
 

Semelhante 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

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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, ...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Advanced CouchDB