SlideShare a Scribd company logo
1 of 29
Download to read offline
Voyage
                         The adventure of persisting object-models




Wednesday, June 27, 12
A glimpse of Seaside

                   • Stateful
                   • Component model
                   • Maybe aged, but still the best :)


Wednesday, June 27, 12
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 anything
                   • You can decorate almost anything

Wednesday, June 27, 12
A perfect world




Wednesday, June 27, 12
A perfect world

                   • Objects collaborate inside your image,
                         creating a perfect choreography of
                         interacting elements...




Wednesday, June 27, 12
A perfect world

                   • Objects collaborate inside your image,
                         creating a perfect choreography of
                         interacting elements...
                   • INSIDE your image


Wednesday, June 27, 12
Why to persist?

                   • Space
                   • Reliability
                   • Scalability


Wednesday, June 27, 12
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
Show time!



Wednesday, June 27, 12
Voyage


                   • A “non-abstract” persistence layer
                   • An “implementation pattern” which
                         provides some services as well




Wednesday, June 27, 12
A simple layered approach
                                      Voyage




                         Memory       Mongo                ...




                                               Magritte-
                              MongoTalk
                                                Mongo




Wednesday, June 27, 12
Use cases
              Singleton mode:



              Regular mode:




Wednesday, June 27, 12
A simple API
                   • #save:
                   • #remove:
                   • #removeAll:
                   • #selectAll:
                   • #selectMany:where:
                   • #selectOne:where:
Wednesday, June 27, 12
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
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
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, June 27, 12
What Voyage provides
                   • Common API
                   • Centralized management
                    - Preserve identity (caching live objects)
                    - Error handling
                    - Reconnection
                    - Pluggable connection pool
Wednesday, June 27, 12
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
Voyage-Mongo

                   • Uses MongoTalk
                   • Adds
                    - Object cache
                    - Error handling/reconnection
                    - Transparent mapping (magritte guided)

Wednesday, June 27, 12
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
Serializer




Wednesday, June 27, 12
Serializer




Wednesday, June 27, 12
Serializer




Wednesday, June 27, 12
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
Status


                   ✓First version working (make it work)
                   • Need cleanup (make it right)
                   • Need some optimization (make it fast)


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


Wednesday, June 27, 12
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

More Related Content

Viewers also liked

Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?倉博 胡
 
Masin De Epoca La Monaco Pt Blog
Masin De Epoca La Monaco  Pt BlogMasin De Epoca La Monaco  Pt Blog
Masin De Epoca La Monaco Pt Blogserbionel
 
Compliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment SolutionCompliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment Solutionairsch
 
Quadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsQuadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsjoanmolar
 
110322 Social media för företag
110322 Social media för företag110322 Social media för företag
110322 Social media för företagPetter Kolseth
 
Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Europeana
 
Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Mercè Puig
 
How to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgHow to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgPeter Thayer
 
2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiencesEuropeana
 
MeeboMe Widget Instructions
MeeboMe Widget InstructionsMeeboMe Widget Instructions
MeeboMe Widget InstructionsPeter Thayer
 
Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Europeana
 
2012 oct 22 shaping access presentation_alt
2012 oct 22  shaping access presentation_alt2012 oct 22  shaping access presentation_alt
2012 oct 22 shaping access presentation_altEuropeana
 
Prehistoria 2
Prehistoria 2Prehistoria 2
Prehistoria 2joanmolar
 
Europeana and the Commons
Europeana and the CommonsEuropeana and the Commons
Europeana and the CommonsEuropeana
 
Archives in the Hadron Collider
Archives in the Hadron ColliderArchives in the Hadron Collider
Archives in the Hadron ColliderEuropeana
 
Vår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldVår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldPetter Kolseth
 

Viewers also liked (20)

Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?
 
Vida jaufre
Vida jaufreVida jaufre
Vida jaufre
 
Connect2 Books2
Connect2 Books2Connect2 Books2
Connect2 Books2
 
Endometrioziz
EndometriozizEndometrioziz
Endometrioziz
 
Masin De Epoca La Monaco Pt Blog
Masin De Epoca La Monaco  Pt BlogMasin De Epoca La Monaco  Pt Blog
Masin De Epoca La Monaco Pt Blog
 
Compliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment SolutionCompliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment Solution
 
Reef - ESUG2011
Reef  - ESUG2011Reef  - ESUG2011
Reef - ESUG2011
 
Quadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsQuadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngels
 
110322 Social media för företag
110322 Social media för företag110322 Social media för företag
110322 Social media för företag
 
Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Impact eats sustainability for lunch!
Impact eats sustainability for lunch!
 
Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08
 
How to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgHow to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.org
 
2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences
 
