From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Manolo _ <mac_man2005(at)hotmail(dot)it> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Runs y Logical Tapes |
Date: | 2008-02-12 21:24:45 |
Message-ID: | 20080212212445.GR14683@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Manolo _ escribió:
>
> Yendo un poquito mas alla con la implementación de esas mismas
> estructuras pues tengo dudas sobre si puedo volver a leer el run que
> acabo de contruir.
> Queda claro que eso se puede facilmente obtener en cuando haya
> terminado dicho run: tengo su ultima tupla a la mano y como postgres
> me permite el "backward reading" (leer la tupla que precede a una
> cirta tupla) pues puedo llegar al principio del run leyendo al revez
> tupla tras otra. Obvio no es una manera muy eficiente para llegar al
> principio del run.
El problema es que una LogicalTapeSet se puede usar para mas de una
LogicalTape -- esto es crucial porque las LogicalTape, una vez que las
has leido, "liberan" el espacio de la LogicalTapeSet, de manera que una
LogicalTape distinta puede usar ese mismo bloque.
A eso me refiero con que "no se puede volver atras". En alguna parte de
logtape.c se menciona que las lecturas son "destructivas".
> La alternativa seria: en cuando comienze a construir un cierto run
> (accomodandolo en su tape correspondiente) pues quiero memorizar la
> direccion [en disco? en tape?] de la primera tupla de ese mismo run,
> de manera tal que una vez ultimado ese run esa cosa me permita acceder
> directamente al principio del run y leerlo justamente a partir de su
> primera tupla. Eso si se puede hacer?
No estoy seguro.
> Por otro lado comentas que no es posible "rebobinar". Me gustaria
> profundizar ese tema. No creo que te refieras a la imposibilidad de
> leer la tupla anterior de una cirta tupla: eso es posible gracias a la
> flag 'randomAcces'. Contrariamente a lo que pueda indicar ese nombre,
> tal flag nada mas permite un "backward reading" ademas del "forward
> reading" usado mas frequentemente por postgres.
Aqui estas confundiendo TupleStore con LogTape ...
> No se cuanto me pueda ayudar la estructura BufFile para poder
> memorizar temporalmente esa direccion y volver a retomarla cuando
> termine de escribir ese run.
... y aqui estas mezclando niveles de abstraccion diferentes. Una
LogicalTape se implementa usando LogicalTapeSet. Una LogicalTapeSet se
implementa usando BufFile. Sugiero mantener las capas logicamente
independientes.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Manolo _ | 2008-02-12 21:54:47 | RE: Runs y Logical Tapes |
Previous Message | Nicolás Domínguez Florit | 2008-02-12 21:24:33 | Re: psql 8.3.0, error con usuario |