Voyage                         The adventure of persisting object-modelsWednesday, June 27, 12
A glimpse of Seaside                   • Stateful                   • Component model                   • Maybe aged, but ...
Continuations             I still prefer:Wednesday, June 27, 12
Continuations            Over:Wednesday, June 27, 12
A glimpse of Pier                   • A CMS                   • Component based                   • You can embed almost a...
A perfect worldWednesday, June 27, 12
A perfect world                   • Objects collaborate inside your image,                         creating a perfect chor...
A perfect world                   • Objects collaborate inside your image,                         creating a perfect chor...
Why to persist?                   • Space                   • Reliability                   • ScalabilityWednesday, June 2...
Persisting Pier                   • A complex* object model                   • Looking for                    • Scalabili...
Show time!Wednesday, June 27, 12
Voyage                   • A “non-abstract” persistence layer                   • An “implementation pattern” which       ...
A simple layered approach                                      Voyage                         Memory       Mongo          ...
Use cases              Singleton mode:              Regular mode:Wednesday, June 27, 12
A simple API                   • #save:                   • #remove:                   • #removeAll:                   • #...
A simple API                   • #save:                                                 Where                             ...
A simple API                   • #save:                                                 Where                             ...
A simple API                   • #save:                                                 Where                             ...
What Voyage provides                   • Common API                   • Centralized management                    - Preser...
Voyage-Memory                   • Is just a centralized dictionary of                         collections.                ...
Voyage-Mongo                   • Uses MongoTalk                   • Adds                    - Object cache                ...
Magritte-Mongo                   •     “Object-Document mapper”                   •     Magritte base implementation is in...
SerializerWednesday, June 27, 12
SerializerWednesday, June 27, 12
SerializerWednesday, June 27, 12
Serializer                   • Uses become, so yes, it is slow                    • So far, no need more speed.           ...
Status                   ✓First version working (make it work)                   • Need cleanup (make it right)           ...
Future                   • Finish it (collaborators would be fine :)                   • Add/Update some backends (Just if/...
Thanks!                             Voyage and PierVoyage are available at:                         http://smalltalkhub.co...
Upcoming SlideShare
Loading in...5
×

Voyage - PharoConf 2012

413

Published on

Voyage is a persistence framework for object models.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

No notes for slide

Voyage - PharoConf 2012

  1. 1. Voyage The adventure of persisting object-modelsWednesday, June 27, 12
  2. 2. A glimpse of Seaside • Stateful • Component model • Maybe aged, but still the best :)Wednesday, June 27, 12
  3. 3. Continuations I still prefer:Wednesday, June 27, 12
  4. 4. Continuations Over:Wednesday, June 27, 12
  5. 5. A glimpse of Pier • A CMS • Component based • You can embed almost anything • You can decorate almost anythingWednesday, June 27, 12
  6. 6. A perfect worldWednesday, June 27, 12
  7. 7. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements...Wednesday, June 27, 12
  8. 8. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... • INSIDE your imageWednesday, June 27, 12
  9. 9. Why to persist? • Space • Reliability • ScalabilityWednesday, June 27, 12
  10. 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, June 27, 12
  11. 11. Show time!Wednesday, June 27, 12
  12. 12. Voyage • A “non-abstract” persistence layer • An “implementation pattern” which provides some services as wellWednesday, June 27, 12
  13. 13. A simple layered approach Voyage Memory Mongo ... Magritte- MongoTalk MongoWednesday, June 27, 12
  14. 14. Use cases Singleton mode: Regular mode:Wednesday, June 27, 12
  15. 15. A simple API • #save: • #remove: • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where:Wednesday, June 27, 12
  16. 16. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where:Wednesday, June 27, 12
  17. 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, June 27, 12
  18. 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 } asDictionaryWednesday, June 27, 12
  19. 19. What Voyage provides • Common API • Centralized management - Preserve identity (caching live objects) - Error handling - Reconnection - Pluggable connection poolWednesday, June 27, 12
  20. 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, June 27, 12
  21. 21. Voyage-Mongo • Uses MongoTalk • Adds - Object cache - Error handling/reconnection - Transparent mapping (magritte guided)Wednesday, June 27, 12
  22. 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, June 27, 12
  23. 23. SerializerWednesday, June 27, 12
  24. 24. SerializerWednesday, June 27, 12
  25. 25. SerializerWednesday, June 27, 12
  26. 26. Serializer • Uses become, so yes, it is slow • So far, no need more speed. • Other possible approaches: Two phases (mark and persist)Wednesday, June 27, 12
  27. 27. Status ✓First version working (make it work) • Need cleanup (make it right) • Need some optimization (make it fast)Wednesday, June 27, 12
  28. 28. Future • Finish it (collaborators would be fine :) • Add/Update some backends (Just if/when needed) - Fuel - Phriak - Glorp?Wednesday, June 27, 12
  29. 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, June 27, 12
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×