SlideShare une entreprise Scribd logo
1  sur  22
upfront diet for plone
Roché Compaan
About me
● Owner of Upfront Systems
● Founded Upfront Systems in 1998
● Zope developer for the past 10 years
Experience
● Largest Plone deployments to date: 5FM & MetroFM
● 5FM
– 20 million page views per month
– 70 thousand members
– 6 million objects in ZODB
● Metro FM
– 15 million page views per month
– 20 thousand members
– 2 million objects in ZODB
● Helping Connexions with performance
● http://www.markhorner.net/2010/04/29/connexions-authoring-
performance/
Can Plone scale to 10 million documents?
ZODB Benchmarks
● Most common myth spread: “ZODB is a high
read, (s)low write database”
● No published ZODB benchmarks
● Wrote some benchmarks that test ZODB
read/write speed in 2008
● collective.zodbbench
ZODB Write Speed
0 500 thousand 2,5 million 5 million 7,5 million 8,5 million 10 million
0
1000
2000
3000
4000
5000
6000
7000
8000
Postgres
ZODB
Number of records
Inserts/second
ZODB Lookup Speed
Number of Objects Lookup Time
100,000 0.003 ms
1,000,000 0.006 ms
10,000,000 2 ms
Benchmark Conclusions
● Thanks Jim, ZODB Rocks!
● Large cache size important for writes too, not
only reads
● Need a solution for more than 10 million objects
● If the ZODB can handle 250 inserts/second at
peak volume why does it take a full minute to
add 250 ATDocuments?
A closer look at Plone
● Added 10,000 documents to Plone, while
profiling with Dieter Maurer's ZopeProfiler
● Timed “apply_index” method to find indexes
performing badly with and without
experimental.catalogqueryplan
● Batch import of content with an without
references.
● Used fsdump to inspect pickle contents.
Plone Benchmark Conclusions
● portal_catalog remains a bottleneck to scaling a
Plone site.
● 1 catalog == many many conflicts
● reference_catalog is a major performance
bottleneck
● Indexing 10,000 documents shows that 90% of
the objects in Data.fs relate to indexing.
What's in a pickle?
2,51755
81,564
9,872
20,024
85
655
1,544
30,455
182,708
7798,088122
Pickle contents of a single transaction adding an ATDocument
object size in bytes
IIBTree
Folder
IOBucket
OIBucket
IIBucket
IOBTree
BTrees.Length
ATDocument
OOBTree
IISet
Archetypes.BaseUnit
OOBucket
IITreeSet
Think before you index!
“Waking up objects is expensive” - this is an
irrational fear. And adding another catalog in
response to this fear requires therapy.
The portal_catalog problem
● No navigation, portal tabs, folder contents, review
queue if your content type is not in the portal_catalog.
● Your content type is automatically subscribed to 20+
indexes in the portal_catalog. Bad for new developers
with hopes of building an enterprise CMS.
● Unless you have 5+ years experience with Zope – it's
not so easy to “opt out”
● portal_catalog should only be used for content
searches – no functionality must depend on it.
What is upfront.diet?
● It's a healthier and happier approach to Plone
development: index only when you really really need
to.
● Set of packages that re-implement plone functionality
without depending on the portal_catalog and
reference_catalog.
● Includes replacements for: portal tabs, navigation
portlet, folder contents, archetype references.
● Provides a catalog blacklist/whitelist to customise
indexing per content type.
More about upfront.diet
● upfront.navportlet
● Separate catalog for navportlet
● upfront.simplereferencefield
●
Store references directly on object using annotations
● still depends uid_catalog
● upfront.foldercontents
● Adapter for IFolderish
● Index allowedRolesAndUsers directly on folder – less conflicts
● upfront.catalogblacklist
● Generic Setup profile with a whitelist and blacklist of indexes per
content type
● patches IndexableObjectWrapper, ugh!
upfront.diet todo list
● Packages:
● Portal tabs (done but not a separate package yet)
● Sitemap
● Review queue
● News and Events Smart Folders
● Site Search
● References without uid_catalog
● Comparative benchmarks with and without it
upfront.diet deployments
● Very few at the moment but looks promising
● Fullmarks.org.za (half a million objects, Data.fs
< 1GB)
Contact Me
● Email: roche@upfrontsystems.co.za
● Blog:
http://upfrontsystems.co.za/Members/roche
● facebook.com/rochecompaan
● twitter.com/rochecompaan
Questions?

Contenu connexe

Similaire à upfront diet plone conf 2010

