TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!
-
Upload
grokking-vn -
Category
Technology
-
view
664 -
download
0
Transcript of TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!
![Page 1: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/1.jpg)
ScalabilityofNoSQL.FlexibilityofJSON.PowerofSQL.
VuNguyen
![Page 2: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/2.jpg)
WhatisCouchbase?
Couchbase Server CouchbaseMobile
• DocumentDatabase
• Key/ValueStore• DistributedCache
• EmbeddedDatabase
• Offline&Real-timesync
![Page 3: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/3.jpg)
DatainCouchbase
• Key:“DocumentID”
• Anystringupto250bytes• Uniqueinsideabucket
• Value• Anyvalueupto20MB
• Anything:JSON,XML,serializedobject,string,etc.
• Metadata
• CAS(check-and-set)• TTL(time-to-live)
• Optionalflags
![Page 4: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/4.jpg)
Architecture
• NodeACouchbase instance.
![Page 5: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/5.jpg)
Architecture
• NodeACouchbase instance.
• ClusterAscalable,networkedsetofnodes.
![Page 6: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/6.jpg)
Architecture
• NodeACouchbase instance.
• ClusterAscalable,networkedsetofnodes.
• BucketAlogicalcollectionofdocumentswithuniquekeys.
Bucketsareevenlydistributedacrossacluster.
[key1:value]
[key2:value]
[key3:value]
[key4:value]
[key5:value]
[key6:value]
![Page 7: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/7.jpg)
Architecture
• NodeACouchbase instance
• ClusterAscalable,networkedsetofnodes
• BucketAlogicalcollectionofdocumentswithuniquekeys.
Bucketsareevenlydistributedacrossacluster.
• Document
Akey/valuepairwithinabucket.Keysareunique
withinabucket.
[key1:value]
[key2:value]
[key1:value]
[key2:value]
[key3:value]
[key4:value]
[key3:value]
[key4:value]
[key5:value]
[key6:value]
[key5:value]
[key6:value]
![Page 8: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/8.jpg)
Howtoaccessdata?
1. Read/writedocumentsbytheirkeys
• Extremelyfastduetocache
2. MapReduceviews
• Distributedsecondaryindexes,builtusingmap-reduce
3. N1QL(“nickel”)query
• SQLsupersetforindexingandqueryingJSONstructure4. Fulltextsearch
• Couchbase FTS
![Page 9: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/9.jpg)
Single-NodeArchitecture
ClusterManager
DataService
IndexService
QueryService
ManagedCache
Storage
Couchbase Servernodesareidentical.
Twocorecomponents
- ClusterManager
- NodeManagers
Threeindependentservices
- DataService
- IndexService
- QueryService
![Page 10: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/10.jpg)
ClusterArchitecture
ClusterManager
DataService
IndexService
QueryService
ManagedCache
Storage
ClusterManager
DataService
IndexService
QueryService
ManagedCache
Storage
ClusterManager
DataService
IndexService
QueryService
ManagedCache
Storage
ClusterManager
DataService
IndexService
QueryService
ManagedCache
Storage
Cluster
![Page 11: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/11.jpg)
Howdoesaget operate?
DataService
ManagedCache
Storage
doc2 doc3
doc1 doc2 doc3 doc4
doc2 doc4
Replication
queue
Persistence
queue
Getisextremelyfast:
- Commondocs
arecached
- BinaryTCPconnection
Twoconfigs:
- Value-onlyejection
- Fullmeta-dataejection
![Page 12: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/12.jpg)
Howdoesaset operate?
DataService
ManagedCache
Storage
doc4
doc1 doc2 doc3 doc4
doc4
Replication
queue
Persistence
queue
Acknowledgetype:
- WheninRAM(default)
- Wheninstorage
- Whenreplicated
Replication
- Veryfast,RAMtoRAM
![Page 13: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/13.jpg)
WhyCouchbase serverfast?
• Getandsetareservedprimarilyfromcache
• Diskwritesareappendonly
doc1 doc2 doc3
![Page 14: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/14.jpg)
WhyCouchbase serverfast?
• Getandsetareservedprimarilyfromcache
• Diskwritesareappendonly
doc1 doc2 doc3 doc1
![Page 15: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/15.jpg)
WhyCouchbase serverfast?
• Getandsetareservedprimarilyfromcache
• Diskwritesareappendonly
doc1 doc2 doc3 doc1 doc3
![Page 16: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/16.jpg)
WhyCouchbase serverfast?
• Getandsetareservedprimarilyfromcache
• Diskwritesareappendonly• Datafilesareperiodicallycompressed
doc2 doc1 doc3doc1 doc3
![Page 17: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/17.jpg)
WhyCouchbase serverfast?
• Getandsetareservedprimarilyfromcache
• Diskwritesareappendonly• Datafilesareperiodicallycompressed
doc2 doc1 doc3
![Page 18: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/18.jpg)
MapReduce
Viewsaresecondaryindexes
• WritteninJavaScript
• ExecutedbyV8engine
function (doc, meta) {if (doc.age > 30) {
emit(doc.department, null)}
}
![Page 19: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/19.jpg)
N1QLQueries
SQLforJSONdata
• SELECT, INSERT, UPDATE, DELETE
• JOIN, WHERE, GROUP BY
• CREATE INDEX, DROP INDEX
• MIN, MAX, COUNT
• UNION, INTERSECT, EXCEPT, ...
SELECT count(*), city FROM customer
WHERE customer.type = “vip”
GROUP BY customer.city ORDER BY customer.city
LIMIT 5 OFFSET 5
![Page 20: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/20.jpg)
Bucket&vBucket
• Eachbucketisdividedinto1024vBucket.• vBuckets aredistributedevenlyacrossallnodesinthecluster.
• Asnodesjoin/leavecluster,vBuckets adjustautomatically.
Active
vBuckets
Replicated
vBuckets
Active
vBuckets
Replicated
vBuckets
Active
vBuckets
Replicated
vBuckets
![Page 21: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/21.jpg)
CouchbaseMobile
• EmbeddeddatabaseforiOS&Android
• UnofficialJavaScriptdatabase(browser&NodeJs)
• Real-timesynchronization
• CouchDB replicationprotocol
![Page 22: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/22.jpg)
Architecture
![Page 23: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/23.jpg)
CouchDB protocol
GET/source/_changes?feed=normal&style=all_docs&heartbeat=10000{
"results":[{"seq":14,"id":"f957f41e","changes":[{"rev":"3-46a3"}],"deleted":true},{"seq":29,"id":"ddf339dd","changes":[{"rev":"10-304b"}],
],"last_req": 78,
}
GET/source/_changes?feed=continuous&style=all_docs&heartbeat=10000
{"seq":14,"id":"f957f41e","changes":[{"rev":"3-46a3"}],"deleted":true}{"seq":29,"id":"ddf339dd","changes":[{"rev":"10-304b"}]
![Page 24: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/24.jpg)
SyncFunctionfunction (doc, oldDoc) {
if (doc._deleted) {requireRole("role:editor");requireUser(oldDoc.writers);return;
}
if (!doc.title || !doc.creator || !doc.channels || !doc.writers) {throw({forbidden: "Missing required properties"});
} else if (doc.writers.length == 0) {throw({forbidden: "No writers"});
}if (oldDoc == null) {
requireRole("role:editor");requireUser(doc.creator)
} else {requireUser(oldDoc.writers);if (doc.creator != oldDoc.creator) {
throw({forbidden: "Can't change creator"});}
}
channel(doc.channels);}
![Page 25: TechTalk #14 Grokking: Couchbase - NoSQL + Memcached + Real-time + Offline!](https://reader031.fdocument.pub/reader031/viewer/2022020314/588a486d1a28abd3088b5761/html5/thumbnails/25.jpg)
ScalabilityofNoSQL.FlexibilityofJSON.PowerofSQL.
VuNguyen