pse2010 rel storage
TRANSCRIPT
sixfeetup.com/deploy2010
open sourcenowhere to go but
Plone Symposium East 2010
Plone on RelStorageLars R. Noldan
sixfeetup.com/deploy2010
Overview
• How does Zope store data
• Why RelStorage?
• How to implement RelStorage
• Some reasons not to use RelStorage
sixfeetup.com/deploy2010
Zope Storage Methods
sixfeetup.com/deploy2010
What is the ZODB?
• Object oriented database
• Used by Zope to hold everything from contentto scripts, to service configurations
sixfeetup.com/deploy2010
What is Filestorage?
• The default backend for Zope/ZEO
• var/filestorage/Data.fs
• Does an in-memory index at startup
• Data appends to the end
• Back-up utility is Repozo
sixfeetup.com/deploy2010
What is RelStorage?• Drop in replacement
• Replaces ZEO
• Eliminates Data.fs
• Stores pickles
• Is still ZODB
• Uses relational databases
sixfeetup.com/deploy2010
Why Change?
sixfeetup.com/deploy2010
Advantages of RelStorage
• Existing infrastructure
• Existing expertise
• Wide range of management tools
• High availability, high performance clusters
• No in-memory index at startup
• Scales well as your database grows
sixfeetup.com/deploy2010
Databases Supported• MySQL 5.0.32 or better
• MySQLdb >= 1.2.2
• PostgreSQL 8.1 or better
• psycopg2
• Oracle 10g
• cx_Oracle
sixfeetup.com/deploy2010
How Do I Install It?
• For MySQL add the following to buildout.cfg:eggs = RelStorage MySQL-Python
fake-eggs = ZODB3 = 3.7.1
[instance] type mysql db plone user plone host localhost password terriblepassword
sixfeetup.com/deploy2010
How Do I Install It? Cont.
• For PostgreSQL add the following to buildout.cfg:eggs = RelStorage
fake-eggs = ZODB3 = 3.7.1 psycopg2
[instance] type postgresql dbname plone user plone host localhost password terriblepassword
sixfeetup.com/deploy2010
Available Tools
• zodbconvert
• Converts from filestorage to {mysql/pgsql/oracle}
• Convert from {mysql/pgsql/oracle} to filestorage
• Convert from one Database to another (ie: mysql to oracle)
sixfeetup.com/deploy2010
zodbconvert.conf
<filestorage source> path /opt/default/zinstance/var/filestorage/Data.fs</filestorage>
<relstorage destination> <mysql> db plone user plone passwd terriblepassword </mysql></relstorage>
Converting from filestorage to MySQL
sixfeetup.com/deploy2010
Running zodbconvert
lnoldan$ sudo /opt/mysql/zinstance/bin/zodbconvert --clear zodbconvert.conf
Storages opened successfully.All transactions copied successfully.
sixfeetup.com/deploy2010
What’s the Catch?
sixfeetup.com/deploy2010
There Are Pitfalls
• Added complexity
• Additional server load
• Additional memory utilization
• The database is full of pickles, not plain text
• Your database still needs to be packed
sixfeetup.com/deploy2010
What We Talked About
• Zope storage engines: ZEO and RelStorage
• Why you might choose RelStorage
• How to install RelStorage
• Tools for RelStorage
• Why you might not use RelStorage
sixfeetup.com/deploy2010
Links
• http://pypi.python.org/pypi/RelStorage/1.4.0b3
• http://shane.willowrise.com/archives/relstorage-1-4-0b1-and-zodbshootout
sixfeetup.com/deploy2010
Credits:• http://www.flickr.com/photos/kaplanbr/
2465380377/
• http://www.flickr.com/photos/shuttercat7/416008944/
• http://www.flickr.com/photos/juniorvelo/3267647833/
• http://www.flickr.com/photos/arthurjohnpicton/4383221264/
• http://www.flickr.com/photos/generated/3249283352/
More info at:sixfeetup.com/deploy2010
sixfeetup.com/deploy2010