voyage
play

Voyage The adventure of persisting object-models Wednesday, May 30, - PowerPoint PPT Presentation

Voyage The adventure of persisting object-models Wednesday, May 30, 12 A glimpse of Seaside Stateful Component model Maybe aged, but still the best :) Wednesday, May 30, 12 Continuations I still prefer: Wednesday, May 30, 12


  1. Voyage The adventure of persisting object-models Wednesday, May 30, 12

  2. A glimpse of Seaside • Stateful • Component model • Maybe aged, but still the best :) Wednesday, May 30, 12

  3. Continuations I still prefer: Wednesday, May 30, 12

  4. Continuations Over: Wednesday, May 30, 12

  5. A glimpse of Pier • A CMS • Component based • You can embed almost anything • You can decorate almost anything Wednesday, May 30, 12

  6. A perfect world Wednesday, May 30, 12

  7. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... Wednesday, May 30, 12

  8. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... • INSIDE your image Wednesday, May 30, 12

  9. Why to persist? • Space • Reliability • Scalability Wednesday, May 30, 12

  10. Persisting Pier • A complex* object model • Looking for • Scalability • Update capabilities • Backup *And I mean really complex: take a look to all those commands, decorations and dictionaries :) Wednesday, May 30, 12

  11. Show time! Wednesday, May 30, 12

  12. Voyage • A “non-abstract” persistence layer • An “implementation pattern” which provides some services as well Wednesday, May 30, 12

  13. A simple layered approach Voyage Memory Mongo ... Magritte- MongoTalk Mongo Wednesday, May 30, 12

  14. Use cases Singleton mode: Regular mode: Wednesday, May 30, 12

  15. A simple API • #save: • #remove: • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where: Wednesday, May 30, 12

  16. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where: Wednesday, May 30, 12

  17. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: Memory: [ :each | each key = 42 ] • #selectMany:where: • #selectOne:where: Wednesday, May 30, 12

  18. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: Memory: [ :each | each key = 42 ] • #selectMany:where: • #selectOne:where: Mongo: { #key->42 } asDictionary Wednesday, May 30, 12

  19. What Voyage provides • Common API • Centralized management - Preserve identity (caching live objects) - Error handling - Reconnection - Pluggable connection pool Wednesday, May 30, 12

  20. Voyage-Memory • Is just a centralized dictionary of collections. • Used for prototyping and early stages of development (no need to choose a persistent repository at first instance) • Works for “stateless” applications which need readonly data (I made one once, yes) Wednesday, May 30, 12

  21. Voyage-Mongo • Uses MongoTalk • Adds - Object cache - Error handling/reconnection - Transparent mapping (magritte guided) Wednesday, May 30, 12

  22. Magritte-Mongo • “Object-Document mapper” • Magritte base implementation is intended to UI and there is some difference with mongo needs. - Explicit (static) declaration vs. dynamic type inference. (i.e. Pier persistence is nearly impossible with an explicit declaration approach) • I changed it a lot since Norbert saw him (more and more inference... and still needs more) Wednesday, May 30, 12

  23. Serializer Wednesday, May 30, 12

  24. Serializer Wednesday, May 30, 12

  25. Serializer Wednesday, May 30, 12

  26. Serializer • Uses become, so yes, it is slow • So far, no need more speed. • Other possible approaches: Two phases (mark and persist) Wednesday, May 30, 12

  27. Status ✓ First version working (make it work) • Need cleanup (make it right) • Need some optimization (make it fast) Wednesday, May 30, 12

  28. Future • Finish it (collaborators would be fine :) • Add/Update some backends (Just if/when needed) - Fuel - Phriak - Glorp? Wednesday, May 30, 12

  29. Thanks! Voyage and PierVoyage are available at: http://smalltalkhub.com/#!/~estebanlm/Voyage Already a tester who is blogging about! http://articles.tulipemoutarde.be/ Wednesday, May 30, 12

Recommend


More recommend