Transcript
Page 1: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Astyanax  

Puneet  Oberai  Ne1lix,  Inc.  

Page 2: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

h8ps://github.com/Ne1lix/astyanax    

Page 3: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Useful  features  

–  Load  balancing  

–  ConnecDon  pooling  -­‐  resilient  with  failover  and  retries  

–  Integrates  with  external  host  discovery  

– Metrics  (there  are  a  lot!)  

–  Highly  configurable  and  pluggable  

Page 4: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Fluent  query  syntax  

ColumnList<Integer>    =      keyspace  

                       .readQuery(  “myCF”  )      .getRow(  “A”  )      .withColumnSlice(  new  RangeBuilder()                  .greaterThan(11)                  .lessThanEquals(18)                  .build())      .execute()      .getResult();  

Page 5: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Recipes  

•  All  Rows  Reader  

•  Distributed  Row  Lock  

•  Queue  

•  Chunked  Object  Store  

Page 6: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

How  does  Ne1lix  use  it  

Page 7: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Java  Driver  release  in  2013  

•  Async  interface!  

•  Cursor  support  

•  Batching  for  mutaDons  

•  Prepared  statements  

•  Flexible  retry  policies  

•  And  everything  else  in  CQL  ..  

Page 8: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

But  what  about  thrie    !!??  I’m  sDll  using  it.      

   

Calm  down,  thrie  is  sDll  supported    J  

Page 9: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Astyanax  can  use  both  drivers  

Page 10: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Now  the  good  stuff!  What  about  performance?    

           If  you  use  prepared  statements,  you’re  good!  

Page 11: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Reads        (about  2%)  

Page 12: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Writes  (a  bit  more  5%-­‐10%)  

Page 13: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Prepared  Statements  are  a  must  

Page 14: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Prepared  Statements  

•  There  is  no  magic  here  –  You  “prepare”  –  Then  you  re-­‐use  

Page 15: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

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 <=?;

Page 16: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Columns  v/s  Rows  

•  Are  columns  really  columns?        •  Are  rows  sDll  rows?  •  Are  columns  really  rows?    

Page 17: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Simple  schema    Key  validator  –  int  Col  comparator  –  int  Default  validator  –  u18  

Page 18: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Rows  are  now  transposed  

Page 19: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

Astyanax  value  add  

•  Astyanax  maintains  backwards  compaDbility  with  the  api  

•  Hence  rows  are  sDll  rows  and  columns  are  sDll  columns  

Page 20: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

So  what  should  I  use?    

•  Astyanax  has  recipes  •  Astyanax  is  good  for  structured  queries  

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

Page 21: Cassandra Day SV 2014: Netflix’s Astyanax Java Client Driver for Apache Cassandra

QuesDons?  


Top Related