Lab: Replication (30 minutes)
Bradley Holt, Developer Advocate
Thursday, February 9, 2017
CouchDB Developer Day
@BradleyHolt
Peer-to-Peer Replication
@BradleyHolt
Cloudant SyncCouchDB PouchDB
CouchDB Replication Protocol
CouchDB
http-console
$ npm install http-console -g
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
@BradleyHolthttps://github.com/cloudhead/http-console
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolthttps://github.com/cloudhead/http-console
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json
@BradleyHolt
Connecting to CouchDB 2.0
$ http-console root:passw0rd@127.0.0.1:5984 --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json
@BradleyHolt
Connecting to IBM Cloudant
$ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to bradley-holt.cloudant.com on port 443.
@BradleyHolt
Replication
/>
@BradleyHolt
Replication
/> POST /_replicate
@BradleyHolt
Replication
/> POST /_replicate
...
@BradleyHolt
Replication
/> POST /_replicate
... { "create_target": true, "source": "https://bradley-holt.cloudant.com/kittens", "target": "kittens" }
@BradleyHolt
Replication
/> POST /_replicate
... { "create_target": true, "source": "https://bradley-holt.cloudant.com/kittens", "target": "kittens" }
HTTP/1.1 200 OK
Content-Type: application/json
{
ok: true,
session_id: '9f7bd286a0001ece5bf0bf65dd83c5ab',
source_last_seq: '5-
g1AAAAFDeJzLYWBgYMlgTmGQT0lKzi9KdUhJMtVLykxPyilN1UvOyS9NScwr0ctLLckBKmRKZEiy____f1
YiA6oWQ9xakhyAZFI9SFcGcyJzLpDHbplmZmxkaULYBKIdlscCJBkagBTQov2kuA-
i8wBEJ9iNTGA3mhoampmnGBA2JQsA1LtoyA',
…
}
@BradleyHolt
Try It On Your Own
1. Create database test_1
2. Create database test_2
3. Set up continuous replication from the test_1 database to the test_2 database
4. Create a document in the test_1 database
5. Confirm that the document has been replicated to the test_2 database
6. Delete the test_1 and the test_2 databases
@BradleyHolt
Lab: Replication
CouchDB Developer Day
@BradleyHolt

CouchDB Day NYC 2017: Replication

  • 1.
    Lab: Replication (30minutes) Bradley Holt, Developer Advocate Thursday, February 9, 2017 CouchDB Developer Day @BradleyHolt
  • 2.
    Peer-to-Peer Replication @BradleyHolt Cloudant SyncCouchDBPouchDB CouchDB Replication Protocol CouchDB
  • 3.
    http-console $ npm installhttp-console -g @BradleyHolthttps://github.com/cloudhead/http-console
  • 4.
    http-console $ npm installhttp-console -g $ http-console 127.0.0.1:5984 @BradleyHolthttps://github.com/cloudhead/http-console
  • 5.
    http-console $ npm installhttp-console -g $ http-console 127.0.0.1:5984 > http-console 0.6.3 > Welcome, enter .help if you're lost. > Connecting to 127.0.0.1 on port 5984. @BradleyHolthttps://github.com/cloudhead/http-console
  • 6.
    Connecting to CouchDB2.0 $ http-console root:passw0rd@127.0.0.1:5984 --json @BradleyHolt
  • 7.
    Connecting to CouchDB2.0 $ http-console root:passw0rd@127.0.0.1:5984 --json > http-console 0.6.3 > Welcome, enter .help if you're lost. > Connecting to 127.0.0.1 on port 5984. @BradleyHolt
  • 8.
    Connecting to IBMCloudant $ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json @BradleyHolt
  • 9.
    Connecting to IBMCloudant $ http-console https://bradley-holt:passw0rd@bradley-holt.cloudant.com --json > http-console 0.6.3 > Welcome, enter .help if you're lost. > Connecting to bradley-holt.cloudant.com on port 443. @BradleyHolt
  • 10.
  • 11.
  • 12.
  • 13.
    Replication /> POST /_replicate ...{ "create_target": true, "source": "https://bradley-holt.cloudant.com/kittens", "target": "kittens" } @BradleyHolt
  • 14.
    Replication /> POST /_replicate ...{ "create_target": true, "source": "https://bradley-holt.cloudant.com/kittens", "target": "kittens" } HTTP/1.1 200 OK Content-Type: application/json { ok: true, session_id: '9f7bd286a0001ece5bf0bf65dd83c5ab', source_last_seq: '5- g1AAAAFDeJzLYWBgYMlgTmGQT0lKzi9KdUhJMtVLykxPyilN1UvOyS9NScwr0ctLLckBKmRKZEiy____f1 YiA6oWQ9xakhyAZFI9SFcGcyJzLpDHbplmZmxkaULYBKIdlscCJBkagBTQov2kuA- i8wBEJ9iNTGA3mhoampmnGBA2JQsA1LtoyA', … } @BradleyHolt
  • 16.
    Try It OnYour Own 1. Create database test_1 2. Create database test_2 3. Set up continuous replication from the test_1 database to the test_2 database 4. Create a document in the test_1 database 5. Confirm that the document has been replicated to the test_2 database 6. Delete the test_1 and the test_2 databases @BradleyHolt
  • 17.

Editor's Notes

  • #7 HTTP Basic authentication is a simple way to authenticate with an HTTP server Other approaches, such as cookies and OAuth, are often used as well