SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Content Mirror

Plone Content Serialization to a
Structured/Relational Database
 Who am I

 Kapil Thangavelu

     Lives in Washington, DC

        Works with Python
    
            Uses zope3, sqlalchemy, repoze, z3c
What is this talk about  

  Rethinking How to Use Plone
  Data Portability

  Developer Productivity
What its not about

Using relational database with Plone
Product vs. Framework

2003, First Plone conference NOLA, paul everitt posed the
question.
The Product Won

Plone does alot of out the box, with alot of knobs and
customization possible through the web.
More Complexity

 - Features are great if your using them.
 - Size Matters
 - Orthogonality Maters
Complexity Measured

quot;I have measured out my life in coffee spoonsquot;, The Love
song of J Alrefd Prufrock, TS. Eliot

(1m x 40r x 5d x 50w )/60 = 166h

The Plone Tax, aka time spent waiting on restarts
Simplicity is Good
- Pay for What You Use     - Developer Productivity
                           and the Learning Curve
- We can build fast,       Matters 
interactive applications    
                           - Simple things have a
                           better chance of being
                           correct
Separating Deployment

2am December 6th 2002, Amsterdam, infrae zope3 sprint
Static Deployment

CMFDeployment - Flexible Static Deployment, Filtering,
transforms, deployment skins, rendering, url
resolution.

http://plone.org/products/cmfdeployment

From Plone 1.0 - Plone 3.1
Data Deployment

Entransit, provides data deployment, with features like
rollback in a workspace based site structure.

.. requires particular site structure/layout according to
workgroups, provides advanced features like rollback of a
deployment.
Too Complex

Still too complex, needs to work out of the box.

operation and setup need to be dirt simple regardless of the
internal complexity (like a product ;-)
ContentMirror

 quot;A facility for mirroring the content of a Plone site into a
structured external datastore.quot;
 
 - automated, transparent, synchronous serialization. 
 
 - default source, Archetypes Content
 
 - default target, Relational Databases
ContentMirror

Supports Plone 2.5 - Plone   Work out of the Box
3.1
                             Strong Test Coverage
Support different
Databases ( tested with      Easy to Extend
Postgresql & Mysql )
Bootstrapping

 - Load the Archetypes
 - Transform to Database Schema
 - Create Peer Class
Schema Transformation
transform archetypes
schemas into relational tables
 
Using SQLAlchemy
 
Uses a default schema (
dublin core, relations, files,
identity )
 
each type gets its own table
with common fields factored
out
Peer Based
Each content type's class has a corresponding,
database persisted class (orm mapped), with
corresponding attributes. The peer/domain class can be
specified or autogenerated (default).
Event Based

In order to serialize content as changes are happening in
the CMS, we integrate into the application server's event
stream and subscribe to content events. The subscribers in
turn create sync operations via an operation factory.
Files

Don't copy files without need
 
Stored in the database by default
Containment

Adjacency List Model 
 
Modified Preorder Tree Traversal
Lightweight Mapper for Site Maps (use eager join option )
Relations

Archetypes              Content Mirror

Bidirectional           Relations Table

Generic Between Types   Doesn't support custom
                        attributes without
Custom Attributes       customization.
Installation   
<configure xmlns=quot;http://namespaces.zope.org/zopequot;
           xmlns:db=quot;http://namespaces.objectrealms.net/rdbquot;
           xmlns:ore=quot;http://namespaces.objectrealms.
net/mirrorquot;>
    <!-- setup a database connection -->
   <db:engine url=quot;postgres://localhost/contentmirrorquot;
             name=quot;mirror-dbquot;
             echo=quot;Truequot;/>
   <!-- associate the connection to the db structures -->
   <db:bind engine=quot;mirror-dbquot;
           metadata=quot;ore.contentmirror.schema.metadataquot; />
</configure>
Finishing Installation

# generate a schema
./bin/zopectl run Products/ContentMirror/ddl.py postgres
 
# create the database
./bin/createdb mirror-example
 
