SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Voyage-Tugrik:
A new persistence option for
Pharo using GemStone/S 64
Dale Henrichs
GemTalk Systems
ESUG 2016
Tugrik???
WAT???
1 Tugrik = 100 Mongo
Voyage
• Object-Document Mapper for NOSQL databases
• MongoDB and UnQLite databases
• Simplest API possible
• 6 methods for save remove, and query
• No Voyage Query language
GemStone/S 64
• Multi-terabyte Smalltalk image
• 1000’s of concurrent Smalltalk vms (gems) making updates to shared
image
• 1000’s of ACID transactions (concurrent image saves) per second
• Generous “Free for commercial use”
• Cost for the following is an email
• 50Gb data base
• 20 gems - 20 concurrent transactions
• https://gemtalksystems.com/licensing/#CWELicensing
GsDevKit/GLASS
• A compatibility layer for GemStone/S that provides a
class library that more closely resembles a classical
Smalltalk environment
• Smalltalk global is present
• Implements a large number of classes and methods
that are present in Squeak and Pharo images
GsDevKit_home
• Bash scripts for creating/starting/stopping GemStone
database instances (stones)
• Bash scripts for creating/starting/stopping Pharo
clients
• Ubuntu 12.04/14.04 and MacOs
• Ubuntu 16.04 soon
Tugrik
Proof of Concept
• Tugrik was created to make it possible to move a Voyage
application written against MongoDB to GemStone/S
• Tugrik implements the public MongoTalk Smalltalk API
• Tugrik models the MongoDB collection organization
• named database instance consisting of a number of
named document store collections
• Tugrik supports the MongoDB query filters
• Tugrik passes all of the MongoTalk unit tests
Tugrik
Tugrik
Tugrik
MongoDB query filters
{ <field>: { $all: [ <value1> , <value2> ... ] } }
{ field: { $size: 2 } }
{ $nor: [ { price: 1.99 }, { sale: true } ] }
Voyage-Tugrik
• Voyage-Tugrik specializes Voyage-Mongo.
• VOTugrikRepository is a subclass of
VOMongoRepository
Voyage-Tugrik
Class Mapping
• With Voyage-Tugrik Class Mapping, instances of root
object classes are created on server instead of
anonymous TugrikObject instances
• Expect to share common packages between client and
server
Voyage Server Blocks:
Unlocking Server-Side Execution
• Class instances WITHOUT behavior on the server is
interesting and even useful in some cases
• More interesting would be to enable server-side
execution
https://twitter.com/joeerl/status/765793779949395968
Voyage Server Blocks:
Send Small Programs to Data
• The expression is embedded in your client code
• The block source is extracted, shipped to the server
and evaluated.
• The return value is serialized and returned to client.
Voyage Server Blocks:
non-local variables
• The values of non-local variable references in block
are serialized and shipped to server where the values
are bound to the variables before execution
Voyage Server Blocks:
Voyage Root Objects
• A root object can be passed as the value of a non-
local variable and a returned root object is mapped to
client-side instance
Voyage Server Blocks:
Root Object behavior
• Voyage query blocks can use full range of root object
behavior on server (i.e., real select blocks)
Voyage Server Blocks:
Voyage API
• Full Voyage API (save, remove, select*) is implemented
on server
Tugrik Tools:
Debugger
Tugrik Tools:
Interactions
Future Work
• Tugrik session pool and object cache refactoring
• Improve/add client-side tools
• Harden Tugrik client implementation
• GemStone indexing support(???)
• GemStone Transaction models(???)
• Replication and synchronization improvements(???)
• Automatically compile shared code on Server(???)
• Optimizations
Looking for Partners
• Set agenda and priorities for Future Work
• Contributions!!!!
• My Preferences:
• incremental development with active participation from users
• features added based on demand
• simple over complicated
• thin clients over fat clients
Path of Least Resistance
• Concurrent document update issues
• Large number of documents
• Interest in Thin Client/Fat Server application
Voyage-Tugrik
Installation
# Install GsDevKit_home
git clone https://github.com/GsDevKit/GsDevKit_home.git
# Setup $GS_HOME env var and put $GS_HOME/bin in path
cd GsDevKit_home
. bin/defHOME_PATH.env
# Setup system for client/server operations (install OS prerequisites using `sudo`)
installServerClient
# Create tODE client
createClient tode
# Create Voyage stone
createStone -u http://gsdevkit.github.io/GsDevKit_home/Voyage.ston -i Voyage -l Voyage Voyage 3.3.1
# Create Pharo5.0 Voyage client
createClient -t pharo voyage -l -v Pharo5.0 -z $GS_HOME/shared/repos/voyage/.smalltalk-tugrik.ston
# Start Voyage client and register Voyage stone as default server
startClient voyage -s Voyage
Questions
Resources
• GemTalk Systems
• http://gemtalksystems.com
• https://gemtalksystems.com/products/gs64/versions33x/#33
• Voyage-Tugrik project
• https://github.com/dalehenrich/voyage#voyage-tugrik
• GsDevKit_home Installation and Documentation
• http://github.com/GsDevKit/GsDevKit_home
• GLASS (GemStone Open Source Community) mailing list
• http://forum.world.st/GLASS-f1460844.html

