opening keynote: nosql nolimits: couchbase connect 2015
TRANSCRIPT
©2015 Couchbase Inc.
SCALABILITY
PROGRAMMABILITY
Couchbase Server 3.0
NoSQL LANDSCAPE
Couchbase Server 4.0
©2015 Couchbase Inc.
N1QL EXTENDS SQLSQL IS POWERFUL
WHERE
Author = ‘Twain’
route.from = ‘LAX’ Cost BETWEEN 100 AND 500
UNNEST
SELECT
>=JOIN
©2015 Couchbase Inc. 9
KEEP IT EASY FOR DEVELOPERSWRITE APPLICATION LOGIC
Code in the language you love – Using the framework you love
©2015 Couchbase Inc. 12
OUR ANSWER TO PERFORMANCE PROBLEM:FORESTDB
B+ TREE FORESTDB
K1 P1 … … Kd Pd
K1 V1 K2 V2 … … Kf Vf
Kj Pj … … Kl Pl
K1 P1 … … Kj Pj
K1 P1 … … Kf Pf Kj Pj … … Kn Pn
Kj Vj Kk Vk … … Kn Vn
©2015 Couchbase Inc. 13
FORESTDB PERFORMANCE
1 2 4 8 160
5000
10000
15000
20000
25000
Mixed Workloads (R:W = 8:2)
ForestDB WT B-tree WT LSM
# reader threads
Opera
tions
per
seco
nd
2x ~ 8x
FASTER
©2015 Couchbase Inc.
ISOLATE DATABASE WORKLOADS
INDEPENTLY ASSIGN HARDWARE TO WORKLOAD
SCALE UP AND SCALE OUT
MULTI-DIMENSIONAL SCALING
©2015 Couchbase Inc.
LOGIN TO APP / USER CREATION
Travel Application:
Available today at: couchbase.com/beta
Uses Couchbase 4.0 and N1QL
Built in Node.js and Angular
TRY IT NOW!
©2015 Couchbase Inc. 19
WHAT ARE WE BUILDING?
airline_24 { "id": "24", "type": "airline", "iata": "AA", "callsign": "American Airlines", ]}
route_5966 { "id": "5966", "type": "route", "airlineid": "airline_24", "from": ”LAX", "to": ”SFO", "stops": "0", "schedule": [ …
]}
©2015 Couchbase Inc. 20
COMBINE ROUTE WITH AIRLINE
airline_24 { "id": "24", "type": "airline", "iata": "AA", "callsign": "American Airlines", ]}
route_5966 { "id": "5966", "type": "route", "airlineid": "airline_24", "from": ”LAX", "to": ”SFO", "stops": "0", "schedule": [ …
]}
1. Read route_5966 document from Couchbase
2. Parse JSON3. Pull out “airlineid” field4. Read airline_24 document from Couchbase
5. Parse JSON6. Pull out “callsign”7. Display airline name8. Throw away 2 objects
©2015 Couchbase Inc. 21
COMBINE ROUTE WITH AIRLINE
airline_24 { "id": "24", "type": "airline", "iata": "AA", "callsign": "American Airlines", ]}
route_5966 { "id": "5966", "type": "route", "airlineid": "airline_24", "from": ”LAX", "to": ”SFO", "stops": "0", "schedule": [ …
]}
With Couchbase 4.0 and N1QL:
SELECT airline.callsign, route.from, route.to
FROM `travel-db` route
JOIN `travel-db` airline ON KEYS route.airlineid
WHERE route.from=`LAX` AND route.to=`SFO`
©2015 Couchbase Inc. 22
UNNEST
route_5966 { "id": "5966", "type": "route", "airlineid": "airline_24", "from": ”LAX", "to": ”SFO", "stops": "0", "schedule": [ {"day": 1, "utc": "06:58:00", "flight": "AA348"}, {"day": 1, "utc": "09:30:00", "flight": "AA868"}, {"day": 1, "utc": "20:47:00", "flight": "AA483"},
{"day": 1, "utc": "06:58:00", "flight": "AA348"}, {"day": 2, "utc": "09:30:00", "flight": "AA868"}, {"day": 2, "utc": "20:47:00", "flight": "AA483"},
{"day": 3, "utc": "06:58:00", "flight": "AA348"}, {"day": 3, "utc": "09:30:00", "flight": "AA868"}, {"day": 3, "utc": "20:47:00", "flight": "AA483"},
... ]}
©2015 Couchbase Inc.
RETURN FLIGHTS FOR A PARTICULAR DAY
4. Foreach in “schedule”:a. Does it match requested day?
Y/Nb. Does it match requested day?
Y/Nc. Does it match requested day?
Y/Nd. Does it match requested day?
Y/Ne. Does it match requested day?
Y/Nf. Does it match requested day?
Y/Ng. Does it match requested day?
Y/N
5. Display matching day, route and airline names
6. Throw away objects
For each requested route:
1. Read in “route” document from Couchbase:a. Instantiate objectb. Handle errorsc. Manage memory
2. Parse JSON:a. Map transcoderb. Manage versioningc. Handle missing values
3. Read in “schedule” objecta. Instantiate objectb. Handle errorsc. Manage memory
©2015 Couchbase Inc.
RETURN FLIGHTS FOR A PARTICULAR DAY
route_5966 { "id": "5966", "type": "route", "airlineid": "airline_24", "from": ”LAX", "to": ”SFO", "stops": "0", "schedule": [ {"day": 1, "utc": "06:58:00", "flight": "AA348"}, {"day": 1, "utc": "09:30:00", "flight": "AA868"}, {"day": 1, "utc": "20:47:00", "flight": "AA483"},
{"day": 1, "utc": "06:58:00", "flight": "AA348"}, {"day": 2, "utc": "09:30:00", "flight": "AA868"}, {"day": 2, "utc": "20:47:00", "flight": "AA483"},
SELECT airline.callsign, schedule.flight, schedule.utc, route.from, route.to
FROM `travel-sample` routeUNNEST route.schedule scheduleJOIN `travel-sample` airline ON KEYS route.airlineidWHERE route.from=`LAX` AND route.to=`SFO` AND schedule.day= `1`
©2015 Couchbase Inc.
N1QL MAKES IT EASIER + FASTER TO DEVELOP
MULTI-DIMENSIONAL SCALING
SAME BLAZINGLY FAST PERFORMANCE
WHAT YOU SAW
©2015 Couchbase Inc.
RAVI’S TOP CONNECT SESSIONS
INTRODUCING N1QL: GERALD SANGUDI
DEEP DIVE INTO SECONDARY INDEXING:
JOHN LIANG
NEXT GENERATION STORAGE ENGINE:
CHIYOUNG SEO
SPARK WITH COUCHBASE: MICHAEL
NITSCHINGER
INTRODUCTION TO COUCHBASE MOBILE:
WAYNE CARTER
SECURING YOUR COUCHBASE
ENVIRONMENT: DON PINTO