# load up the schema
./bin/psql mirror-example < db.sql
 
# bulk load the existing content
./bin/zopectl run Products/ContentMirror/bulk.py portal
Playing with Content Demo

 SQL Command Line

 Django Admin Interface
Resources

Source Code, Issue Tracker, Documentation
http://code.google.com/p/contentmirror
 
Mailing List
http://groups.google.com/group/contentmirror
 
99% unit test coverage / 48 tests / Doctests
Questions   


   ?

Weitere ähnliche Inhalte

Was ist angesagt?

Choice component in mule demo
Choice component in mule demoChoice component in mule demo
Choice component in mule demoSudha Ch
 
Mule Esb Data Weave
Mule Esb Data WeaveMule Esb Data Weave
Mule Esb Data WeaveMohammed246
 
Expression filter in Mule
Expression filter in MuleExpression filter in Mule
Expression filter in MuleMohammed246
 
Dropbox connector Mule ESB Integration
Dropbox connector Mule ESB IntegrationDropbox connector Mule ESB Integration
Dropbox connector Mule ESB IntegrationAnilKumar Etagowni
 
Mule ESB SMTP Connector Integration
Mule ESB SMTP Connector  IntegrationMule ESB SMTP Connector  Integration
Mule ESB SMTP Connector IntegrationAnilKumar Etagowni
 
For each component in mule
For each component in muleFor each component in mule
For each component in muleRajkattamuri
 
MuleSoft ESB Message Enricher
MuleSoft ESB Message Enricher MuleSoft ESB Message Enricher
MuleSoft ESB Message Enricher akashdprajapati
 
File component in mule
File component in muleFile component in mule
File component in muleRajkattamuri
 
Introduction to ElephantDB
Introduction to ElephantDBIntroduction to ElephantDB
Introduction to ElephantDBSoren Macbeth
 
Stored Procedure With In Out Parameters in Mule 3.6
 Stored Procedure With In Out Parameters in Mule 3.6 Stored Procedure With In Out Parameters in Mule 3.6
Stored Procedure With In Out Parameters in Mule 3.6Sashidhar Rao GDS
 

Was ist angesagt? (17)

Choice component in mule demo
Choice component in mule demoChoice component in mule demo
Choice component in mule demo
 
Mule Esb Data Weave
Mule Esb Data WeaveMule Esb Data Weave
Mule Esb Data Weave
 
How to use splitter component
How to use splitter componentHow to use splitter component
How to use splitter component
 
Expression filter in Mule
Expression filter in MuleExpression filter in Mule
Expression filter in Mule
 
Mule Message Properties Component
Mule Message Properties ComponentMule Message Properties Component
Mule Message Properties Component
 
Dropbox connector Mule ESB Integration
Dropbox connector Mule ESB IntegrationDropbox connector Mule ESB Integration
Dropbox connector Mule ESB Integration
 
Mule ESB SMTP Connector Integration
Mule ESB SMTP Connector  IntegrationMule ESB SMTP Connector  Integration
Mule ESB SMTP Connector Integration
 
For each component in mule
For each component in muleFor each component in mule
For each component in mule
 
MuleSoft ESB Message Enricher
MuleSoft ESB Message Enricher MuleSoft ESB Message Enricher
MuleSoft ESB Message Enricher
 
File component in mule
File component in muleFile component in mule
File component in mule
 
Mule property placeholder
Mule property placeholderMule property placeholder
Mule property placeholder
 
Introduction to ElephantDB
Introduction to ElephantDBIntroduction to ElephantDB
Introduction to ElephantDB
 
Stored Procedure With In Out Parameters in Mule 3.6
 Stored Procedure With In Out Parameters in Mule 3.6 Stored Procedure With In Out Parameters in Mule 3.6
Stored Procedure With In Out Parameters in Mule 3.6
 
Mule esb :Data Weave
Mule esb :Data WeaveMule esb :Data Weave
Mule esb :Data Weave
 
PL/SQL
PL/SQLPL/SQL
PL/SQL
 
