13
Go-Couchbase

Go-Couchbase Golang Paris 2015/12/17

Embed Size (px)

Citation preview

Page 1: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase

Page 2: Go-Couchbase Golang Paris 2015/12/17

Bio

Edouard Buschini

SRE@Winamax

Go ~1 an

Page 3: Go-Couchbase Golang Paris 2015/12/17

CouchbaseBase de donnée NoSQL

CAP Theorem: AP

On-Memory

Multi-threaded

Réplication entre cluster (XDCR)

Page 4: Go-Couchbase Golang Paris 2015/12/17

CouchbaseRéparti les écritures sur tous les noeuds du cluster

Master-Master/Master-Slaveentre clusters (XDCR)

Page 5: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase

Simple & Thread Safe

$> go get github.com/couchbase/go-couchbase

import “github.com/couchbase/go-couchbase”

Page 6: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Connect()c, err := couchbase.Connect("http://localhost:8091/")if err != nil { log.Fatalf("Error connecting: %v", err)}

pool, err := c.GetPool("default")if err != nil { log.Fatalf("Error getting pool: %v", err)}

bucket, err := pool.GetBucket("default")if err != nil { log.Fatalf("Error getting bucket: %v", err)}

Page 7: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Set()v := make(map[string]string)v["nosql"] = "couchbase!"

exp := 0key := “RandomKey”

err := bucket.Set(key, exp, v)if err != nil { log.Fatalf(“Error setting key: %v”, err)}

Page 8: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Add()v := make(map[string]string)v["nosql"] = "couchbase!"

exp := 0key := “RandomKey”

added, err := bucket.Add(key, exp, v)if err != nil { log.Fatalf(“Error adding key: %v”, err)}

if !added { log.Println(“Key already exists!”)}

Page 9: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Get()var v interface{}key := “RandomKey”

err := bucket.Get(key, &v)if err != nil { log.Fatalf(“Error getting key: %v”, err)}

Page 10: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Update()key := “RandomKey”exp := 0

err := bucket.Update(key, exp, func(current []byte) (updated []byte, err error) { if current == nil { return nil, couchbase.UpdateCancel }

// Verify current // To safely delete : return nil, nil return []byte(`{“nosql”:”couchbase!”}`), nil})if err != nil { log.Fatalf(“Error updating key: %v”, err)}

Page 11: Go-Couchbase Golang Paris 2015/12/17

Go-Couchbase Delete()key := “RandomKey”

err := bucket.Delete(key)if err != nil { log.Fatalf(“Error deleting key: %v”, err)}

Page 12: Go-Couchbase Golang Paris 2015/12/17

Use Case Sync-Gateway

Page 13: Go-Couchbase Golang Paris 2015/12/17

Merci !

twitter.com/@moonbocalgithub.com/tehmoon

http://www.couchbase.com/nosql-databases/downloads