Mais conteúdo relacionado

Mais procurados

JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
Charles Nutter
 

Mais procurados (20)

Zun project update (boston summit)
Zun project update (boston summit)Zun project update (boston summit)
Zun project update (boston summit)
 
Distributed system coordination by zookeeper and introduction to kazoo python...
Distributed system coordination by zookeeper and introduction to kazoo python...Distributed system coordination by zookeeper and introduction to kazoo python...
Distributed system coordination by zookeeper and introduction to kazoo python...
 
How to Test Asynchronous Code (v2)
How to Test Asynchronous Code (v2)How to Test Asynchronous Code (v2)
How to Test Asynchronous Code (v2)
 
How we use Twisted in Launchpad
How we use Twisted in LaunchpadHow we use Twisted in Launchpad
How we use Twisted in Launchpad
 
Docker volume-isolator-in-mesos
Docker volume-isolator-in-mesosDocker volume-isolator-in-mesos
Docker volume-isolator-in-mesos
 
Twisted Introduction
Twisted IntroductionTwisted Introduction
Twisted Introduction
 
Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...
 
Nsq & python worker
Nsq & python workerNsq & python worker
Nsq & python worker
 
Kubernetes #6 advanced scheduling
Kubernetes #6   advanced schedulingKubernetes #6   advanced scheduling
Kubernetes #6 advanced scheduling
 
Kubernetes #3 security
Kubernetes #3   securityKubernetes #3   security
Kubernetes #3 security
 
无锁编程
无锁编程无锁编程
无锁编程
 
OpenStack Cinder Overview - Havana Release
OpenStack Cinder Overview - Havana ReleaseOpenStack Cinder Overview - Havana Release
OpenStack Cinder Overview - Havana Release
 
JRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform FurtherJRuby: Pushing the Java Platform Further
JRuby: Pushing the Java Platform Further
 
Blocks & Grand Central Dispatch
Blocks & Grand Central DispatchBlocks & Grand Central Dispatch
Blocks & Grand Central Dispatch
 
Kubernetes intro public - kubernetes meetup 4-21-2015
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015
 
Easy access to open stack object storage
Easy access to open stack object storageEasy access to open stack object storage
Easy access to open stack object storage
 
Facebook C++网络库Wangle调研
Facebook C++网络库Wangle调研Facebook C++网络库Wangle调研
Facebook C++网络库Wangle调研
 
Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014Bringing Concurrency to Ruby - RubyConf India 2014
Bringing Concurrency to Ruby - RubyConf India 2014
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
CDN algos
CDN algosCDN algos
CDN algos
 

Destaque

New Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
New Native Windows UI possibilities in Cincom Smalltalk ObjectStudioNew Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
New Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
ESUG
 

Destaque (10)

seamless – Object Oriented CMS System
seamless – Object Oriented CMS Systemseamless – Object Oriented CMS System
seamless – Object Oriented CMS System
 
Presenty
PresentyPresenty
Presenty
 
A Weak Pharo Story
A Weak Pharo StoryA Weak Pharo Story
A Weak Pharo Story
 
