[HACK] Persistent Computing

merce illadeltresor at gmail.com
Fri Jan 25 12:40:07 CET 2008


04/04/07 11:03:15


LLEGAN LOS PROGRAMAS QUE NO PIERDEN DATOS CUANDO SE VA LA LUZ


Mercè Molist
Es el más típico accidente de los usuarios de ordenadores: estar
escribiendo un documento, llevar rato sin guardarlo y, de repente,
falla la corriente eléctrica y se pierden aquellos valiosos datos.
Un nuevo concepto informático, la "persistencia", permite crear
programas que aún después de haberse cerrado por accidente conservan
la información intacta.

Una conocida aplicación de la "informática persistente" es la
funcionalidad de hibernación de los ordenadores portátiles: cuando
hace rato que no se usan se apagan solos pero, si se activan de
nuevo, vuelven a donde estaban, con los mismos programas abiertos y
los datos contenidos en ellos.

Algo parecido sucede con algunos PDA o los teléfonos móviles con
sistema operativo Symbian: usan técnicas de persistencia para que,
cuando se acabe la batería, no se pierda el mensaje que estábamos
escribiendo. Otro ejemplo, más primitivo, son los navegadores que al
reiniciarse "recuerdan" las direcciones web que había en las
pestañas abiertas.

"En un programa tradicional, los datos se almacenan separados y
deben ser cargados y salvados de forma explícita. En un sistema de
persistencia, el programa es virtualmente eterno en el sentido de
que, si lo paras y lo lanzas de nuevo, sigue con exactamente los
mismos datos en memoria, sin que los hayas grabado", explica Jesús
Cea, único representante conocido de esta tendencia en España.

La informática persistente no precisa de un "hardware" especial, ni
de nuevos lenguajes de programación, consiste simplemente en
escribir los programas de otra manera, usando caminos que existen
pero no se habían aprovechado: "Las memorias de ferrita de los
primeros ordenadores comerciales, en los años 50, ya eran
persistentes pero hasta ahora no se ha empezado a vislumbrar el
concepto", asegura Cea.

Aunque parezca magia, no lo es, explica: "En realidad, cada cambio
que hacemos en el fichero se graba en el disco duro. Pero quien
graba estos datos no es el programa, que no lo ve ni lo nota, sino
la infraestructura, que puede ser el sistema operativo o una
librería. Esta es la clave de que los programas persistentes se
escriban de otra forma, porque aprovechan la infraestructura de otra
manera".

Así, el programa no participa en el proceso de grabación y
recuperación de datos. "Trabaja como si lo tuviese todo en memoria",
explica Cea y pone un ejemplo: "Un dibujo grabado en el disco duro
es un objeto .jpg, pero en memoria son colores, pixels, etc. Un
programa "eterno" trabaja con lo que está en memoria".

Otro ejemplo son las bases de datos: "Cuando alguien entra en un
blog y pide la entrada número 17, el programa debe conectarse a la
base de datos, pedir el objeto 17, la base de datos se lo da y el
programa lo convierte a un formato que pueda ver el usuario. Si
tienes estos datos siempre en memoria, no debes ir a buscarlos a
ninguna parte, el programa se ahorra estos pasos".

Aunque los programas "eternos" no significan el fin de las bases de
datos como almacenes de información, "sí lo son si piensas en una
base de datos relacional, como SQL, donde el programa va a buscar la
información. Desde que uso "software" persistente, no he vuelto a
necesitar SQL", asegura Jesús Cea.

Pero, ¿cómo se mete en memoria toda una base de datos? "Funciona
como la memoria virtual: cuando lanzas el programa, se van cargando
en memoria los objetos que va referenciando. Cuando la caché está
llena, se elimina lo que hace tiempo que no se usa. Pero el programa
sigue viendo todo como si estuviese en memoria y trabajando en
consecuencia, aunque "por debajo" las cosas sean distintas".

De esta forma, explica, "el programa funciona mejor, porque no
necesita grabar ni cargar nada, y es más fácil de escribir para el
programador, que no se tiene que preocupar de estos detalles". A
pesar de ello, son pocos los programadores que utilizan la
informática persistente. La razón, según Cea, es que "exige un
cambio de mentalidad, programar en otro estilo".

David Binger, fundador del Proyecto Durus, un paquete de "software"
libre para programas persistentes, lo atribuye a "la tendencia de
los programadores a usar las tecnologías más populares, después de
todo es lo que van a pedirles en sus trabajos". Aún así, la
persistencia gana adeptos: "Al ser programas muy simples, son más
seguros".

El concepto de "informática persistente" es muy nuevo y, como todo
invento revolucionario, avanza lentamente, explica Binger: "Se
popularizó en los círculos informáticos en los años 80 y, a finales
de los 90, empezaron a aparecer herramientas de programación
dirigidas a crear sistemas persistentes, como ZODB o Durus en Python
e Hibernate en Java".

Binger creó Durus para su negocio, "MEMS and Nanotechnology
Exchange", dedicado a la fabricación de prototipos para máquinas
nanotecnológicas: "Necesitábamos manejar mucha información en
condiciones "sensibles", incluso si fallaba el suministro eléctrico,
y que nuestros programas pudiesen acceder a los objetos que
necesitasen a una gran velocidad".



Página de Jesús Cea sobre persistencia
http://www.argo.es/~jcea/artic/persistencia01.htm

Qué es la informática persistente
http://en.wikipedia.org/wiki/Persistence_(computer_science)

MEMS and Nanotechnology Exchange
http://www.mems-exchange.org/



Copyright 2007 Mercè Molist.
Verbatim copying, translation and distribution of this entire
article is permitted in any digital and no commercial medium,
provide this notice is preserved.





More information about the hacking mailing list