SlideShare a Scribd company logo
NodeJS Cassandra driver 
DuyHai DOAN, Technical Advocate 
@doanduyhai
Shameless self-promotion! 
@doanduyhai 
2 
Duy Hai DOAN 
Cassandra technical advocate 
• talks, meetups, confs 
• open-source devs (Achilles, …) 
• Cassandra technical point of contact 
duy_hai.doan@datastax.com
Agenda! 
@doanduyhai 
3 
C* quick intro 
• Cluster, Replication, Consistency, Data Model 
NodeJS Driver 
• Architecture, Streaming, API 
Live DEMO!
Cassandra history! 
@doanduyhai 
4 
NoSQL database 
• created at Facebook 
• open-sourced since 2008 
• current version = 2.1 
• column-oriented ☞ distributed table
Cassandra in 5 points! 
@doanduyhai 
5 
• Linear scalability 
• Continuous availability (≈100% up-time) 
• Multi-data centers 
• Consistent performance (99% percentile) 
• Operational simplicity
Cassandra quick intro! 
Cluster 
Replication 
Consistency
Cluster! 
@doanduyhai 
7 
Random: hash of #partition → token = hash(#p) 
Hash: ]0, 2127-1] 
Each node: 1/8 of ]0, 2127-1] 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8
Linear scalability! 
@doanduyhai 
8 
n1 
n2 
8 nodes 10 nodes 
n3 
n4 
n5 
n6 
n7 
n8 
n1 
n2 
n3 n4 
n5 
n6 
n7 
n9 n8 
n10
Failure tolerance! 
@doanduyhai 
9 
Replication Factor (RF) = 3 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3
Coordinator node! 
Incoming requests (read/write) 
Coordinator node handles the request 
Every node can be coordinator àmasterless 
@doanduyhai 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3 
coordinator 
request
Consistency! 
@doanduyhai 
11 
Tunable at runtime 
• ONE 
• QUORUM (strict majority w.r.t. RF) 
• ALL 
Apply both to read & write
Write consistency! 
Write ONE 
• write request to all replicas in // 
• wait for ONE ack before returning to 
client 
• other acks later, asynchronously 
@doanduyhai 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3 
coordinator
Write consistency! 
Write QUORUM 
• write request to all replicas in // 
• wait for QUORUM acks before 
returning to client 
• other acks later, asynchronously 
@doanduyhai 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3 
coordinator
Read consistency! 
Read ONE 
• read from one node among all replicas 
• contact the least-loaded node (stats) 
@doanduyhai 
n1 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3 
coordinator
Read consistency! 
Read QUORUM 
• read from one least-loaded node 
• AND request digest from other 
replicas to reach QUORUM 
• return most up-to-date data to client 
• repair if digest mismatch n1 
@doanduyhai 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
2 
3 
coordinator
Consistency trade-off! 
@doanduyhai 
16
CRUD Operations! 
@doanduyhai 
17 
INSERT INTO users(login, name, age) VALUES(‘jdoe’, ‘John DOE’, 33); 
UPDATE users SET age = 34 WHERE login = jdoe; 
DELETE age FROM users WHERE login = jdoe; 
SELECT age FROM users WHERE login = jdoe;
DDL! 
@doanduyhai 
18 
CREATE TABLE users ( 
login text, 
name text, 
age int, 
… 
PRIMARY KEY(login)); 
partition key (#partition)
Cassandra NodeJS Driver! 
Architecture! 
Streaming! 
API!
Connection pooling! 
@doanduyhai 
20 
n3 
n2 
n4 
Client 
Pool1 
Pool2 
Pool3 
CallBack1 
CallBack2 
CallBack3
Request Pipelining! 
@doanduyhai 
21 
Client Cassandra
Request Pipelining! 
@doanduyhai 
22 
Client Cassandra 
StreamID 
StreamID
Nodes Discovery! 
@doanduyhai 
23 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
Control Connection 
n1 Client
Round Robin Load Balancing! 
@doanduyhai 
24 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
n1 Client 
1 
2 
3 
4
DC Aware Load Balancing! 
@doanduyhai 
25 
Client1 DC1 
⤫ 
Client2 DC2
DC Aware Load Balancing! 
@doanduyhai 
26 
⤫ 
Client1 DC1 
Client2 DC2
Token Aware Load Balancing! 
@doanduyhai 
27 
n2 
n3 
n4 
n5 
n6 
n7 
n8 
1 
n1 Client 
2 
3 
⤫
Combining Load Balancing Policies! 
Token Aware 
Round Robin DC Aware Round Robin 
@doanduyhai 
28 
extends 
Load Balancing Policy 
wraps 
Default config
Automatic Failover! 
@doanduyhai 
29 
n3 
n2 
n4 
Client 
Pool1 
Pool2 
Pool3 
Request 
⤫
Other policies! 
@doanduyhai 
30 
Retry policy 
• write/read timeout 
• node unavailable 
Reconnection policy 
• constant schedule 
• exponential schedule
Where do I get the driver ?! 
@doanduyhai 
31 
$ npm install cassandra-driver
Common Usage! 
@doanduyhai 
32 
var cassandra = require('cassandra-driver'); 
var client = new cassandra.Client({contactPoints: [’192.168.0.12', ’node2'], 
keyspace: ’my_keyspace'}); 
var query = 'SELECT email, last_name FROM users WHERE login=?'; 
client.execute(query, [’jdoe'], function(err, result) { 
console.log('got user with email ' + result.rows[0].email); 
});
API! 
@doanduyhai 
33 
Insert/Update 
var query = ‘’INSERT INTO sensor_data(id,date,value) VALUES(?, ?, ?)’’; 
client.query(query, 
[‘mySensor’, ‘2014-10-15 12:00:00’, 34.5], 
{prepare: true, consistency: cassandra.types.consistencies.one}, 
function(err) { //error handling });
API! 
@doanduyhai 
34 
Select 
var query = ‘’SELECT * sensor_data WHERE id = ?’’; 
client.query(query, 
[‘mySensor’], 
{prepare: true, consistency: cassandra.types.consistencies.one}, 
function(err, result) { 
result.rows.forEach(function(row) { 
console.log(‘value = ‘ + row.value); 
}); 
});
API! 
@doanduyhai 
35 
Client creation 
new cassandra.Client( 
{ 
policies: {}, // load balancing, retry, reconnection 
queryOptions: {}, // default consistency, fetchSize 
protocolOptions: {}, // port 
pooling: {}, // #connection/host 
socketOptions: {}, //timeout 
authProvider: {}, //plain text login/password, SSL 
maxPrepared: 500});
Streaming! 
@doanduyhai 
36 
var query = ‘’SELECT * FROM sensor_data‘’; 
var stream = client.stream(query, [ ], {autoPage: true}); 
Default fetchSize = 5000
Streaming! 
@doanduyhai 
37 
stream 
.on(‘end’, function() { 
//no more data 
}) 
.on(‘readable’, function() { 
while (row = this.read()) { 
// do something with the row 
} 
}) 
.on(‘error’, function(err) { 
// process error 
});
Types! 
@doanduyhai 
38 
Cassandra Javascript 
bigint Long (dCodeIO) 
blob Buffer 
boolean Boolean 
counter Long (dCodeIO) 
Decimal Buffer 
Double Number 
Float Number 
int Number 
list Array 
map Object 
set Array 
Cassandra Javascript 
text String 
timestamp Date 
timeuuid String 
uuid String 
varchar* String 
varint* Buffer 
ascii* String
Special types! 
@doanduyhai 
39 
var cassandra = require('cassandra-driver'); 
//generate a new v4 uuid 
var id1 = cassandra.types.uuid(); 
//generate a new v1 uuid 
var id2 = cassandra.types.timeuuid(); 
//big int value 
var bigIntValue = new cassandra.types.Long.fromString("5764607523034211");
Code 
demo
! " 
! 
Q & R
Thank You 
@doanduyhai 
duy_hai.doan@datastax.com

More Related Content

KEY
A language for the Internet: Why JavaScript and Node.js is right for Internet...
PDF
[212] large scale backend service develpment
PDF
[231] the simplicity of cluster apps with circuit
PPTX
Java script at backend nodejs
PDF
Understanding the Single Thread Event Loop
PDF
Play Framework: async I/O with Java and Scala
KEY
OSCON 2011 - Node.js Tutorial
PDF
Consul - service discovery and others
A language for the Internet: Why JavaScript and Node.js is right for Internet...
[212] large scale backend service develpment
[231] the simplicity of cluster apps with circuit
Java script at backend nodejs
Understanding the Single Thread Event Loop
Play Framework: async I/O with Java and Scala
OSCON 2011 - Node.js Tutorial
Consul - service discovery and others

What's hot (20)

PPTX
Kubernetes #4 volume & stateful set
PDF
Asynchronous web apps with the Play Framework 2.0
PDF
Load Balancing Applications with NGINX in a CoreOS Cluster
PDF
How and Why Prometheus' New Storage Engine Pushes the Limits of Time Series D...
PPTX
NodeJS Concurrency
PPTX
Winter is coming? Not if ZooKeeper is there!
PPTX
Play + scala + reactive mongo
PDF
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
PDF
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
PDF
Manchester Hadoop Meetup: Cassandra Spark internals
KEY
London devops logging
PDF
Apache Camel in the belly of the Docker whale
PPTX
What I learned from FluentConf and then some
PDF
NYC Cassandra Day - Java Intro
PDF
Massively Scaled High Performance Web Services with PHP
PDF
About Node.js
ODP
Introduction to Mesos
PDF
Networking and Go: An Engineer's Journey (Strangeloop 2019)
PDF
Kubernetes internals (Kubernetes 해부하기)
PPTX
A complete guide to Node.js
Kubernetes #4 volume & stateful set
Asynchronous web apps with the Play Framework 2.0
Load Balancing Applications with NGINX in a CoreOS Cluster
How and Why Prometheus' New Storage Engine Pushes the Limits of Time Series D...
NodeJS Concurrency
Winter is coming? Not if ZooKeeper is there!
Play + scala + reactive mongo
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
Manchester Hadoop Meetup: Cassandra Spark internals
London devops logging
Apache Camel in the belly of the Docker whale
What I learned from FluentConf and then some
NYC Cassandra Day - Java Intro
Massively Scaled High Performance Web Services with PHP
About Node.js
Introduction to Mesos
Networking and Go: An Engineer's Journey (Strangeloop 2019)
Kubernetes internals (Kubernetes 해부하기)
A complete guide to Node.js
Ad

Viewers also liked (8)

PDF
NodeJS : Communication and Round Robin Way
PDF
Node.js and Cassandra
PPTX
Cassandra Java APIs Old and New – A Comparison
PPTX
Cassandra DataTables Using RESTful API
PDF
Cassandra at NoSql Matters 2012
PDF
Application Development with Apache Cassandra as a Service
PPTX
Using Cassandra with your Web Application
PDF
Developing with Cassandra
NodeJS : Communication and Round Robin Way
Node.js and Cassandra
Cassandra Java APIs Old and New – A Comparison
Cassandra DataTables Using RESTful API
Cassandra at NoSql Matters 2012
Application Development with Apache Cassandra as a Service
Using Cassandra with your Web Application
Developing with Cassandra
Ad

Similar to Cassandra NodeJS driver & NodeJS Paris (20)

PDF
Cassandra Drivers and Tools
PDF
Cassandra drivers and libraries
PDF
Cassandra for the ops dos and donts
PDF
Cassandra introduction apache con 2014 budapest
PDF
Declarative benchmarking of cassandra and it's data models
PDF
From rdbms to cassandra without a hitch
PDF
Migration Best Practices: From RDBMS to Cassandra without a Hitch
PDF
Cassandra introduction mars jug
PDF
Introduction to Cassandra & Data model
PDF
Things YouShould Be Doing When Using Cassandra Drivers
PPTX
Cassandra Tools and Distributed Administration (Jeffrey Berger, Knewton) | C*...
PDF
NOSQL in the Cloud
PDF
Secure Redis Cluster At Box: Vova Galchenko, Ravitej Sistla
PDF
Apache Zookeeper
PPTX
Apache zookeeper seminar_trinh_viet_dung_03_2016
PPTX
Introduction no sql solutions with couchbase and .net core
PDF
Getting started with Spark & Cassandra by Jon Haddad of Datastax
PDF
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
PDF
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
PDF
Highly available, scalable and secure data with Cassandra and DataStax Enterp...
Cassandra Drivers and Tools
Cassandra drivers and libraries
Cassandra for the ops dos and donts
Cassandra introduction apache con 2014 budapest
Declarative benchmarking of cassandra and it's data models
From rdbms to cassandra without a hitch
Migration Best Practices: From RDBMS to Cassandra without a Hitch
Cassandra introduction mars jug
Introduction to Cassandra & Data model
Things YouShould Be Doing When Using Cassandra Drivers
Cassandra Tools and Distributed Administration (Jeffrey Berger, Knewton) | C*...
NOSQL in the Cloud
Secure Redis Cluster At Box: Vova Galchenko, Ravitej Sistla
Apache Zookeeper
Apache zookeeper seminar_trinh_viet_dung_03_2016
Introduction no sql solutions with couchbase and .net core
Getting started with Spark & Cassandra by Jon Haddad of Datastax
Top 10 present and future innovations in the NoSQL Cassandra ecosystem (2022)
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Highly available, scalable and secure data with Cassandra and DataStax Enterp...

More from Duyhai Doan (20)

PDF
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
PDF
Le futur d'apache cassandra
PDF
Big data 101 for beginners devoxxpl
PDF
Big data 101 for beginners riga dev days
PDF
Datastax enterprise presentation
PDF
Datastax day 2016 introduction to apache cassandra
PDF
Datastax day 2016 : Cassandra data modeling basics
PDF
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
PDF
Apache cassandra in 2016
PDF
Spark zeppelin-cassandra at synchrotron
PDF
Sasi, cassandra on full text search ride
PDF
Cassandra 3 new features @ Geecon Krakow 2016
PDF
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
PDF
Apache Zeppelin @DevoxxFR 2016
PDF
Cassandra 3 new features 2016
PDF
Cassandra introduction 2016
PDF
Spark cassandra integration 2016
PDF
Spark Cassandra 2016
PDF
Cassandra introduction 2016
PDF
Apache zeppelin the missing component for the big data ecosystem
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
Le futur d'apache cassandra
Big data 101 for beginners devoxxpl
Big data 101 for beginners riga dev days
Datastax enterprise presentation
Datastax day 2016 introduction to apache cassandra
Datastax day 2016 : Cassandra data modeling basics
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Apache cassandra in 2016
Spark zeppelin-cassandra at synchrotron
Sasi, cassandra on full text search ride
Cassandra 3 new features @ Geecon Krakow 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
Cassandra 3 new features 2016
Cassandra introduction 2016
Spark cassandra integration 2016
Spark Cassandra 2016
Cassandra introduction 2016
Apache zeppelin the missing component for the big data ecosystem

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Dropbox Q2 2025 Financial Results & Investor Presentation
Digital-Transformation-Roadmap-for-Companies.pptx
Network Security Unit 5.pdf for BCA BBA.
Encapsulation_ Review paper, used for researhc scholars
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The AUB Centre for AI in Media Proposal.docx
Spectral efficient network and resource selection model in 5G networks
MYSQL Presentation for SQL database connectivity
Per capita expenditure prediction using model stacking based on satellite ima...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
NewMind AI Weekly Chronicles - August'25 Week I
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Encapsulation theory and applications.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
“AI and Expert System Decision Support & Business Intelligence Systems”

Cassandra NodeJS driver & NodeJS Paris

  • 1. NodeJS Cassandra driver DuyHai DOAN, Technical Advocate @doanduyhai
  • 2. Shameless self-promotion! @doanduyhai 2 Duy Hai DOAN Cassandra technical advocate • talks, meetups, confs • open-source devs (Achilles, …) • Cassandra technical point of contact duy_hai.doan@datastax.com
  • 3. Agenda! @doanduyhai 3 C* quick intro • Cluster, Replication, Consistency, Data Model NodeJS Driver • Architecture, Streaming, API Live DEMO!
  • 4. Cassandra history! @doanduyhai 4 NoSQL database • created at Facebook • open-sourced since 2008 • current version = 2.1 • column-oriented ☞ distributed table
  • 5. Cassandra in 5 points! @doanduyhai 5 • Linear scalability • Continuous availability (≈100% up-time) • Multi-data centers • Consistent performance (99% percentile) • Operational simplicity
  • 6. Cassandra quick intro! Cluster Replication Consistency
  • 7. Cluster! @doanduyhai 7 Random: hash of #partition → token = hash(#p) Hash: ]0, 2127-1] Each node: 1/8 of ]0, 2127-1] n1 n2 n3 n4 n5 n6 n7 n8
  • 8. Linear scalability! @doanduyhai 8 n1 n2 8 nodes 10 nodes n3 n4 n5 n6 n7 n8 n1 n2 n3 n4 n5 n6 n7 n9 n8 n10
  • 9. Failure tolerance! @doanduyhai 9 Replication Factor (RF) = 3 n1 n2 n3 n4 n5 n6 n7 n8 1 2 3
  • 10. Coordinator node! Incoming requests (read/write) Coordinator node handles the request Every node can be coordinator àmasterless @doanduyhai n1 n2 n3 n4 n5 n6 n7 n8 1 2 3 coordinator request
  • 11. Consistency! @doanduyhai 11 Tunable at runtime • ONE • QUORUM (strict majority w.r.t. RF) • ALL Apply both to read & write
  • 12. Write consistency! Write ONE • write request to all replicas in // • wait for ONE ack before returning to client • other acks later, asynchronously @doanduyhai n1 n2 n3 n4 n5 n6 n7 n8 1 2 3 coordinator
  • 13. Write consistency! Write QUORUM • write request to all replicas in // • wait for QUORUM acks before returning to client • other acks later, asynchronously @doanduyhai n1 n2 n3 n4 n5 n6 n7 n8 1 2 3 coordinator
  • 14. Read consistency! Read ONE • read from one node among all replicas • contact the least-loaded node (stats) @doanduyhai n1 n2 n3 n4 n5 n6 n7 n8 1 2 3 coordinator
  • 15. Read consistency! Read QUORUM • read from one least-loaded node • AND request digest from other replicas to reach QUORUM • return most up-to-date data to client • repair if digest mismatch n1 @doanduyhai n2 n3 n4 n5 n6 n7 n8 1 2 3 coordinator
  • 17. CRUD Operations! @doanduyhai 17 INSERT INTO users(login, name, age) VALUES(‘jdoe’, ‘John DOE’, 33); UPDATE users SET age = 34 WHERE login = jdoe; DELETE age FROM users WHERE login = jdoe; SELECT age FROM users WHERE login = jdoe;
  • 18. DDL! @doanduyhai 18 CREATE TABLE users ( login text, name text, age int, … PRIMARY KEY(login)); partition key (#partition)
  • 19. Cassandra NodeJS Driver! Architecture! Streaming! API!
  • 20. Connection pooling! @doanduyhai 20 n3 n2 n4 Client Pool1 Pool2 Pool3 CallBack1 CallBack2 CallBack3
  • 21. Request Pipelining! @doanduyhai 21 Client Cassandra
  • 22. Request Pipelining! @doanduyhai 22 Client Cassandra StreamID StreamID
  • 23. Nodes Discovery! @doanduyhai 23 n2 n3 n4 n5 n6 n7 n8 Control Connection n1 Client
  • 24. Round Robin Load Balancing! @doanduyhai 24 n2 n3 n4 n5 n6 n7 n8 n1 Client 1 2 3 4
  • 25. DC Aware Load Balancing! @doanduyhai 25 Client1 DC1 ⤫ Client2 DC2
  • 26. DC Aware Load Balancing! @doanduyhai 26 ⤫ Client1 DC1 Client2 DC2
  • 27. Token Aware Load Balancing! @doanduyhai 27 n2 n3 n4 n5 n6 n7 n8 1 n1 Client 2 3 ⤫
  • 28. Combining Load Balancing Policies! Token Aware Round Robin DC Aware Round Robin @doanduyhai 28 extends Load Balancing Policy wraps Default config
  • 29. Automatic Failover! @doanduyhai 29 n3 n2 n4 Client Pool1 Pool2 Pool3 Request ⤫
  • 30. Other policies! @doanduyhai 30 Retry policy • write/read timeout • node unavailable Reconnection policy • constant schedule • exponential schedule
  • 31. Where do I get the driver ?! @doanduyhai 31 $ npm install cassandra-driver
  • 32. Common Usage! @doanduyhai 32 var cassandra = require('cassandra-driver'); var client = new cassandra.Client({contactPoints: [’192.168.0.12', ’node2'], keyspace: ’my_keyspace'}); var query = 'SELECT email, last_name FROM users WHERE login=?'; client.execute(query, [’jdoe'], function(err, result) { console.log('got user with email ' + result.rows[0].email); });
  • 33. API! @doanduyhai 33 Insert/Update var query = ‘’INSERT INTO sensor_data(id,date,value) VALUES(?, ?, ?)’’; client.query(query, [‘mySensor’, ‘2014-10-15 12:00:00’, 34.5], {prepare: true, consistency: cassandra.types.consistencies.one}, function(err) { //error handling });
  • 34. API! @doanduyhai 34 Select var query = ‘’SELECT * sensor_data WHERE id = ?’’; client.query(query, [‘mySensor’], {prepare: true, consistency: cassandra.types.consistencies.one}, function(err, result) { result.rows.forEach(function(row) { console.log(‘value = ‘ + row.value); }); });
  • 35. API! @doanduyhai 35 Client creation new cassandra.Client( { policies: {}, // load balancing, retry, reconnection queryOptions: {}, // default consistency, fetchSize protocolOptions: {}, // port pooling: {}, // #connection/host socketOptions: {}, //timeout authProvider: {}, //plain text login/password, SSL maxPrepared: 500});
  • 36. Streaming! @doanduyhai 36 var query = ‘’SELECT * FROM sensor_data‘’; var stream = client.stream(query, [ ], {autoPage: true}); Default fetchSize = 5000
  • 37. Streaming! @doanduyhai 37 stream .on(‘end’, function() { //no more data }) .on(‘readable’, function() { while (row = this.read()) { // do something with the row } }) .on(‘error’, function(err) { // process error });
  • 38. Types! @doanduyhai 38 Cassandra Javascript bigint Long (dCodeIO) blob Buffer boolean Boolean counter Long (dCodeIO) Decimal Buffer Double Number Float Number int Number list Array map Object set Array Cassandra Javascript text String timestamp Date timeuuid String uuid String varchar* String varint* Buffer ascii* String
  • 39. Special types! @doanduyhai 39 var cassandra = require('cassandra-driver'); //generate a new v4 uuid var id1 = cassandra.types.uuid(); //generate a new v1 uuid var id2 = cassandra.types.timeuuid(); //big int value var bigIntValue = new cassandra.types.Long.fromString("5764607523034211");
  • 41. ! " ! Q & R
  • 42. Thank You @doanduyhai duy_hai.doan@datastax.com