Si desea escalar en varias máquinas virtuales, es posible que desee echar un vistazo a GemStone/S.
Tenga en cuenta, sin embargo, que GemStone es un proprietary, commercial product. Entonces, usted tendrá para pagarlo. Sin embargo, el modelo de fijación de precios generalmente está diseñado de tal manera que si usted necesita una edición más grande, entonces generalmente también tendrá los usuarios pague para esa edición. Los precios comienzan en 0 $ para la versión de 4 GiByte disk/1 GiByte RAM/1 CPU.
Otra cosa a tener en cuenta es que GemStone Smalltalk es su propio dialecto, por lo que su código Squeak probablemente no se ejecutará sin modificaciones, pero debería ser bastante fácil de portar. (Por ejemplo, los ingenieros de GemStone han creado un adaptador que le permite cargar paquetes de Monticello (sistema de control de versiones de Squeak) en GemStone/S, también generalmente se aseguran de que Seaside se ejecute).
Entonces, ¿qué es GemStone? Básicamente, es una VM distribuida con persistencia automática de objetos. Es más fácil de explicar que una máquina virtual Smalltalk normal. Si tiene dos VM de Smalltalk ejecutándose una al lado de la otra, cada una de ellas tiene su propia memoria de objeto (es decir, la que administra el recolector de basura). Y esa memoria de objeto está en RAM. En GemStone, todas las máquinas virtuales de un clúster comparten el mismo Memoria de objetos y que vive en el disco, no en la RAM. Entonces, usted no necesita una base de datos, ni siquiera una orientada a objetos, porque sus objetos están "ahí", en todas partes, todo el tiempo.
(Eso es sólo una descripción muy simplista. Por ejemplo, el montón no es realmente compartidos a través de las máquinas virtuales. Eso no tendría sentido, que no desea replicar cada objeto temporal se crea a través de la red. En lugar , tiene un objeto de repositorio global (básicamente, un diccionario) y al igual que el recolector de basura comenzará en algún objeto raíz conocido y luego mantendrá todos los objetos accesibles desde allí, y eliminará los que no lo sean, GemStone se iniciará en el objeto de repositorio global, y persistir/replicar solo los objetos a los que se puede acceder desde allí)
GemStone también tiene características de base de datos, por lo que tiene acceso al representante global ository está envuelto en transacciones ACID, y hay un lenguaje de consulta Smalltalkish inspirado en SQL.
GemStone tiene un buen dispositivo que llaman "GLASS" (para GemStone, Linux, Apache, Seaside y Smalltalk) análogo al conocido "LAMP" (Linux, Apache, MySQL y PHP). GLASS incluye la edición gratuita de GemStone con Seaside preinstalado y todo configurado con Apache ejecutándose sobre Xubuntu, todo perfectamente empaquetado en una imagen de disco VMWare.
Estoy completamente de acuerdo, GemStone/S es el camino a seguir. –
Interesante ... así que si tuviera una colección con 10 millones de objetos contenidos en ella ¿estaría la colección * completa * en mi memoria local? - Solo intento averiguar dónde estarán mis datos. – KHWP
Toda la colección no tiene que estar en _local_ memory ... los objetos grandes se implementan internamente utilizando btrees (básicamente) para que las colecciones parciales puedan cargarse en la memoria local; su conjunto de trabajo se guarda en la memoria local y el resto en el disco –