• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Intravert atx meetup_condensed
 

Intravert atx meetup_condensed

on

  • 1,135 views

What would you get if Cassandra and Vert.x had a baby?

What would you get if Cassandra and Vert.x had a baby?

Statistics

Views

Total Views
1,135
Views on SlideShare
944
Embed Views
191

Actions

Likes
0
Downloads
4
Comments
0

3 Embeds 191

https://twitter.com 188
http://www.spundge.com 2
https://abs.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Intravert atx meetup_condensed Intravert atx meetup_condensed Presentation Transcript

    • Intravert Experimental Transport for Apache CassandraFriday, April 5, 13
    • Hi Folks! I’m Nate @zznateFriday, April 5, 13
    • API Management API Analytics API ToolsFriday, April 5, 13
    • Vert.x + Cassandra = ?Friday, April 5, 13
    • But first: Architectural stuffFriday, April 5, 13
    • Collapsed for brevity. see slides 6-31 from this presentation: http://www.slideshare.net/zznate/ apachecon-cassandra-transportFriday, April 5, 13
    • So there are options, why create something new?Friday, April 5, 13
    • Common client patterns emergedFriday, April 5, 13
    • union operations aggregations filtering joins (round-trip required!) redundant data on insertionFriday, April 5, 13
    • These client patterns are wasteful.Friday, April 5, 13
    • Lots of CPU and memory burned (server and client) Lots of data on the wire won’t be used (ser/deSer cost)Friday, April 5, 13
    • One more thing about CQL...Friday, April 5, 13
    • “If [they] think that CQL is the answer to usability then I just won. We at least know where our problems are.” - 10gen exec.Friday, April 5, 13
    • Transports in sumFriday, April 5, 13
    • Thrift: I can has distributed computing degreeFriday, April 5, 13
    • CQL: MOAR TOOLz!!!Friday, April 5, 13
    • IMO: In 2013, binary protocols with idiomatic clients misses the market.Friday, April 5, 13
    • I love writing apps in Java (sometimes python), but...Friday, April 5, 13
    • The most popular application framework these days:Friday, April 5, 13
    • The most popular application framework these days: HTML5Friday, April 5, 13
    • and thus... IntravertFriday, April 5, 13
    • Any new transport had to be HTTP basedFriday, April 5, 13
    • Easy to use Easy to secure Easy to compress You can test with a browser!Friday, April 5, 13
    • The payload had to be JSON basedFriday, April 5, 13
    • Quick Vert.x summaryFriday, April 5, 13
    • - Event-driven IO (Netty) - Message bus - Runtime load/unload of modules - Polyglot support via invokeDynamic in JDK7 http://vertx.ioFriday, April 5, 13
    • Initial use case: Server side indexingFriday, April 5, 13
    • Easy to construct most common operationsFriday, April 5, 13
    • Simple REST semantics POST /myks/mycf/key1 {“uname”:”zznate”} GET /myks/mycf/key1/uname {”zznate”}Friday, April 5, 13
    • Command-driven JSON payloadFriday, April 5, 13
    • Extensible and transparent Ordered operations Not tied to any predefined notionsFriday, April 5, 13
    • Benefits of doing this with Vert.xFriday, April 5, 13
    • Message bus flexibility Configure which modules to load (read-only nodes!) Hot deploy of fixes and new featuresFriday, April 5, 13
    • Cassandra is best-of- breed for a lot of things. So we used it as a framework.Friday, April 5, 13
    • Example Intravert OperationsFriday, April 5, 13
    • Slice: {"id":6, "type":"slice", "op":{      "end":"9",      "rowkey":"5",      "size":4,      "start":"1"} }Friday, April 5, 13
    • Set: {"id":2, "type":"SET", "op":{            "rowkey":"key1",      "uname":"zznate",      "email":"zznate.m@gmail.com",      "age":37} }Friday, April 5, 13
    • Easy to use CompositesFriday, April 5, 13
    • {"id":1, "type":"SET", "op":{            "rowkey":"key1",      "COMP_NAME":[          "37",  "zznate"      ],      "value":"key1",      } }Friday, April 5, 13
    • One or more commands per payloadFriday, April 5, 13
    • Friday, April 5, 13
    • Flexible batching - batch reads and writes - different keyspaces in same op - change ks/cf mid-op - streaming (soon)Friday, April 5, 13
    • Server-side FilteringFriday, April 5, 13
    • { "type": "CREATEFILTER", "op": { "name": "stouts", "spec": "javascript", "value": "function(row) { if (row[value] == Breakfast Stout) return row; else return null; }" } }, { "type": "FILTERMODE", "op": { "name": "stouts", "on": true } }, { "type": "SLICE", "op": { "rowkey": "beers", "start": "Allagash", "end": "Sierra Nevada", "size": 9 } }Friday, April 5, 13
    • { "exception":null, "exceptionId":null, "opsRes": { "0":"OK", "1":"OK", "2":"OK", "3":"OK", "4":"OK", "5":"OK", "6":[{ "name":"Founders", "value":"Breakfast Stout" }] }}Friday, April 5, 13
    • GetRef: Results of one operation as input from anotherFriday, April 5, 13
    • { "type": "GET", "op": { "rowkey": "getref_test", "name": "col1" } }, { "type": "SET", "op": { "rowkey": "getref_test", "name": "col3", "value": { "type": "GETREF", "op": { "resultref": 4, "wanted": "value" } } } }, { "type": "GET", "op": { "rowkey": "getref_test", "name": "col3" } }Friday, April 5, 13
    • “Triggers” - Perform complex multi-step operations server side - Examine and change request objects - Interface directly with IntraVert - Interface directly with Cassandra (StorageProxy, CFMetaData, etc)Friday, April 5, 13
    • Multi-Processors: Shape results with a union of operationsFriday, April 5, 13
    • Prepared Request Statement: Requests saved server side - send only the bind variablesFriday, April 5, 13
    • CQL support built-in.Friday, April 5, 13
    • What’s missing?Friday, April 5, 13
    • Security (Shiro integration coming soon) Distribution semantics Cassandra-REST HBASE-like scannersFriday, April 5, 13
    • github.com/zznate/ intravert-ugFriday, April 5, 13