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 21:01:06
Message-ID: BAY112-W25415C3F64535C4986BA0E62B0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Como bien dices, tales los comentarios son un buen punto de inicio.
Por otro lado, lo que explicas me confirma que entendí bien los conceptos "abstractos" de esas estructuras de datos.

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.

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?

Si me explico?

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.

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.

> Lamentablemente, creo que si no consigues que alguien que realmente
> entienda la implementacion (Simon Riggs, Tom Lane, Greg Stark, ...) te
> ayude, es dificil que puedas llegar muy lejos.
>
> En todo caso creo que los comentarios al inicio de logtape.c lo explican
> bien: se trata de archivos divididos en bloques en los cuales se escribe
> una vez y se lee una vez. Los runs usan tapes; una vez que lees del
> tape no puedes rebobinar para volver leer. Un LogicalTape es una cinta,
> que va dentro de un LogicalTapeSet. Un LogicalTapeSet es una
> abstraccion que permite meter varias cintas en un (conjunto de)
> archivo.
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
> --
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Nicolás Domínguez Florit 2008-02-12 21:24:33 Re: psql 8.3.0, error con usuario
Previous Message Alvaro Herrera 2008-02-12 18:06:44 Re: Runs y Logical Tapes