opening keynote: nosql nolimits: couchbase connect 2015

29
NoSQL NoLimits Ravi Mayuram, SVP Products & Engineering

Upload: couchbase

Post on 26-Jul-2015

455 views

Category:

Technology


1 download

TRANSCRIPT

NoSQL NoLimits

Ravi Mayuram, SVP Products & Engineering

©2015 Couchbase Inc. 2

THE DIGITAL ECONOMYIS BUILT ON WEB, MOBILE, & IOT APPS

©2015 Couchbase Inc. 3

ENTER NoSQLNEW APPLICATIONS DEMAND A NEW DATABASE

©2015 Couchbase Inc. 4

COUCHBASE SERVERTHE NoSQL PERFORMANCE LEADER

©2015 Couchbase Inc.

SCALABILITY

PROGRAMMABILITY

Couchbase Server 3.0

NoSQL LANDSCAPE

Couchbase Server 4.0

©2015 Couchbase Inc.

N1QLN1QL= JSON + SQL

INTRODUCING N1QLFLEXIBLE DATA MODEL AND RICH QUERY

©2015 Couchbase Inc.

FLEXIBLE DATA MODELRICH APPLICATION AND FLEXIBLE DATA MODEL

©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. 10

OPEN COUCHBASE TO THE SQL ECO-SYSTEMEASILY ACCESS DATA IN COUCHBASE

©2015 Couchbase Inc. 11

HOW DO YOU MAKE APPS RESPONSIVE

SECONDARY INDEX

PERFORMANCE &

SCALABILITY

©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. 14

AWESOME STORAGE IS NOT ENOUGHIT IS A MATTER OF SCALE

©2015 Couchbase Inc.

ISOLATE DATABASE WORKLOADS

INDEPENTLY ASSIGN HARDWARE TO WORKLOAD

SCALE UP AND SCALE OUT

MULTI-DIMENSIONAL SCALING

©2015 Couchbase Inc.

DEMO

©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. 18

WHAT ARE WE BUILDING?

©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

NEXT GENERATION DATABASEFOR THE DIGITAL ECONOMY

NEXT GENERATION DATABASEFOR THE DIGITAL ECONOMY

TOGETHER!

Thank you.