RE: Runs y Logical Tapes

From: Manolo _ <mac_man2005(at)hotmail(dot)it>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Runs y Logical Tapes
Date: 2008-02-12 23:22:03
Message-ID: BAY112-W3318983D1522FA837EEB86E62B0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Efectivamente las cosas por un lado están mas fáciles de lo que parece. Los tapes ya se crean a la hora de establecer que pasando una cierta cantidad de datos pues mejor ordenarlos con el ES. [ http://doxygen.postgresql.org/tuplesort_8c-source.html#l00909 ] . Obvio que el espacio por cada tape se va aumentando a medida que se necesite.

Por otro lado te confirmo que si se puede leer al revez. Como te comentaba antes, postgres usa esa flag randomAcces que adjunta información adicional a las tuplas justamente para eso. Muy brevemente te comento que se añade la largueza de cada tupla antes y después de la misma tupla así que por uno u otro lado puedo leer primero el tamaño de la tupla y luego la tupla... espero haber sido claro sino me dices, por favor.

Ahora, si todo esta aclarado, mis preguntas:
1) ¿con la estructura de tapes existente puedo efectivamente escribir 2 runs a la vez, cada run en un tape diferente?
2) ¿puedo evitar de leer al revés al fin de llegar al inicio del run? es decir ¿puedo memorizar de alguna forma la dirección de la primera tupla de l run que estoy construyendo?

La pregunta 1) no es muy trivial. La estructura actual funciona perfectamente si escribimos secuencialmente un solo run a la vez. Temo que escribiendo en dos tapes diferentes ellos se puedan solapar a la hora de extender el uno u el otro.

Gracias por tu atención y por tu tiempo.
Un saludo!

> Hmm, creo que entiendo el punto. Me imagino que lo que deberias hacer
> es precisamente tener dos LogTapes, uno para cada run ... Lo que no
> tengo claro es si puedes leer un LogTape "al reves", es decir LIFO en
> vez de FIFO (me parece que ese es tu requerimiento pero no estoy
> seguro). Si necesitas leer al reves, entonces me parece que tendras que
> modificar LogTape para que pueda leer hacia atras y mantener el listado
> de bloques libres en sentido inverso. Dudo mucho que el codigo actual
> pueda hacer eso, porque me parece que para el ES tradicional no es
> necesario (aunque no estoy familiarizado con ES).
>
> Para crear el run final, simplemente puedes crear un tercer LogTape -- a
> medida que vayas leyendo los otros dos tapes, se ira reusando el
> espacio de la manera normal.
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-02-12 23:39:35 Re: Runs y Logical Tapes
Previous Message Alvaro Herrera 2008-02-12 23:00:44 Re: Performance y Postgresql.conf