Plone on RelStorage

22
Plone on RelStorage Calvin Hendryx-Parker PLONE CONFERENCE 2010 Saturday, October 30, 2010

description

In this presentation we will discuss what Relstroage is, and the effect it can have on your Plone site. We will compare different Relstorage backends (MySQL and PostgreSQL) and how they perform compared to the default filestorage. We will also discuss why you may or may not want to use Relstorage in your environment. We will also review any changes you will need to make to your environment to maintain Relstorage.

Transcript of Plone on RelStorage

Page 1: Plone on RelStorage

Plone on RelStorageCalvin Hendryx-Parker

PLONE CONFERENCE 2010

Saturday, October 30, 2010

Page 2: Plone on RelStorage

PLONE CONFERENCE 2010Overview

• How does Zope store data

• Why RelStorage?

• How to implement RelStorage

• Some reasons not to use RelStorage

Saturday, October 30, 2010

Page 3: Plone on RelStorage

PLONE CONFERENCE 2010Zope StorageMethods

Saturday, October 30, 2010

Page 4: Plone on RelStorage

PLONE CONFERENCE 2010What is the ZODB?

• Object oriented database

• Used by Zope to hold everything from contentto scripts, to service configurations

Saturday, October 30, 2010

Page 5: Plone on RelStorage

PLONE CONFERENCE 2010What 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

Saturday, October 30, 2010

Page 6: Plone on RelStorage

PLONE CONFERENCE 2010What is RelStorage?

• Drop in replacement

• Replaces ZEO

• Eliminates Data.fs

• Stores pickles

• Is still ZODB

• Uses relational databases

Saturday, October 30, 2010

Page 7: Plone on RelStorage

PLONE CONFERENCE 2010Why Change?

Saturday, October 30, 2010

Page 8: Plone on RelStorage

PLONE CONFERENCE 2010Advantages 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

• High Concurrency

Saturday, October 30, 2010

Page 9: Plone on RelStorage

PLONE CONFERENCE 2010Real World

• Major Health System Site

• Java portion of site locked up

• Restarted Serivce with Little Impact

Saturday, October 30, 2010

Page 10: Plone on RelStorage

PLONE CONFERENCE 2010Databases Supported

• MySQL 5.0.32 or better

• MySQLdb >= 1.2.2

• PostgreSQL 8.1 or better

• psycopg2

• Oracle 10g

• cx_Oracle

Saturday, October 30, 2010

Page 11: Plone on RelStorage

PLONE CONFERENCE 2010How 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

Saturday, October 30, 2010

Page 12: Plone on RelStorage

PLONE CONFERENCE 2010How Do I Install It?• 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

Saturday, October 30, 2010

Page 13: Plone on RelStorage

PLONE CONFERENCE 2010Options• blob-dir

• shared-blob-dir

• keep-history

• replica-conf

• pack-gc

• pack-dry-run

• cache-servers

Saturday, October 30, 2010

Page 14: Plone on RelStorage

PLONE CONFERENCE 2010Available 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)

• zodbpack

• Allows concurrent connections

• Use from cron

Saturday, October 30, 2010

Page 15: Plone on RelStorage

PLONE CONFERENCE 2010zodbconvert.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

Saturday, October 30, 2010

Page 16: Plone on RelStorage

PLONE CONFERENCE 2010Running zodbconvert

$ sudo /opt/mysql/zinstance/bin/zodbconvert --clear zodbconvert.conf

Storages opened successfully.All transactions copied successfully.

Saturday, October 30, 2010

Page 17: Plone on RelStorage

PLONE CONFERENCE 2010What’s the Catch?

Saturday, October 30, 2010

Page 18: Plone on RelStorage

PLONE CONFERENCE 2010There 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

Saturday, October 30, 2010

Page 19: Plone on RelStorage

PLONE CONFERENCE 2010What We TalkedAbout• Zope storage engines: ZEO and RelStorage

• Why you might choose RelStorage

• How to install RelStorage

• Tools for RelStorage

• Why you might not use RelStorage

Saturday, October 30, 2010

Page 20: Plone on RelStorage

PLONE CONFERENCE 2010Links

• http://pypi.python.org/pypi/RelStorage

• http://shane.willowrise.com/archives/relstorage-1-4-0b1-and-zodbshootout

Saturday, October 30, 2010

Page 22: Plone on RelStorage

Check out

sixfeetup.com/demos

Saturday, October 30, 2010