zope
[Arriba] [Todas las Listas]

Re: [Zope] ZCatalog Rendimiento de consultas

To: zope@xxxxxxxx
Subject: Re: [Zope] ZCatalog Rendimiento de consultas
From: Tres Seaver <tseaver@xxxxxxxxxxxxx>
Date: Tue, 19 May 2015 06:50:51 -0400
Delivered-to: zope@xxxxxxxx
Delivery-date: Tue, 19 May 2015 06:57:50 -0400
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <A336F0B6-09FA-4A40-9D93-56F1B8CACBE6@taenzer.me>
List-archive: <http://mail.zope.org/pipermail/zope/>
List-help: <mailto:zope-request@zope.org?subject=help>
List-id: Users of the Z Object Publishing Environment <zope.zope.org>
List-post: <mailto:zope@zope.org>
List-subscribe: <https://mail.zope.org/mailman/listinfo/zope>, <mailto:zope-request@zope.org?subject=subscribe>
List-unsubscribe: <https://mail.zope.org/mailman/options/zope>, <mailto:zope-request@zope.org?subject=unsubscribe>
References: <E26DBC34-A29F-44C3-AAC6-02E93A96C7D7@taenzer.me> <mjajl4$6lm$1@ger.gmane.org> <A336F0B6-09FA-4A40-9D93-56F1B8CACBE6@taenzer.me>
Sender: "Zope" <zope-bounces@xxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
-----EMPEZAR PGP MENSAJE FIRMADO-----
*Hash: *SHA1

En 05/19/2015 04:54 AM, Sebastian *Tänzer escribió:

> Dejado’*s decir quiero mostrar un *accordion con todos los  acontecimientos de un mes que 
> muestra bastante dato sobre el acontecimiento (30-50 acontecimientos en una 
> página, plegable *jQuery *accordion). En el momento consigo los resultados
> y poner los objetos al conjunto de resultado *via *unrestrictedTraverse
> utilizando *getPath().  ser mejor a sólo conseguir el camino y conseguir el
> objeto en la plantilla? Hace esto hace cualquier rendimiento de diferencia
> sensato?

*Nope.  Haciéndolo código confiado dentro (un método real, y *ExternalMethod, o una
vista) sería más rápido que cualquiera un guión o una plantilla.  Lo mide
para decidir si para cambiar, aun así.

> Qué dato de los objetos de acontecimiento  mantengo tan *ZCatalog *meta columnas 
> y cuál no? La Documentación no es realmente útil en esto.

Es *super aplicación-*dependent.  Los costes para mantener "columnas"
extras de *metaata es relativamente pequeño (*bloating el objeto de Registro, y por
lo tanto su *pickle, mayoritariamente).

> La parte delicada es que los acontecimientos son enlazados con ubicaciones diferentes 
> (ubicación de acontecimiento, vendiendo puntos) que no son niños del objeto 
> de acontecimiento pero objetos en una carpeta diferente. El acontecimiento objeta él
> sólo mantiene los vínculos a estos objetos de ubicación y yo les consiguen cuándo
> *iterating sobre el resultado puesto en la plantilla.

Si puedes definir un URL-*addressible método del acontecimiento que regresos o redirige
a aquellos objetos, puedes conseguir fuera con duro-*wiring que en
vuestra plantilla, utilizando 'cerebro.*getPath()' Como prefijo.

> Cualquier consejo lo que sería la manera mejor para este rendimiento-sensato? Lo
> es *okay para conseguir el objeto él *via *traversal? Es allí una manera más rápida
> de conseguir el dato de objeto?

*Fetching El objeto es rápido si es ya en el *ZODB *cache, pero despacio
si no, *nd puede causar otro, objetos importantes" / más "populares para
ser *evicted.  Dónde posible, diseño para catalogar consultas que no necesitan a *fetch
el objeto.



*Tres.
- -- 
===================================================================
*Tres *Seaver          +1 540-429-0999          tseaver@xxxxxxxxxxxxx
*Palladion Excelencia   "de Software por Diseño"    *http://*palladion.*com
-----EMPEZAR FIRMA de PGP-----
Versión: *GnuPG *v1.4.11 (*GNU/Linux)

