cassandra summit eu 2014 lightning talk - paging (no animation)

16
©2013 DataStax Confidential. Do not distribute without consent. Christopher Batey @chbatey I want my data out: streaming + observable + paging 1

Upload: christopher-batey

Post on 11-Jul-2015

981 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

©2013 DataStax Confidential. Do not distribute without consent.

Christopher Batey@chbatey

I want my data out: streaming + observable + paging

1

Page 2: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Who am I?•Technical Evangelist for Apache Cassandra• Founder of Stubbed Cassandra• Help out Apache Cassandra users• Previous: Senior software engineer @ BSkyB

Page 3: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Cassandra is great because…•What was once hard is now easy!•More and more features that aren’t part of

its core competency

Page 4: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Your favourite - OutOfMemory

Application CBig Query

Page 5: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Your favourite - OutOfMemory

Application CBig Query

Page 6: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Your favourite - OutOfMemory

Application CBig Query

Uh oh, OutOfMemory

Page 7: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Your favourite - OutOfMemory

Application CBig Query

Uh oh, OutOfMemory

Page 8: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Okay so 2 gb queries aren’t recommended?

Page 9: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Manual paging

WEB

Your Application

DAO

Lots of small queries

C*SuperBlocking Queue

Page 10: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Server side paging = awesome

Page 11: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Your favourite - OutOfMemory

Application CBig Query

Uh oh, OutOfMemory

Page 12: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Not so manual paging

Your Application

C*

Super awesome paging query!

Page 13: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

ResultSet + Observable = Awesomepublic Observable<CustomerEvent> getCustomerEventsObservable(String customerId) { BoundStatement boundStatement = getEventsForCustomer.bind(customerId);

ListenableFuture<ResultSet> resultSetFuture = session.executeAsync(boundStatement);

Observable<ResultSet> observable = Observable.from(resultSetFuture, Schedulers.io()); Observable<Row> rowObservable = observable.flatMapIterable(result -> result);

return rowObservable.map(row -> new CustomerEvent( row.getString("customer_id"), row.getUUID("time"), row.getString("staff_id"), row.getString("store_type"), row.getString("event_type"), row.getMap("tags", String.class, String.class))); } p

Page 14: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

ResultSet + Observable = AwesomeObservable<CustomerEvent> chbatey = customerEventDao.getCustomerEventsObservable("chbatey"); chbatey.doOnCompleted(() -> { try { outputStream.close(); } catch (IOException e) { } }); chbatey.subscribe(event -> {

try { outputStream.write(event.serialise()); } catch (IOException e) { } });

Page 15: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Manual paging

WEB

Your Application

DAO

Lots of small queries

C*SuperBlocking Queue

Page 16: Cassandra Summit EU 2014 Lightning talk - Paging (no animation)

Thanks for listening

@chbateyhttp://christopher-batey.blogspot.co.uk