Test Selection with Moose In Industry - Impact of Granularity
Test Selection with Moose In Industry - Impact of GranularityTest Selection with Moose In Industry - Impact of Granularity
Test Selection with Moose In Industry - Impact of Granularity
 
Bloc: a Modern Core for Highly Dynamic Graphics
Bloc: a Modern Core for Highly Dynamic Graphics Bloc: a Modern Core for Highly Dynamic Graphics
Bloc: a Modern Core for Highly Dynamic Graphics
 
New Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
New Native Windows UI possibilities in Cincom Smalltalk ObjectStudioNew Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
New Native Windows UI possibilities in Cincom Smalltalk ObjectStudio
 
Prototyping Software Product Lines analysis with Pharo
Prototyping Software Product Lines analysis with PharoPrototyping Software Product Lines analysis with Pharo
Prototyping Software Product Lines analysis with Pharo
 
Pillar: one language for all supports
Pillar: one language for all supportsPillar: one language for all supports
Pillar: one language for all supports
 
The Glamorous Toolkit: Towards a novel live IDE
The Glamorous Toolkit: Towards a novel live IDEThe Glamorous Toolkit: Towards a novel live IDE
The Glamorous Toolkit: Towards a novel live IDE
 
Lub: a DSL for Dynamic Context Oriented Programming
Lub: a DSL for Dynamic Context Oriented ProgrammingLub: a DSL for Dynamic Context Oriented Programming
Lub: a DSL for Dynamic Context Oriented Programming
 

Semelhante a Tugrik: A new persistence option for Pharo

Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 
MongoDB at Gilt Groupe
MongoDB at Gilt GroupeMongoDB at Gilt Groupe
MongoDB at Gilt Groupe
MongoDB
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
Guillaume Laforge
 

Semelhante a Tugrik: A new persistence option for Pharo (20)

Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetes
 
The Meteor Framework
The Meteor FrameworkThe Meteor Framework
The Meteor Framework
 
Node azure
Node azureNode azure
Node azure
 
MongoDB at Gilt Groupe
MongoDB at Gilt GroupeMongoDB at Gilt Groupe
MongoDB at Gilt Groupe
 
Notes on SF W3Conf
Notes on SF W3ConfNotes on SF W3Conf
Notes on SF W3Conf
 
Developing Series 40 web apps with Nokia Web Tools 2.0
Developing Series 40 web apps with Nokia Web Tools 2.0Developing Series 40 web apps with Nokia Web Tools 2.0
Developing Series 40 web apps with Nokia Web Tools 2.0
 
Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
 
Ruby and Distributed Storage Systems
Ruby and Distributed Storage SystemsRuby and Distributed Storage Systems
Ruby and Distributed Storage Systems
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
OrigoDB - take the red pill
OrigoDB - take the red pillOrigoDB - take the red pill
OrigoDB - take the red pill
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
Scala at Treasure Data
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
 
Html5 more than just html5 v final
Html5  more than just html5 v finalHtml5  more than just html5 v final
Html5 more than just html5 v final
 
Shindig Apachecon Asia 09
Shindig Apachecon Asia 09Shindig Apachecon Asia 09
Shindig Apachecon Asia 09
 
Stackato v2
Stackato v2Stackato v2
Stackato v2
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 

Mais de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mais de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 

