Your SlideShare is downloading. ×
0
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Intravert atx meetup_condensed
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intravert atx meetup_condensed

717

Published on

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

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
717
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Intravert Experimental Transport for Apache CassandraFriday, April 5, 13
  • 2. Hi Folks! I’m Nate @zznateFriday, April 5, 13
  • 3. API Management API Analytics API ToolsFriday, April 5, 13
  • 4. Vert.x + Cassandra = ?Friday, April 5, 13
  • 5. But first: Architectural stuffFriday, April 5, 13
  • 6. Collapsed for brevity. see slides 6-31 from this presentation: http://www.slideshare.net/zznate/ apachecon-cassandra-transportFriday, April 5, 13
  • 7. So there are options, why create something new?Friday, April 5, 13
  • 8. Common client patterns emergedFriday, April 5, 13
  • 9. union operations aggregations filtering joins (round-trip required!) redundant data on insertionFriday, April 5, 13
  • 10. These client patterns are wasteful.Friday, April 5, 13
  • 11. 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
  • 12. One more thing about CQL...Friday, April 5, 13
  • 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
  • 14. Transports in sumFriday, April 5, 13
  • 15. Thrift: I can has distributed computing degreeFriday, April 5, 13
  • 16. CQL: MOAR TOOLz!!!Friday, April 5, 13
  • 17. IMO: In 2013, binary protocols with idiomatic clients misses the market.Friday, April 5, 13
  • 18. I love writing apps in Java (sometimes python), but...Friday, April 5, 13
  • 19. The most popular application framework these days:Friday, April 5, 13
  • 20. The most popular application framework these days: HTML5Friday, April 5, 13
  • 21. and thus... IntravertFriday, April 5, 13
  • 22. Any new transport had to be HTTP basedFriday, April 5, 13
  • 23. Easy to use Easy to secure Easy to compress You can test with a browser!Friday, April 5, 13
  • 24. The payload had to be JSON basedFriday, April 5, 13
  • 25. Quick Vert.x summaryFriday, April 5, 13
  • 26. - Event-driven IO (Netty) - Message bus - Runtime load/unload of modules - Polyglot support via invokeDynamic in JDK7 http://vertx.ioFriday, April 5, 13
  • 27. Initial use case: Server side indexingFriday, April 5, 13
  • 28. Easy to construct most common operationsFriday, April 5, 13
  • 29. Simple REST semantics POST /myks/mycf/key1 {“uname”:”zznate”} GET /myks/mycf/key1/uname {”zznate”}Friday, April 5, 13
  • 30. Command-driven JSON payloadFriday, April 5, 13
  • 31. Extensible and transparent Ordered operations Not tied to any predefined notionsFriday, April 5, 13
  • 32. Benefits of doing this with Vert.xFriday, April 5, 13
  • 33. Message bus flexibility Configure which modules to load (read-only nodes!) Hot deploy of fixes and new featuresFriday, April 5, 13
  • 34. Cassandra is best-of- breed for a lot of things. So we used it as a framework.Friday, April 5, 13
  • 35. Example Intravert OperationsFriday, April 5, 13
  • 36. Slice: {"id":6, "type":"slice", "op":{      "end":"9",      "rowkey":"5",      "size":4,      "start":"1"} }Friday, April 5, 13
  • 37. Set: {"id":2, "type":"SET", "op":{            "rowkey":"key1",      "uname":"zznate",      "email":"zznate.m@gmail.com",      "age":37} }Friday, April 5, 13
  • 38. Easy to use CompositesFriday, April 5, 13
  • 39. {"id":1, "type":"SET", "op":{            "rowkey":"key1",      "COMP_NAME":[          "37",  "zznate"      ],      "value":"key1",      } }Friday, April 5, 13
  • 40. One or more commands per payloadFriday, April 5, 13
  • 41. Friday, April 5, 13
  • 42. Flexible batching - batch reads and writes - different keyspaces in same op - change ks/cf mid-op - streaming (soon)Friday, April 5, 13
  • 43. Server-side FilteringFriday, April 5, 13
  • 44. { "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
  • 45. { "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
  • 46. GetRef: Results of one operation as input from anotherFriday, April 5, 13
  • 47. { "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
  • 48. “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
  • 49. Multi-Processors: Shape results with a union of operationsFriday, April 5, 13
  • 50. Prepared Request Statement: Requests saved server side - send only the bind variablesFriday, April 5, 13
  • 51. CQL support built-in.Friday, April 5, 13
  • 52. What’s missing?Friday, April 5, 13
  • 53. Security (Shiro integration coming soon) Distribution semantics Cassandra-REST HBASE-like scannersFriday, April 5, 13
  • 54. github.com/zznate/ intravert-ugFriday, April 5, 13

×