RelStorage: uno, (nessuno?) e centomila Zope Client
RelStorage è uno storage alternativo per ZODB, che, invece di usare un unico file binario (Data.fs), adotta un DB relazionale.
Il database a oggetti di Zope è uno dei cardini dello sviluppo di applicazioni Zope. Ci si dimentica di dover "memorizzare" informazioni.. Zope lo fa per noi in modo trasparente.
Certo, non si può completamente dimenticare che da qualche parte quelle informazioni devono finire, ma normalmente basta sapere che esiste un bel file binario, chiamato Data.fs, che Zope gestisce per noi con un completo DBMS a Oggetti, lo ZODB appunto, che può essere anche usato separatamente da Zope [http://pypi.python.org/pypi/ZODB3].
Solitamente, chi è alle prime armi ignora che lo ZODB dispone di diverse possibilità di storage: se per qualche motivo il FileStorage, che di default si manifesta con il file unico Data.fs, non ci dovesse "piacere", esistono delle alternative più o meno supportate e diffuse, tra cui una delle più note è DirectoryStorage [http://dirstorage.sourceforge.net].
Non starò a commentare i perchè delle scelte che portano, eventualmente, a sostituire lo storage di default usato da Zope, ma voglio segnalare uno storage che in questi ultimi mesi ha riscosso una certa attenzione intorno a sè: RelStorage [http://pypi.python.org/pypi/RelStorage], giunto alla sua versione 1.1.3.
Shane Hathaway [http://shane.willowrise.com/about], il suo creatore, è uno sviluppatore Zope di lunghissimo corso, e ha avuto diverse precedenti analoghe esperienze (PGStorage, APE), di cui si è avvalso nell'architettare e realizzare RelStorage, che appunto mira ad usare un DB relazionale come backend di storage per ZODB.
Questo è da sempre un suo pallino in quanto è convinto che sotto varie condizioni, un DB relazionale offra possibilità e garanzie maggiori di quanto possa fare un singolo file o, anche fosse, un file system.
Tanto per citare alcune evidenze, RelStorage offre la replicabilità di ZEO, senza bisogno di ZEO, inoltre, almeno sulla carta, il collo di bottiglia che in ZEO sarebbe lo ZEO server, dovrebbe essere facilmente superato adottando le ben più mature tecnologie di replica del mondo relazionale.
L'autore suggerisce di adottare RelStorage soprattutto per nei casi in cui si hanno portali caratterizzati da alta concorrenza, in quanto i test sembrano dimostrare un chiaro miglioramento delle performance rispetto a FileStorage. Inoltre sottolinea come poche righe di codice consentono di avvalersi delle caratteristiche di scalabilità e affidabilità di ben noti DB relazionali per le nostre informazioni.
Aggiungo del mio.. Vero! Non so quante volte i neofiti con cui sono venuto a contatto sarebbero stati in pace con sè stessi, se solo avessero saputo le loro informazioni "al sicuro" in un "normale" DB relazionale, invece che in un oscuro file binario. Be'.. tutto sommato RelStorage merita attenzione :D.
Provate a fargli fare un giro, magari seguendo i passi percorsi da me.. http://redomino.com/it/labs/documentazione/how-to/installare-relstorage-1-1-3-usando-buildout.
- Nota:
- A oggi, l'unica mia vera remora nell'adottarlo senza indugio consiste nella non ancora avvenuta integrazione con il blob support di ZODB [http://shane.willowrise.com/archives/relstorage-11-all-green/#comment-586], che consente di tenere fuori dal database i file binari, con un notevole risparmio di risorse, rispetto ad averli inglobati nei pickle degli oggetti memorizzati.
