RelStorage
Note: Return to tutorial view.
Introduzione
RelStorage è un'implementazione di storage per ZODB, che memorizza i pickle in un database relazionale. Sono attualmente supportati PostgreSQL 8.1 e versioni successive (via psycopg2), MySQL 5.0 e versioni successive (via MySQLdb), e Oracle 10g (via cx_Oracle).
RelStorage sostituisce il progetto PGStorage.
Caratteristiche principali
- E' un sostituto già pronto all'uso ed equivalnte per FileStorage e ZEO.
- E' stato progettato per siti di grandi dimensioni: grazie a RelStorage un gran numero di istanze Zope possono condividere lo stesso database, similmente a ZEO, ma RelStorage non ha bisogno di ZEO.
- Come dimostrano alcuni test, RelStorage gestisce un'elevata concorrenza in modo migliore rispetto ad una combinazione standard di ZEO e FileStorage.
- Supporta l'undo e il packing.
- E' open source (ZPL 2.1).
Installazione in Zope
RelStorage non è ancora stato rilasciato, ma può essere scaricato da SVN usando il seguente comando:
svn co svn://svn.zope.org/repos/main/relstorage/trunk RelStorage
Si può anche inserire nel browser il seguente indirizzo:
http://svn.zope.org/relstorage/trunk/
Posiziona il pacchetto RelStorage nella directory lib/python di SOFTWARE_HOME oppure di INSTANCE_HOME.
Avrai bisogno dell'adapter Python per il database che vuoi usare. Installa psycopg2, MySQLdb 1.2.2+, o cx_Oracle 4.3+. Presta attenzione al fatto che Debian Etch gira con MySQLdb 1.2.1, ma quella versione ha un bug nel gestire BLOB che si manifesta solo con certi tipi di configurazione. MySQLdb 1.2.2 risolve il problema.
Prima di poter usare RelStorage, a ZODB deve essere applicata la patch per l'invalidation polling. Questa patch non ha effetto su ZODB eccetto quando viene usato RelStorage. Si spera che un fututo rilascio di ZODB includerà questa caratteristica. La seguente patch serve per Zope 2.10.5:
http://svn.zope.org/relstorage/trunk/poll-invalidation-1-zodb-3-7-1.patch
Per concludere, modifica l'etc/zope.conf della tua istanza Zope. Rimuovi il mount point principale e aggiungi uno dei seguenti blocchi. Per PostgreSQL:
%import relstorage
<zodb_db main>
mount-point /
<relstorage>
<postgresql>
# The dsn is optional, as are each of the parameters in the dsn.
dsn dbname='zodb' user='username' host='localhost' password='pass'
</postgresql>
</relstorage>
</zodb_db> Per MySQL:
%import relstorage
<zodb_db main>
mount-point /
<relstorage>
<mysql>
# Most of the options provided by MySQLdb are available.
# See component.xml.
db zodb
</mysql>
</relstorage>
</zodb_db> Per Oracle (10g XE nell'esempio):
%import relstorage
<zodb_db main>
mount-point /
<relstorage>
<oracle>
user username
password pass
dsn XE
</oracle>
</relstorage>
</zodb_db>
Sviluppi presenti e futuri
Sviluppi presenti e futuri
- Da gennaio 2008 RelStorage è in fase di sviluppo, fino ad ora ha passato tutti i test ZODB.
- Un primo rilascio è previsto per la fine di febbraio 2008.
- Gli sforzi sono attualmente concentrati nell'aumentare le prestazioni e abilitare una facile migrazione tra FileStorage e RelStorage.
- Rivolgi le tue domande su RelStorage sul suo wiki o attraverso la mailing list di zodb-dev.
Probabili domande frequenti
D: Come posso essere d'aiuto?
R: Il miglior modo di aiutare è testare il sistema e fornire abilità specifiche riguardo al database.
D: E' possibile accedere alle informazioni del database attraverso SQL?
R: No. Come FileStorage e DirectoryStorage, RelStorage immagazzina i dati come pickle, rendendo difficile per qualsiasi altro sistema che non sia ZODB interpretare i dati. Un progetto precedente chiamato Ape ha tentato di immagazzinare dati in modalità realmente relazionale, ma Ape alla fine lavorava troppo in contrasto rispetto ai principi di ZODB e quindi non poteva essere reso abbastanza affidabile per un uso normale. RelStorage, dall'altra parte, è molto più vicino ad un storage ZODB ordinario, ed è quindi molto più sicuro.
D: Un confronto tra le prestazioni di RelStorage con quelle di FileStorage?
R: Secondo i benchmark RelStorage con PostgreSQL è spesso più veloce rispetto a FileStorage, soprattutto sotto elevata concorrenza.
D: Perchè dovrei scegliere RelStorage?
R: Perché RelStorage è un sistema di piccole dimensioni che permette di costruire database di prima classe. Questi database hanno comprovato affidabilità e scalabilità, oltre a numerose opzioni di supporto.
D: RelStorage può rimpiazzare ZRS (Zope Replication Services)?
R: In teoria, sì. Con RelStorage, puoi utilizzare le caratteristiche originarie del tuo database. Tuttavia, questa proprietà non è ancora stata testata a dovere.