MeeboMe Widget Instructions
MeeboMe Widget InstructionsMeeboMe Widget Instructions
MeeboMe Widget Instructions
 
Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Unlocking value: museums and the web 09
Unlocking value: museums and the web 09
 
2012 oct 22 shaping access presentation_alt
2012 oct 22  shaping access presentation_alt2012 oct 22  shaping access presentation_alt
2012 oct 22 shaping access presentation_alt
 
Prehistoria 2
Prehistoria 2Prehistoria 2
Prehistoria 2
 
Europeana and the Commons
Europeana and the CommonsEuropeana and the Commons
Europeana and the Commons
 
Archives in the Hadron Collider
Archives in the Hadron ColliderArchives in the Hadron Collider
Archives in the Hadron Collider
 
Vår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldVår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärld
 

Similar to Voyage - PharoConf 2012

Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief reviewCristian COȚOI
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1Troy Miles
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Martijn Verburg
 
Node.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago MeetupNode.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago Meetuphugs
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011Charles Nutter
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with EaseConcentric Sky
 
Getting started with MySQL
Getting started with MySQLGetting started with MySQL
Getting started with MySQLJohn Ashmead
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Benoit Perroud
 

Similar to Voyage - PharoConf 2012 (12)

Rubyconf2012 recap
Rubyconf2012 recapRubyconf2012 recap
Rubyconf2012 recap
 
Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief review
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
 
Scala profiling
Scala profilingScala profiling
Scala profiling
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)
 
Node.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago MeetupNode.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago Meetup
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with Ease
 
Team work
Team workTeam work
Team work
 
Getting started with MySQL
Getting started with MySQLGetting started with MySQL
Getting started with MySQL
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08
 

More from Esteban Lorenzano

Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Esteban Lorenzano
 
Tide - The missing web framework
Tide - The missing web frameworkTide - The missing web framework
Tide - The missing web frameworkEsteban Lorenzano
 
Smalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneSmalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneEsteban Lorenzano
 
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Esteban Lorenzano
 
Seaside, El framework hereje
Seaside, El framework herejeSeaside, El framework hereje
Seaside, El framework herejeEsteban Lorenzano
 

More from Esteban Lorenzano (8)

Spec 2.0
Spec 2.0Spec 2.0
Spec 2.0
 
Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.
 
Voyage by example
Voyage by exampleVoyage by example
Voyage by example
 
Tide - The missing web framework
Tide - The missing web frameworkTide - The missing web framework
Tide - The missing web framework
 
Reef - ESUG 2010
Reef - ESUG 2010Reef - ESUG 2010
Reef - ESUG 2010
 
Smalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneSmalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhone
 
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
 
Seaside, El framework hereje
Seaside, El framework herejeSeaside, El framework hereje
Seaside, El framework hereje
 

Recently uploaded

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Recently uploaded (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

Voyage - PharoConf 2012

  • 1. Voyage The adventure of persisting object-models Wednesday, June 27, 12
  • 2. A glimpse of Seaside • Stateful • Component model • Maybe aged, but still the best :) Wednesday, June 27, 12
  • 3. Continuations I still prefer: Wednesday, June 27, 12
  • 4. Continuations Over: Wednesday, June 27, 12
  • 5. A glimpse of Pier • A CMS • Component based • You can embed almost anything • You can decorate almost anything Wednesday, June 27, 12
  • 7. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... Wednesday, June 27, 12
  • 8. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... • INSIDE your image Wednesday, June 27, 12
  • 9. Why to persist? • Space • Reliability • Scalability Wednesday, June 27, 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, June 27, 12
  • 12. Voyage • A “non-abstract” persistence layer • An “implementation pattern” which provides some services as well Wednesday, June 27, 12
  • 13. A simple layered approach Voyage Memory Mongo ... Magritte- MongoTalk Mongo Wednesday, June 27, 12
  • 14. Use cases Singleton mode: Regular mode: Wednesday, June 27, 12
  • 15. A simple API • #save: • #remove: • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where: Wednesday, June 27, 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, June 27, 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, June 27, 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, June 27, 12
  • 19. What Voyage provides • Common API • Centralized management - Preserve identity (caching live objects) - Error handling - Reconnection - Pluggable connection pool Wednesday, June 27, 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, June 27, 12
  • 21. Voyage-Mongo • Uses MongoTalk • Adds - Object cache - Error handling/reconnection - Transparent mapping (magritte guided) Wednesday, June 27, 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, June 27, 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, June 27, 12
  • 27. Status ✓First version working (make it work) • Need cleanup (make it right) • Need some optimization (make it fast) Wednesday, June 27, 12
  • 28. Future • Finish it (collaborators would be fine :) • Add/Update some backends (Just if/when needed) - Fuel - Phriak - Glorp? Wednesday, June 27, 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, June 27, 12