Una de las cosas que más me joden (y creo que la mayor parte del mundo
concuerda en esto) es el laburo extra que representa tener que
persistir los objetos cuando se depende de bases de datos relacionales.
La solución que propone Smalltalk a la persistencia me parece muy
copada: todos los objetos son persistentes, y siempre y cuando me
encargue de grabar la imagen puedo cerrar y volver a abrir teniendo la
seguridad de que los objetos van a estar ahí cuando vuelva.
Sin embargo, todavía dependo de las bases de datos cuando la cantidad
de objetos crece demasiado, porque cargar todo a memoria resulta
ineficiente.
Por ahi lo que voy a decir a continuación es una burrada, o alguien lo
probó y no funcionó, o por ahi existe y yo no lo conozco, pero...
¿No estaría bueno un Smalltalk que trabaje directamente con el disco y
use la memoria Ram como caché?
De esta forma todos los objetos serían persistentes de forma
transparente, con la ventaja de poder tener miles o millones de
objetos en la imagen sin llenar la memoria RAM (¡y adiós a las bases
de datos! :D).
Obviamente sería más lento dados los tiempos del disco y de la memoria
ram, ¿pero si se implementa de la manera correcta no podría tener una
performance aceptable?
Digo, se podría trabajar en memoria y periódicamente (cuando impacte
menos en el rendimiento) un objeto podría volcar ese trabajo en disco
(tipo el garbage collector pero al reves).
Asimismo, habría que ampliar el comportamiento del garbage collector
para que libere espacio en disco y no sólo en Ram.
O sea, no se cómo hacerlo, pero igual me pareció una buena idea.