G.Bs Presentation Of Guru Nanak Univ. National Conf.2009
G.Bs Presentation Of Guru Nanak Univ. National Conf.2009G.Bs Presentation Of Guru Nanak Univ. National Conf.2009
G.Bs Presentation Of Guru Nanak Univ. National Conf.2009Goutam Biswas
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Molieremfrancis
 
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professionalzwheller
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?STC-Philadelphia Metro Chapter
 
Using Joomla, Zoo & SOLR to power Asia's Largest Auction House
Using Joomla, Zoo & SOLR to power Asia's Largest Auction HouseUsing Joomla, Zoo & SOLR to power Asia's Largest Auction House
Using Joomla, Zoo & SOLR to power Asia's Largest Auction HouseParth Lawate
 
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017Yoast SEO for TYPO3 - TYPO3 Developer Days 2017
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017Richard Haeser
 
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptxTurja Narayan Chaudhuri
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFabio Pellegrini
 
Functional testing with behat
Functional testing with behatFunctional testing with behat
Functional testing with behatTahmina Khatoon
 
Practical automation for beginners
Practical automation for beginnersPractical automation for beginners
Practical automation for beginnersSeoweon Yoo
 
SharePoint Migration Preparation
SharePoint Migration PreparationSharePoint Migration Preparation
SharePoint Migration PreparationSysKit Ltd
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ GitheyMP
 
Building multi billion ( dollars, users, documents ) search engines on open ...
Building multi billion ( dollars, users, documents ) search engines  on open ...Building multi billion ( dollars, users, documents ) search engines  on open ...
Building multi billion ( dollars, users, documents ) search engines on open ...Andrei Lopatenko
 
Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?LavaConConference
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideDominic Woodman
 
Easy joget v3 for the absolute beginner
Easy joget v3 for the absolute beginnerEasy joget v3 for the absolute beginner
Easy joget v3 for the absolute beginnermadengly
 
OpenERP R&D
OpenERP R&DOpenERP R&D
OpenERP R&DOdoo
 
MongoDB@sfr.fr
MongoDB@sfr.frMongoDB@sfr.fr
MongoDB@sfr.frbeboutou
 

Similaire à upfront diet plone conf 2010 (20)

Bi Publisher 11g: Only good news
Bi Publisher 11g: Only good newsBi Publisher 11g: Only good news
Bi Publisher 11g: Only good news
 
G.Bs Presentation Of Guru Nanak Univ. National Conf.2009
G.Bs Presentation Of Guru Nanak Univ. National Conf.2009G.Bs Presentation Of Guru Nanak Univ. National Conf.2009
G.Bs Presentation Of Guru Nanak Univ. National Conf.2009
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professional
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?
 
Using Joomla, Zoo & SOLR to power Asia's Largest Auction House
Using Joomla, Zoo & SOLR to power Asia's Largest Auction HouseUsing Joomla, Zoo & SOLR to power Asia's Largest Auction House
Using Joomla, Zoo & SOLR to power Asia's Largest Auction House
 
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017Yoast SEO for TYPO3 - TYPO3 Developer Days 2017
Yoast SEO for TYPO3 - TYPO3 Developer Days 2017
 
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
 
Tori ORM for PyCon 2014
Tori ORM for PyCon 2014Tori ORM for PyCon 2014
Tori ORM for PyCon 2014
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless php
 
Functional testing with behat
Functional testing with behatFunctional testing with behat
Functional testing with behat
 
Practical automation for beginners
Practical automation for beginnersPractical automation for beginners
Practical automation for beginners
 
SharePoint Migration Preparation
SharePoint Migration PreparationSharePoint Migration Preparation
SharePoint Migration Preparation
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
 
Building multi billion ( dollars, users, documents ) search engines on open ...
Building multi billion ( dollars, users, documents ) search engines  on open ...Building multi billion ( dollars, users, documents ) search engines  on open ...
Building multi billion ( dollars, users, documents ) search engines on open ...
 
Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech Side
 
Easy joget v3 for the absolute beginner
Easy joget v3 for the absolute beginnerEasy joget v3 for the absolute beginner
Easy joget v3 for the absolute beginner
 
OpenERP R&D
OpenERP R&DOpenERP R&D
OpenERP R&D
 
MongoDB@sfr.fr
MongoDB@sfr.frMongoDB@sfr.fr
MongoDB@sfr.fr
 

