SlideShare a Scribd company logo
PERFORMANT
APPLICATIONS IN PLONE
David Bătrânu
Eau de Web
CURRENT MINDSET
• Structure the application using content types.
• Hope it doesn’t need to scale.
BENEFITS
• You get a lot of stuff for free.
• Full integration with Plone.
DRAWBACKS
• You get too much stuff! Whether you want it
or not!
• Slooooow!
SIMPLE EXAMPLE
A table!!
• Table(Container) - application instance
• TableRow(Item) - application data
• Catalog for sorting and filtering
Performant applications in Plone
ALTERNATIVE
persistent.Persistent
• Most lightweight way to store something
in the ZODB
• Extremely fast!
SIMPLE EXAMPLE
Same presentation table
• Table(Container) - application instance
• rows = OOBTree()
• TableRow(Persistent) - application data
• sort and filter for sorting and filtering
Performant applications in Plone
ACTUAL USE
• DX item containing a few fields, used as data in
a table.
• Requirements grew from tens of items to
hundreds.
• Managed in bulk through a custom upload view.
• ~1s / item update; ~10m for an average update.
• Actually thought about using async jobs!!!
REIMPLEMENTATION
• New class extending Persistent
• Fields as attributes
• Stored in BTrees
• <1s to update 10000 items!!
BENEFITS
• MUCH faster!!
• Reduced stack complexity - no more async.
• Reduced resource usage - no more wasted
time.
• Easier to test.
• Non-Plone people can work on it!
DRAWBACKS
• No OOB permission checks - have to make sure
that returned data should be accessible to the
current user.
• No content management - have to implement
add/edit/delete forms.
• No workflows, versioning, content rules, etc..
• Basically, not a content type!
AND THAT’S A GOOD
THING
• Not all applications should follow this pattern.
• In this case, the requirements were better
served this way.
Thank you!

More Related Content

PDF
Amazon DynamoDB by Aswin
PDF
NoSQL & JSON
PPTX
GraphDb in XPages
PDF
Memory leaks in Ruby applications
PPTX
ISBG 2016 - XPages on IBM Bluemix
PDF
Snowball 180625113523
PDF
Data Evolution on HBase (with Kiji)
PPT
Asp #2
Amazon DynamoDB by Aswin
NoSQL & JSON
GraphDb in XPages
Memory leaks in Ruby applications
ISBG 2016 - XPages on IBM Bluemix
Snowball 180625113523
Data Evolution on HBase (with Kiji)
Asp #2

What's hot (11)

PPTX
F# type providers
PPTX
Alfresco Reporting & Analytics
PDF
Find your data
PPT
EDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
PDF
Scalable Assets Presentation
PPTX
Automation in VLSI related tasks.
DOC
Vb Script Course For Qa
PPTX
A journey through cosmos - 5th el
PPTX
2CPP13 - Operator Overloading
PPTX
IMA Lab: Indianapolis Museum of Art Collection Page Redesign
PDF
Intro to Graphs for Fedict
F# type providers
Alfresco Reporting & Analytics
Find your data
EDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
Scalable Assets Presentation
Automation in VLSI related tasks.
Vb Script Course For Qa
A journey through cosmos - 5th el
2CPP13 - Operator Overloading
IMA Lab: Indianapolis Museum of Art Collection Page Redesign
Intro to Graphs for Fedict
Ad

Similar to Performant applications in Plone (20)