How to use smtp endpoint
How to use smtp endpointHow to use smtp endpoint
How to use smtp endpoint
 
xslt in mule
xslt in mulexslt in mule
xslt in mule
 

Ähnlich wie Content Mirror

Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesJon Meredith
 
Top 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseTop 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseSandesh Rao
 
Silverlight Development & The Model-View-ViewModel Pattern
Silverlight Development & The Model-View-ViewModel PatternSilverlight Development & The Model-View-ViewModel Pattern
Silverlight Development & The Model-View-ViewModel PatternDerek Novavi
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldRob Gillen
 
Dba 3+ exp qus
Dba 3+ exp qusDba 3+ exp qus
Dba 3+ exp quskrreddy21
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbonezonathen
 
Intro to Talend Open Studio for Data Integration
Intro to Talend Open Studio for Data IntegrationIntro to Talend Open Studio for Data Integration
Intro to Talend Open Studio for Data IntegrationPhilip Yurchuk
 
Tuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paperTuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paperVinay Kumar
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011Alessandro Nadalin
 
51881801 informatica-faq
51881801 informatica-faq51881801 informatica-faq
51881801 informatica-faqVenkat485
 
A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...Carlos de la Guardia
 
http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151xlight
 
Cloudera Impala Internals
Cloudera Impala InternalsCloudera Impala Internals
Cloudera Impala InternalsDavid Groozman
 
Content delivery Plone Symposium East 2010
Content delivery Plone Symposium East 2010Content delivery Plone Symposium East 2010
Content delivery Plone Symposium East 2010alan runyan
 

Ähnlich wie Content Mirror (20)

Front Range PHP NoSQL Databases
Front Range PHP NoSQL DatabasesFront Range PHP NoSQL Databases
Front Range PHP NoSQL Databases
 
11g R2
11g R211g R2
11g R2
 
Top 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseTop 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous Database
 
Silverlight Development & The Model-View-ViewModel Pattern
Silverlight Development & The Model-View-ViewModel PatternSilverlight Development & The Model-View-ViewModel Pattern
Silverlight Development & The Model-View-ViewModel Pattern
 
Virtual Classroom
Virtual ClassroomVirtual Classroom
Virtual Classroom
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The Field
 
Dba 3+ exp qus
Dba 3+ exp qusDba 3+ exp qus
Dba 3+ exp qus
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbone
 
Intro to Talend Open Studio for Data Integration
Intro to Talend Open Studio for Data IntegrationIntro to Talend Open Studio for Data Integration
Intro to Talend Open Studio for Data Integration
 
SandhyaRani
SandhyaRaniSandhyaRani
SandhyaRani
 
Tuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paperTuning and optimizing webcenter spaces application white paper
Tuning and optimizing webcenter spaces application white paper
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
51881801 informatica-faq
51881801 informatica-faq51881801 informatica-faq
51881801 informatica-faq
 
Do you queue (updated)
Do you queue (updated)Do you queue (updated)
Do you queue (updated)
 
Migration from 8.1 to 11.3
Migration from 8.1 to 11.3Migration from 8.1 to 11.3
Migration from 8.1 to 11.3
 
A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...
 
http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151
 
Cloudera Impala Internals
Cloudera Impala InternalsCloudera Impala Internals
Cloudera Impala Internals
 
Content delivery Plone Symposium East 2010
Content delivery Plone Symposium East 2010Content delivery Plone Symposium East 2010
Content delivery Plone Symposium East 2010
 
HarishPoojaryCV
HarishPoojaryCVHarishPoojaryCV
HarishPoojaryCV
 

