Go-Couchbase
Bio
Edouard Buschini
SRE@Winamax
Go ~1 an
CouchbaseBase de donnée NoSQL
CAP Theorem: AP
On-Memory
Multi-threaded
Réplication entre cluster (XDCR)
CouchbaseRéparti les écritures sur tous les noeuds du cluster
Master-Master/Master-Slaveentre clusters (XDCR)
Go-Couchbase
Simple & Thread Safe
$> go get github.com/couchbase/go-couchbase
import “github.com/couchbase/go-couchbase”
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)}
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)}
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!”)}
Go-Couchbase Get()var v interface{}key := “RandomKey”
err := bucket.Get(key, &v)if err != nil { log.Fatalf(“Error getting key: %v”, err)}
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)}
Go-Couchbase Delete()key := “RandomKey”
err := bucket.Delete(key)if err != nil { log.Fatalf(“Error deleting key: %v”, err)}
Use Case Sync-Gateway
Merci !
twitter.com/@moonbocalgithub.com/tehmoon
http://www.couchbase.com/nosql-databases/downloads