Dernier

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Dernier (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.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!
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
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!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

upfront diet plone conf 2010

  • 1. upfront diet for plone Roché Compaan
  • 2.
  • 3. About me ● Owner of Upfront Systems ● Founded Upfront Systems in 1998 ● Zope developer for the past 10 years
  • 4. Experience ● Largest Plone deployments to date: 5FM & MetroFM ● 5FM – 20 million page views per month – 70 thousand members – 6 million objects in ZODB ● Metro FM – 15 million page views per month – 20 thousand members – 2 million objects in ZODB ● Helping Connexions with performance ● http://www.markhorner.net/2010/04/29/connexions-authoring- performance/
  • 5.
  • 6.
  • 7. Can Plone scale to 10 million documents?
  • 8. ZODB Benchmarks ● Most common myth spread: “ZODB is a high read, (s)low write database” ● No published ZODB benchmarks ● Wrote some benchmarks that test ZODB read/write speed in 2008 ● collective.zodbbench
  • 9. ZODB Write Speed 0 500 thousand 2,5 million 5 million 7,5 million 8,5 million 10 million 0 1000 2000 3000 4000 5000 6000 7000 8000 Postgres ZODB Number of records Inserts/second
  • 10. ZODB Lookup Speed Number of Objects Lookup Time 100,000 0.003 ms 1,000,000 0.006 ms 10,000,000 2 ms
  • 11. Benchmark Conclusions ● Thanks Jim, ZODB Rocks! ● Large cache size important for writes too, not only reads ● Need a solution for more than 10 million objects ● If the ZODB can handle 250 inserts/second at peak volume why does it take a full minute to add 250 ATDocuments?
  • 12. A closer look at Plone ● Added 10,000 documents to Plone, while profiling with Dieter Maurer's ZopeProfiler ● Timed “apply_index” method to find indexes performing badly with and without experimental.catalogqueryplan ● Batch import of content with an without references. ● Used fsdump to inspect pickle contents.
  • 13. Plone Benchmark Conclusions ● portal_catalog remains a bottleneck to scaling a Plone site. ● 1 catalog == many many conflicts ● reference_catalog is a major performance bottleneck ● Indexing 10,000 documents shows that 90% of the objects in Data.fs relate to indexing.
  • 14. What's in a pickle? 2,51755 81,564 9,872 20,024 85 655 1,544 30,455 182,708 7798,088122 Pickle contents of a single transaction adding an ATDocument object size in bytes IIBTree Folder IOBucket OIBucket IIBucket IOBTree BTrees.Length ATDocument OOBTree IISet Archetypes.BaseUnit OOBucket IITreeSet
  • 15. Think before you index! “Waking up objects is expensive” - this is an irrational fear. And adding another catalog in response to this fear requires therapy.
  • 16. The portal_catalog problem ● No navigation, portal tabs, folder contents, review queue if your content type is not in the portal_catalog. ● Your content type is automatically subscribed to 20+ indexes in the portal_catalog. Bad for new developers with hopes of building an enterprise CMS. ● Unless you have 5+ years experience with Zope – it's not so easy to “opt out” ● portal_catalog should only be used for content searches – no functionality must depend on it.
  • 17. What is upfront.diet? ● It's a healthier and happier approach to Plone development: index only when you really really need to. ● Set of packages that re-implement plone functionality without depending on the portal_catalog and reference_catalog. ● Includes replacements for: portal tabs, navigation portlet, folder contents, archetype references. ● Provides a catalog blacklist/whitelist to customise indexing per content type.
  • 18. More about upfront.diet ● upfront.navportlet ● Separate catalog for navportlet ● upfront.simplereferencefield ● Store references directly on object using annotations ● still depends uid_catalog ● upfront.foldercontents ● Adapter for IFolderish ● Index allowedRolesAndUsers directly on folder – less conflicts ● upfront.catalogblacklist ● Generic Setup profile with a whitelist and blacklist of indexes per content type ● patches IndexableObjectWrapper, ugh!
  • 19. upfront.diet todo list ● Packages: ● Portal tabs (done but not a separate package yet) ● Sitemap ● Review queue ● News and Events Smart Folders ● Site Search ● References without uid_catalog ● Comparative benchmarks with and without it
  • 20. upfront.diet deployments ● Very few at the moment but looks promising ● Fullmarks.org.za (half a million objects, Data.fs < 1GB)
  • 21. Contact Me ● Email: roche@upfrontsystems.co.za ● Blog: http://upfrontsystems.co.za/Members/roche ● facebook.com/rochecompaan ● twitter.com/rochecompaan