¿Como compactar la ZODB de sitio Plone?

Autor(es):Leonardo J. Caballero G.
Correo(s):leonardocaballero@gmail.com
Lanzamiento:0.1
Fecha:16 de Feb del 2013

¿En que consta compactar la ZODB?

Compactar la ZODB remueve las versiones de objetos viejos. Similar a un VACUUM en PostgreSQL.

Todo

Terminar este concepto.

Compactar la ZODB con tareas crontab

Para esto utilizaremos configuraciones para programar tareas con crontab para el compactación de la ZODB.

A continuación se describen dos ejemplos útiles:

Usando Zope standalone y zc.buildout

Si tu instalación es una Zope standalone y estas usando zc.buildout debes crearte un script que cada cierto tiempo realice tareas de compactar la ZODB, a continuación un ejemplo de configuración:

# Pack once a month
[zodbpack]
recipe = collective.recipe.template
output = ${buildout:bin-directory}/zodbpack
mode = 600
input = inline:
    wget -O/dev/null -q --post-data='days:float=10' --user=admin --password=admin http://localhost:8080/Control_Panel/Database/main/manage_pack

# Pack once a month
[packups]
recipe = z3c.recipe.usercrontab
times = 0 0 1 * *
command = ${buildout:bin-directory}/bin/zodbpack

Usando ZEO y zc.buildout

Si tu instalación es un ZEO Cluster y usando zc.buildout puede usar el script llamado zeopack que ofrece esta instalación para que cada cierto tiempo realice tareas de compactar la ZODB, a continuación un ejemplo de configuración:

Truco

Un script zeopack sera generado para usted en el directorio bin del proyecto buildout, a menos que usted cambien eso con la opción zeopack-script-name, en este caso el script sera llamado como el nombre que usted especifique en este parámetro.

[backup]
recipe = collective.recipe.backup

# Backup daily
[backups]
recipe = z3c.recipe.usercrontab
times = 0 0 * * *
command = ${buildout:bin-directory}/bin/backup

# Pack once a month
[packups]
recipe = z3c.recipe.usercrontab
times = 0 0 1 * *
command = ${buildout:bin-directory}/bin/zeopack

Truco

Si le gustaría usar este script para compactar un punto de montaje diferente, usted necesitara especificar el parámetro -S nombre_punto_montaje. Usted puede especificar la opción -B para no usar el por defecto directorio blob.

Compactando sin crontab

Existe otra forma de realizar tareas de compactar la ZODB automáticamente sin usar tareas crontab.

Para esto agregue el producto Products.ClockServer en su seccion egg en su archivo buildout.cfg.

Además agregue la siguiente configuración en la sección instance en su archivo buildout.cfg como se muestra a continuación:

zope-conf-additional =
    <clock-server>
      method /pack_it_all
      period 86400
      user admin
      password password
      host localhost
   </clock-server>

Ejecute de nuevo el buildout y luego inicie el servidor Zope, entonces diríjase al raíz de Zope desde la ZMI, y cree un “Script(Python)” con el id pack_it_all y agregue en su contenido algo como esto:

dbs = context.Control_Panel.Database
names = dbs.getDatabaseNames()

for name in names:
  if name != 'temporary':
    dbs[name].manage_pack(days=3)
    print "packed %s" % name

return printed

Con esto se compactara la ZODB cada tres días.




Editar este documento

El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.

  1. Valla a ¿Como compactar la ZODB de sitio Plone? en GitHub.
  2. Presione el botón Fork. Este creara su propia copia personal de la documentación.
  3. Edite los archivos usando el editor de texto de GitHub desde su navegador Web
  4. Rellene en la caja de texto Commit message al final de la pagina indicando por que usted realizo estos cambios. Presione el botón Propose file change próximo a ese cuando allá finalizado.
  5. Luego diríjase a la página Send a pull request (no será necesario rellenar ningún texto adicional). Sólo tiene que pulsar el botón Send pull request.
  6. Sus cambios ahora sera consultados para un revisor dentro de la pestaña Pull requests del proyecto en Github.

Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.