2009-07-07 10 views
11

Así que he estado usando Smalltalk durante aproximadamente 6 meses (Squeak y Pharo), principalmente haciendo análisis de datos, y estoy a punto de comenzar mi primera aplicación Seaside. Entonces, mi pregunta para todos ustedes, Smalltalkers, es cuál es su solución de persistencia favorita. He estado mirando a Magma, GOODS y GLORP. Soy un pirata informático pitón desde hace mucho tiempo, así que obtengo ORM, pero parece que Magma o GOODS serían una mejor solución, ya que parecen orientados a objetos.Magma, GOODS, GLORP, o alguna otra cosa?

Una nota rápida: quiero escalar mi aplicación a través de varias máquinas virtuales, por lo que no bastará con guardar los datos en la imagen.

Gracias!

Respuesta

12

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.

+0

Estoy completamente de acuerdo, GemStone/S es el camino a seguir. –

+0

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

+0

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 –

1

Si puede elegir, también elegiría CRISTAL o Magma (depende de qué tan grande sea el proyecto).

Tenga en cuenta que GLorp en Squeak solo funciona con PostgreSQL. Desarrollamos SqueakDBX, que es un controlador de base de datos para comunicarse con la mayoría de las bases de datos. Ahora estamos modificando Glorp para que pueda usarlo con todos ellos (no solo PostgreSQL). Pero esto no será hasta finales de este año.

3

GLASS solo realmente no ayuda a darle una visión general de sus datos. SandstoneDB lo hace. Puede usar SandstoneDB con GOODS y GLASS, (o incluso solo), dependiendo de la cantidad de dinero que desea gastar (Sandstone es gratuito en todos los sentidos, GLASS es comercial, pero gratis como en cerveza gratis para instalaciones pequeñas).

Echa un vistazo the sandstoneDB page. Y aquí está the adaptor for GOODS. Para usar SandstoneDB con GLASS, simplemente cambie la tienda a SDMemoryStore, vea los comentarios de la clase en SDMemoryStore en SandstoneDB.

Cuestiones relacionadas