cassandra summit 2014: astyanax — to be or not to be

Post on 05-Dec-2014

261 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presenter: Puneet Oberai, Senior Software Engineer at Netflix In this session, we'll cover a quick introduction to the Astyanax Java client driver, powerful features, comparison to Java Driver and what to do with CQL3.

TRANSCRIPT

Astyanax To be or not to be

Puneet Oberai, Netflix

#CassandraSummit2014

Puneet Oberai Senior Software Engineer - Netflix, Inc Previously at Amazon Web Services (AWS) @opuneet

https://github.com/Netflix/astyanax

Image - http://www.artandarchitecture.org.uk/images/conway/3f324eee.html

Top Level Features

•  Load balancing

•  Connection pooling - resilient with failover and retries

•  Pluggable host discovery mechanism

•  Metrics (there are a lot!)

•  Highly configurable and pluggable

Fluent Query Syntax

Mutation Batch

Fluent Query Syntax Row Query with column slice (reverse sorting)

Recipes

•  All Rows Reader

•  Distributed Row Lock

•  Chunked Object Store

How Does Netflix Use Astyanax

Java Driver Release

•  Async interface!

•  Cursor support

•  Collections

•  Flexible retry policies

•  And everything else in CQL ..

BUT WHAT ABOUT THRIFT !!?? ���I’M STILL USING IT. ������

No worries, Astyanax still works over thrift J

New features only available via CQL / native protocol

Is this a carrot or a stick?

900+ devs need to refactor their code

Bear and stick is not a good idea!

No wait! Astyanax has a new adaptor

•  Built on top of Java Driver

•  All your queries are now async

•  Astyanax APIs (structured queries) are supported

•  All Astyanax recipes work

Much better adoption model!

Astyanax Can Use Both Drivers

What About Performance?

If you use prepared statements, you’re good!

More findings on our blog

http://techblog.netflix.com/2013/12/astyanax-update.html

Prepared Statements

•  There is no magic here •  You “prepare”

•  Then you re-use

For generic DAOs this means - prepared statement management.

Astyanax Value Add

Structured Queries Naturally Have Some Query Signature

keyspace.prepareQuery( myCF )!

.withRow( myRowKey )!

.withColumnSlice( start, end)!

.execute();!

Translates to select * from ks.myCF where key=? and column1 >=? and column1 <=?;

But wait! Something is not right with the new model

•  Are columns really columns?

•  Are rows still rows?

•  Are columns really rows?

Simple Schema key validator – int col comparator – int default validator – utf8

Rows Are Now Transposed

Astyanax preserves original semantics

•  Astyanax maintains backwards compatibility with the api

•  Hence rows are still rows and columns are still columns

Takeaway for Astyanax

Apps really care about high level abstractions

•  Time series

•  Sliding window •  Objects with attribute based indexing

So What Should I Use?

•  Astyanax presents a higher level abstraction •  Astyanax has recipes

•  Astyanax is good for structured queries

•  If all you want is CQL3, then use Java Driver

http://github.com/Netflix/astyanax

https://jobs.netflix.com

Questions

top related