Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UsergridOpen Source Mobile       Backend on        Cassandra
Hi I’mEd Anuff
API ManagementAPI AnalyticsAPI Tools
UsergridBackend-as-a-Service& Open SourceMobile andRich client apps
App, Cloud, & HTTP
No Web Stack         Page       MVC Logic       Database
Just Apps and APIs                    User Management!           Datastore!      Analytics!                               ...
Key CapabilitiesA platform not a single appFlexible data modelEasy to use from any language
Why should Cassandradevelopers care aboutUsergrid?
Open Source (APLv2)Built on HectorMulti-tenant (Virtual Keyspaces)JSON and full-text indexingRich permissions modelREST API
Multi-tenant data forApps
Lots of Teams... Team     Team     Team
Lots of Apps...  App      App    App          Team
And App Users...          App         Team
And data and devices         App         Team
Multi-tenancy at scaleApp   App   App   App   App   App  Team        Team        Team
Schema     Separate Database Shared Database              - Scalability     + ScalabilityShared               + Isolation ...
CREATE DATABASE  ALTER TABLE
Sharding SQL is toomuch work.Oracle is too muchmoney.
What about NoSQL?Most NoSQL works atthe wrong abstractionlevel.
Does Cassandraprovide any moreoptions?Sort of
Schema     Separate Keyspace Shared KeyspaceShared              Expensive       InterestingSeparateSchema               Ve...
How would SharedSchema/SharedKeyspace work?
Users = {  "4e3c0423-…" : {    username: "edanuff",    email: "ed@anuff.com",    … : …  },  "e5d61f2b-…" : {    username: ...
Users = {  "4e3c0423-…" : {    username: "edanuff",    email: "ed@anuff.com",    … : …  },  "e5d61f2b-…" : {    username: ...
Conventional Row Keys In Single Keyspace                 Row UUID                 Row UUID                 Row UUID       ...
Multi-tenant Row Keys In Shared Keyspace      Tenant ID             Row UUID      Tenant ID             Row UUID      Tena...
“Wonderful, morethings for me to buildmyself in the app tier...”Hold that thought...
Shared Schema/Shared Keyspace is“Virtual Keyspaces”Part of Hector Client
public static <E> Keyspace createVirtualKeyspace(  String keyspace,  E keyPrefix,  Serializer<E> kps,  Cluster cluster);
Hector hides the Tenant Prefixes               Prepend Tenant UUID   Hector                            Cassandra           ...
What about indexes?Hector doesn’t filter resultsDon’t add a tenant columnApp-tier CF indexespreferable
What about CQL?See previous slide for indexlimitationsHector doesn’t currently supportVirtual Keyspaces via CQLI don’t act...
So what else is inthere?
JSONFull JSON values, fullyindexed, using Jacksonand stuff from Lucene
PermissionsFine grained, per user,built on Shiro
RESTFull REST API, built onJersey
Anything else?
Mongo Compatible APIExperimental MongoAPI emulation via NettyMongo binary wireprotocol compatible
That’s whatUsergrid is.
Use the ideasUse the codeUse the cloud
usergrid.comgit.io/usergridThanks!
Upcoming SlideShare
Loading in …5
×

Open Source Mobile Backend on Cassandra

13,729 views

Published on

Video online on YouTube at http://youtu.be/RuJwIBu3jvs

Published in: Technology, Education
  • Be the first to comment

Open Source Mobile Backend on Cassandra

  1. UsergridOpen Source Mobile Backend on Cassandra
  2. Hi I’mEd Anuff
  3. API ManagementAPI AnalyticsAPI Tools
  4. UsergridBackend-as-a-Service& Open SourceMobile andRich client apps
  5. App, Cloud, & HTTP
  6. No Web Stack Page MVC Logic Database
  7. Just Apps and APIs User Management! Datastore! Analytics! Location! Social Graph! Activity Streams! Messaging!
  8. Key CapabilitiesA platform not a single appFlexible data modelEasy to use from any language
  9. Why should Cassandradevelopers care aboutUsergrid?
  10. Open Source (APLv2)Built on HectorMulti-tenant (Virtual Keyspaces)JSON and full-text indexingRich permissions modelREST API
  11. Multi-tenant data forApps
  12. Lots of Teams... Team Team Team
  13. Lots of Apps... App App App Team
  14. And App Users... App Team
  15. And data and devices App Team
  16. Multi-tenancy at scaleApp App App App App App Team Team Team
  17. Schema Separate Database Shared Database - Scalability + ScalabilityShared + Isolation - No Isolation + Simple - ComplicatedSeparateSchema - Scalability - Scalability + Isolation - No Isolation + Not Complicated - Complicated
  18. CREATE DATABASE ALTER TABLE
  19. Sharding SQL is toomuch work.Oracle is too muchmoney.
  20. What about NoSQL?Most NoSQL works atthe wrong abstractionlevel.
  21. Does Cassandraprovide any moreoptions?Sort of
  22. Schema Separate Keyspace Shared KeyspaceShared Expensive InterestingSeparateSchema Very Unwieldy Expensive
  23. How would SharedSchema/SharedKeyspace work?
  24. Users = { "4e3c0423-…" : { username: "edanuff", email: "ed@anuff.com", … : … }, "e5d61f2b-…" : { username: "jdoe", email: "john.doe@gmail.com", … : … }}
  25. Users = { "4e3c0423-…" : { username: "edanuff", email: "ed@anuff.com", … : … }, "e5d61f2b-…" : { username: "jdoe", email: "john.doe@gmail.com", … : … }}
  26. Conventional Row Keys In Single Keyspace Row UUID Row UUID Row UUID Row UUID Row UUID Row UUID
  27. Multi-tenant Row Keys In Shared Keyspace Tenant ID Row UUID Tenant ID Row UUID Tenant ID Row UUID Tenant ID Row UUID Tenant ID Row UUID Tenant ID Row UUID
  28. “Wonderful, morethings for me to buildmyself in the app tier...”Hold that thought...
  29. Shared Schema/Shared Keyspace is“Virtual Keyspaces”Part of Hector Client
  30. public static <E> Keyspace createVirtualKeyspace( String keyspace, E keyPrefix, Serializer<E> kps, Cluster cluster);
  31. Hector hides the Tenant Prefixes Prepend Tenant UUID Hector Cassandra Remove Tenant UUID
  32. What about indexes?Hector doesn’t filter resultsDon’t add a tenant columnApp-tier CF indexespreferable
  33. What about CQL?See previous slide for indexlimitationsHector doesn’t currently supportVirtual Keyspaces via CQLI don’t actually ever use CQL
  34. So what else is inthere?
  35. JSONFull JSON values, fullyindexed, using Jacksonand stuff from Lucene
  36. PermissionsFine grained, per user,built on Shiro
  37. RESTFull REST API, built onJersey
  38. Anything else?
  39. Mongo Compatible APIExperimental MongoAPI emulation via NettyMongo binary wireprotocol compatible
  40. That’s whatUsergrid is.
  41. Use the ideasUse the codeUse the cloud
  42. usergrid.comgit.io/usergridThanks!

×