Último (20)

Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Tugrik: A new persistence option for Pharo

  • 1. Voyage-Tugrik: A new persistence option for Pharo using GemStone/S 64 Dale Henrichs GemTalk Systems ESUG 2016
  • 3. 1 Tugrik = 100 Mongo
  • 4. Voyage • Object-Document Mapper for NOSQL databases • MongoDB and UnQLite databases • Simplest API possible • 6 methods for save remove, and query • No Voyage Query language
  • 5. GemStone/S 64 • Multi-terabyte Smalltalk image • 1000’s of concurrent Smalltalk vms (gems) making updates to shared image • 1000’s of ACID transactions (concurrent image saves) per second • Generous “Free for commercial use” • Cost for the following is an email • 50Gb data base • 20 gems - 20 concurrent transactions • https://gemtalksystems.com/licensing/#CWELicensing
  • 6. GsDevKit/GLASS • A compatibility layer for GemStone/S that provides a class library that more closely resembles a classical Smalltalk environment • Smalltalk global is present • Implements a large number of classes and methods that are present in Squeak and Pharo images
  • 7. GsDevKit_home • Bash scripts for creating/starting/stopping GemStone database instances (stones) • Bash scripts for creating/starting/stopping Pharo clients • Ubuntu 12.04/14.04 and MacOs • Ubuntu 16.04 soon
  • 8. Tugrik Proof of Concept • Tugrik was created to make it possible to move a Voyage application written against MongoDB to GemStone/S • Tugrik implements the public MongoTalk Smalltalk API • Tugrik models the MongoDB collection organization • named database instance consisting of a number of named document store collections • Tugrik supports the MongoDB query filters • Tugrik passes all of the MongoTalk unit tests
  • 11. Tugrik MongoDB query filters { <field>: { $all: [ <value1> , <value2> ... ] } } { field: { $size: 2 } } { $nor: [ { price: 1.99 }, { sale: true } ] }
  • 12. Voyage-Tugrik • Voyage-Tugrik specializes Voyage-Mongo. • VOTugrikRepository is a subclass of VOMongoRepository
  • 13.
  • 14. Voyage-Tugrik Class Mapping • With Voyage-Tugrik Class Mapping, instances of root object classes are created on server instead of anonymous TugrikObject instances • Expect to share common packages between client and server
  • 15.
  • 16. Voyage Server Blocks: Unlocking Server-Side Execution • Class instances WITHOUT behavior on the server is interesting and even useful in some cases • More interesting would be to enable server-side execution https://twitter.com/joeerl/status/765793779949395968
  • 17. Voyage Server Blocks: Send Small Programs to Data • The expression is embedded in your client code • The block source is extracted, shipped to the server and evaluated. • The return value is serialized and returned to client.
  • 18. Voyage Server Blocks: non-local variables • The values of non-local variable references in block are serialized and shipped to server where the values are bound to the variables before execution
  • 19. Voyage Server Blocks: Voyage Root Objects • A root object can be passed as the value of a non- local variable and a returned root object is mapped to client-side instance
  • 20. Voyage Server Blocks: Root Object behavior • Voyage query blocks can use full range of root object behavior on server (i.e., real select blocks)
  • 21. Voyage Server Blocks: Voyage API • Full Voyage API (save, remove, select*) is implemented on server
  • 24. Future Work • Tugrik session pool and object cache refactoring • Improve/add client-side tools • Harden Tugrik client implementation • GemStone indexing support(???) • GemStone Transaction models(???) • Replication and synchronization improvements(???) • Automatically compile shared code on Server(???) • Optimizations
  • 25. Looking for Partners • Set agenda and priorities for Future Work • Contributions!!!! • My Preferences: • incremental development with active participation from users • features added based on demand • simple over complicated • thin clients over fat clients
  • 26. Path of Least Resistance • Concurrent document update issues • Large number of documents • Interest in Thin Client/Fat Server application
  • 27. Voyage-Tugrik Installation # Install GsDevKit_home git clone https://github.com/GsDevKit/GsDevKit_home.git # Setup $GS_HOME env var and put $GS_HOME/bin in path cd GsDevKit_home . bin/defHOME_PATH.env # Setup system for client/server operations (install OS prerequisites using `sudo`) installServerClient # Create tODE client createClient tode # Create Voyage stone createStone -u http://gsdevkit.github.io/GsDevKit_home/Voyage.ston -i Voyage -l Voyage Voyage 3.3.1 # Create Pharo5.0 Voyage client createClient -t pharo voyage -l -v Pharo5.0 -z $GS_HOME/shared/repos/voyage/.smalltalk-tugrik.ston # Start Voyage client and register Voyage stone as default server startClient voyage -s Voyage
  • 29. Resources • GemTalk Systems • http://gemtalksystems.com • https://gemtalksystems.com/products/gs64/versions33x/#33 • Voyage-Tugrik project • https://github.com/dalehenrich/voyage#voyage-tugrik • GsDevKit_home Installation and Documentation • http://github.com/GsDevKit/GsDevKit_home • GLASS (GemStone Open Source Community) mailing list • http://forum.world.st/GLASS-f1460844.html