PPTX
Content delivery Plone Symposium East 2010
PDF
Plone Futures
PDF
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
ODP
A winning combination: Plone as CMS and your favorite Python web framework as...
PPT
Plone For Developers - World Plone Day, 2009
PDF
Why Plone Will Die
PDF
Sally Kleinfeldt - Plone Application Development Patterns
PDF
Content Mirror
PDF
The goodies of zope, pyramid, and plone (2)
ODP
Plomino plone conf2010
PDF
Easy online business processes with Plone forms and workflow
PDF
Why NoSQL Makes Sense
PDF
Old Dogs and New Tricks
PPTX
Handling Data in Mega Scale Systems
PPTX
RavenDB overview
PDF
BPM and SOA Are Going Mobile: An Architectural Perspective
PDF
Plone server
PDF
Semantic web, python, construction industry
PDF
Tweaking performance on high-load projects
PPT
Document Databases & RavenDB
Content delivery Plone Symposium East 2010
Plone Futures
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
A winning combination: Plone as CMS and your favorite Python web framework as...
Plone For Developers - World Plone Day, 2009
Why Plone Will Die
Sally Kleinfeldt - Plone Application Development Patterns
Content Mirror
The goodies of zope, pyramid, and plone (2)
Plomino plone conf2010
Easy online business processes with Plone forms and workflow
Why NoSQL Makes Sense
Old Dogs and New Tricks
Handling Data in Mega Scale Systems
RavenDB overview
BPM and SOA Are Going Mobile: An Architectural Perspective
Plone server
Semantic web, python, construction industry
Tweaking performance on high-load projects
Document Databases & RavenDB
Ad

Recently uploaded (20)

PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPT
What is a Computer? Input Devices /output devices
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
STKI Israel Market Study 2025 version august
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Web App vs Mobile App What Should You Build First.pdf
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
project resource management chapter-09.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
The various Industrial Revolutions .pptx
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Hindi spoken digit analysis for native and non-native speakers
A contest of sentiment analysis: k-nearest neighbor versus neural network
What is a Computer? Input Devices /output devices
Assigned Numbers - 2025 - Bluetooth® Document
Final SEM Unit 1 for mit wpu at pune .pptx
O2C Customer Invoices to Receipt V15A.pptx
STKI Israel Market Study 2025 version august
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
cloud_computing_Infrastucture_as_cloud_p
Web App vs Mobile App What Should You Build First.pdf
OMC Textile Division Presentation 2021.pptx
1 - Historical Antecedents, Social Consideration.pdf
WOOl fibre morphology and structure.pdf for textiles
A comparative study of natural language inference in Swahili using monolingua...
project resource management chapter-09.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
The various Industrial Revolutions .pptx
Module 1.ppt Iot fundamentals and Architecture
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf

Performant applications in Plone

  • 2. CURRENT MINDSET • Structure the application using content types. • Hope it doesn’t need to scale.
  • 3. BENEFITS • You get a lot of stuff for free. • Full integration with Plone.
  • 4. DRAWBACKS • You get too much stuff! Whether you want it or not! • Slooooow!
  • 5. SIMPLE EXAMPLE A table!! • Table(Container) - application instance • TableRow(Item) - application data • Catalog for sorting and filtering
  • 8. • Most lightweight way to store something in the ZODB • Extremely fast!
  • 9. SIMPLE EXAMPLE Same presentation table • Table(Container) - application instance • rows = OOBTree() • TableRow(Persistent) - application data • sort and filter for sorting and filtering
  • 11. ACTUAL USE • DX item containing a few fields, used as data in a table. • Requirements grew from tens of items to hundreds. • Managed in bulk through a custom upload view. • ~1s / item update; ~10m for an average update. • Actually thought about using async jobs!!!
  • 12. REIMPLEMENTATION • New class extending Persistent • Fields as attributes • Stored in BTrees • <1s to update 10000 items!!
  • 13. BENEFITS • MUCH faster!! • Reduced stack complexity - no more async. • Reduced resource usage - no more wasted time. • Easier to test. • Non-Plone people can work on it!
  • 14. DRAWBACKS • No OOB permission checks - have to make sure that returned data should be accessible to the current user. • No content management - have to implement add/edit/delete forms. • No workflows, versioning, content rules, etc.. • Basically, not a content type!
  • 15. AND THAT’S A GOOD THING • Not all applications should follow this pattern. • In this case, the requirements were better served this way.