*iQIcBAEBAgAGBQJVWxWLAAoJEPKpaDSJE9*HY0*aQP/1*mC0*Ll5//*c24*XQPcvMwS18*Y
/*gZfOe/*IeL61*CRrI2*Sv+*RMQ6*N6*gXpL8*oM/*KsWU2*wphfPVYC96*VxiD28*ubhmWVk+*f
*GFbmN4*YchYSNHND2*kzcjxyHd1+*U6+*c/*NhkcfgL9*GtLZBsSNtMZut2*pV7*sN7*VvjhJ
0F1*Kwu6*HxZ5*yvEjZOk0*tzDfrhh0yo4*Y3*elFTwJkHXq/*Z/3*xN+*NTVNpYXRAw5*AWGJC
#Uno0*Y/*ll/*cx1+*JIKlMbjhMNqG+*k61*JGD8*MdZXIvBwJ7*jij1*VIGYfYG5/7*wZieMjCTL
/*SBMkOnODchSzSk2*wV1*B0*ZgpbgTf+*DYuZRzKCrYc7*QOktfQhqEBOS5*ljIjpWkDcq
*wqsxPBD0*uyu/*K3+*dd4*egL3*Fcvg5*DDfm9//*Qo2*B8*JAkLWO5*XeJ4*UiyZHLYWZXSpXI
*SdjL2*zFnhTZhp9*pxIv+*V4*W/*XrzMEDAr3*UOFlrikiGd4*oxTBffFuxuSr2*mvpqshTQ
*TaS8*Vgty9*SmqMaPuvMZPc7*FoPExsC4*k4*sNO9*XgSXKT/5*xo3*FErLTWVCL1/*qVHN3yo
6*wHvSrh8*n1*Z/*m60*P6*OaUzIHF/97*sjbxOO75*d0*RZCnaTFWt2*TizrrsrwaBZ2*p6*Yyo
83*l5*QxPLDge6*EZNb1*MMewZ9*vW8*EamDhkR2*pKTsQTEVDj2*p4*gVhmh+*J5*pjN6*BKj50
*D98*HPv4*JrWhf965/Paga4
=*Sv38
-----FIRMA de PGP del FIN-----

_______________________________________________
*Zope *maillist  -  Zope@xxxxxxxx
*https://correo.*zope.*org/*mailman/*listinfo/*zope
**   #Ninguno correos de cruz o HTML *encoding!  **
(Listas relacionadas -
 *https://correo.*zope.*org/*mailman/*listinfo/*zope-Anunciar
 *https://correo.*zope.*org/*mailman/*listinfo/*zope-*dev )
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/19/2015 04:54 AM, Sebastian Tänzer wrote:

> Let’s say I want to display an accordion with all events of a month 
> displaying quite a lot of data about the event (30-50 events on one 
> page, collapsible jQuery accordion). At the moment I get the results
> and put the objects into the result set via unrestrictedTraverse
> using getPath(). Would it be better to only get the path and get the
> object in the template? Does this make any difference performance
> wise?

Nope.  Doing it in trusted code (an actual method, and ExternalMethod, or
a view) would be faster than either a script or a template.  Measure it
to decide whether to switch, however.

> Which data of the event objects would I keep as ZCatalog meta columns 
> and which not? Documentation is not really helpful on this.

It is super application-dependent.  The costs for maintaining "extra"
columns of metaata are relatively small (bloating the Record object, and
therefore its pickle, mostly).

> The tricky part is that events are linked with different locations 
> (event location, selling points) that are not children of the event 
> object but objects in a different folder. The event object itself
> only keeps the links to these location objects and I get them when
> iterating over the result set in the template.

If you can define a URL-addressible method of the event which returns or
redirects to those objects, you can get away with hard-wiring that in
your template, using 'brain.getPath()' as a prefix.

> Any advice what would be the best way for this performance-wise? Is
> it okay to get the object itself via traversal? Is there a faster way
> to get the object data?

Fetching the object is fast if it is already in the ZODB cache, but slow
if not, nd may cause other, more "popular" / important objects to be
evicted.  Where possible, design for catalog queries which don't need to
fetch the object.



Tres.
- -- 
===================================================================
Tres Seaver          +1 540-429-0999          tseaver@xxxxxxxxxxxxx
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJVWxWLAAoJEPKpaDSJE9HY0aQP/1mC0Ll5//c24XQPcvMwS18Y
/gZfOe/IeL61CRrI2Sv+RMQ6N6gXpL8oM/KsWU2wphfPVYC96VxiD28ubhmWVk+f
GFbmN4YchYSNHND2kzcjxyHd1+U6+c/NhkcfgL9GtLZBsSNtMZut2pV7sN7VvjhJ
0F1Kwu6HxZ5yvEjZOk0tzDfrhh0I4Y3elFTwJkHXq/Z/3xN+NTVNpYXRAw5AWGJC
A0Y/ll/cx1+JIKlMbjhMNqG+k61JGD8MdZXIvBwJ7jij1VIGYfYG5/7wZieMjCTL
/SBMkOnODchSzSk2wV1B0ZgpbgTf+DYuZRzKCrYc7QOktfQhqEBOS5ljIjpWkDcq
wqsxPBD0uyu/K3+dd4egL3Fcvg5DDfm9//Qo2B8JAkLWO5XeJ4UiyZHLYWZXSpXI
SdjL2zFnhTZhp9pxIv+V4W/XrzMEDAr3UOFlrikiGd4oxTBffFuxuSr2mvpqshTQ
TaS8Vgty9SmqMaPuvMZPc7FoPExsC4k4sNO9XgSXKT/5xo3FErLTWVCL1/qVHN3I
6wHvSrh8n1Z/m60P6OaUzIHF/97sjbxOO75d0RZCnaTFWt2TizrrsrwaBZ2p6Yyo
83l5QxPLDge6EZNb1MMewZ9vW8EamDhkR2pKTsQTEVDj2p4gVhmh+J5pjN6BKj50
D98HPv4JrWhf965/Pay4
=Sv38
-----END PGP SIGNATURE-----

_______________________________________________
Zope maillist  -  Zope@xxxxxxxx
https://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope-dev )
<Anterior por Tema] Tema Actual [Siguiente por Tema>