Kürzlich hochgeladen

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Kürzlich hochgeladen (20)

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Content Mirror

  • 1. Content Mirror Plone Content Serialization to a Structured/Relational Database
  • 2.  Who am I Kapil Thangavelu     Lives in Washington, DC        Works with Python                Uses zope3, sqlalchemy, repoze, z3c
  • 3. What is this talk about   Rethinking How to Use Plone Data Portability Developer Productivity
  • 4. What its not about Using relational database with Plone
  • 5. Product vs. Framework 2003, First Plone conference NOLA, paul everitt posed the question.
  • 6. The Product Won Plone does alot of out the box, with alot of knobs and customization possible through the web.
  • 7. More Complexity - Features are great if your using them. - Size Matters - Orthogonality Maters
  • 8. Complexity Measured quot;I have measured out my life in coffee spoonsquot;, The Love song of J Alrefd Prufrock, TS. Eliot (1m x 40r x 5d x 50w )/60 = 166h The Plone Tax, aka time spent waiting on restarts
  • 9. Simplicity is Good - Pay for What You Use - Developer Productivity and the Learning Curve - We can build fast, Matters  interactive applications   - Simple things have a better chance of being correct
  • 10. Separating Deployment 2am December 6th 2002, Amsterdam, infrae zope3 sprint
  • 11. Static Deployment CMFDeployment - Flexible Static Deployment, Filtering, transforms, deployment skins, rendering, url resolution. http://plone.org/products/cmfdeployment From Plone 1.0 - Plone 3.1
  • 12. Data Deployment Entransit, provides data deployment, with features like rollback in a workspace based site structure. .. requires particular site structure/layout according to workgroups, provides advanced features like rollback of a deployment.
  • 13. Too Complex Still too complex, needs to work out of the box. operation and setup need to be dirt simple regardless of the internal complexity (like a product ;-)
  • 14. ContentMirror  quot;A facility for mirroring the content of a Plone site into a structured external datastore.quot;    - automated, transparent, synchronous serialization.     - default source, Archetypes Content    - default target, Relational Databases
  • 15. ContentMirror Supports Plone 2.5 - Plone Work out of the Box 3.1   Strong Test Coverage Support different Databases ( tested with Easy to Extend Postgresql & Mysql )
  • 16. Bootstrapping  - Load the Archetypes  - Transform to Database Schema  - Create Peer Class
  • 17. Schema Transformation transform archetypes schemas into relational tables   Using SQLAlchemy   Uses a default schema ( dublin core, relations, files, identity )   each type gets its own table with common fields factored out
  • 18. Peer Based Each content type's class has a corresponding, database persisted class (orm mapped), with corresponding attributes. The peer/domain class can be specified or autogenerated (default).
  • 19. Event Based In order to serialize content as changes are happening in the CMS, we integrate into the application server's event stream and subscribe to content events. The subscribers in turn create sync operations via an operation factory.
  • 20. Files Don't copy files without need   Stored in the database by default
  • 21. Containment Adjacency List Model    Modified Preorder Tree Traversal Lightweight Mapper for Site Maps (use eager join option )
  • 22. Relations Archetypes Content Mirror Bidirectional Relations Table Generic Between Types Doesn't support custom attributes without Custom Attributes customization.
  • 23. Installation    <configure xmlns=quot;http://namespaces.zope.org/zopequot;            xmlns:db=quot;http://namespaces.objectrealms.net/rdbquot;            xmlns:ore=quot;http://namespaces.objectrealms. net/mirrorquot;>     <!-- setup a database connection -->    <db:engine url=quot;postgres://localhost/contentmirrorquot;              name=quot;mirror-dbquot;              echo=quot;Truequot;/>    <!-- associate the connection to the db structures -->    <db:bind engine=quot;mirror-dbquot;            metadata=quot;ore.contentmirror.schema.metadataquot; /> </configure>
  • 24. Finishing Installation # generate a schema ./bin/zopectl run Products/ContentMirror/ddl.py postgres   # create the database ./bin/createdb mirror-example   # load up the schema ./bin/psql mirror-example < db.sql   # bulk load the existing content ./bin/zopectl run Products/ContentMirror/bulk.py portal
  • 25. Playing with Content Demo  SQL Command Line  Django Admin Interface
  • 26. Resources Source Code, Issue Tracker, Documentation http://code.google.com/p/contentmirror   Mailing List http://groups.google.com/group/contentmirror   99% unit test coverage / 48 tests / Doctests