Replicación en GemStone

40 views
Skip to first unread message

GallegO

unread,
Dec 2, 2008, 3:00:57 PM12/2/08
to clubSm...@googlegroups.com
Para los GemStone users:

No puedo creer que no exista una forma de replicar un repositorio en
forma automática. ¿Es realmente así?
En la documentación no vemos nada que indique que podemos replicar o
distribuir repositorios.
Tampoco veo info sobre como exportar objetos de un repositorio y
montarlos en otro, si bien esto se puede resolver con serialización no
encontré que haya soporte de base.

Me gustaría saber cómo resuelven estos problemas, si existen claro está.

Saludos y Gracias!
GallegO

Andres Valloud

unread,
Dec 2, 2008, 3:00:48 PM12/2/08
to clubSm...@googlegroups.com
Buenas...

2008/12/2 GallegO <fxga...@gmail.com>:


>
> Para los GemStone users:
>
> No puedo creer que no exista una forma de replicar un repositorio en
> forma automática. ¿Es realmente así?

De lo poco que se, lo que me viene a la mente es pasar los transaction
logs a otro lado donde haya un mirror del repositorio y ejecutarlos en
el mirror en forma paralela con la base de produccion.

Andres.

Nahuel Silva

unread,
Dec 3, 2008, 5:41:30 AM12/3/08
to clubSm...@googlegroups.com
MMMmmm si hacés un backup y después un restore ? Si no copiate los dbf a lo cabeza, funciona de diez :D eso si fijate que no esté levantado el repositorio sino explota.

Ah, sino lista de gemstone te responde jemes foster al toque :)

Salutti

Hernan Wilkinson

unread,
Dec 3, 2008, 6:15:08 AM12/3/08
to clubSm...@googlegroups.com


2008/12/2 GallegO <fxga...@gmail.com>


Para los GemStone users:

No puedo creer que no exista una forma de replicar un repositorio en
forma automática. ¿Es realmente así?

No se a que te referís exactamente con replicar un repositorio en forma automática, pero te comento las opciones:
1) Si querés tener una copia de todos los archivos (el repositorio) que gemstone usa para guardar los objetos de manera automática, o sea, copiar real de los archivos del repositorio, tenes las opciones DBF_REPLICATE_NAMES y STN_REPL_TRAN_LOG_DIRECTORIES que configuras en el system.conf y donde podes indicarle justamente que replique dichos archivos.
2) Para copiar un repositorio a otra maquina, stone, etc. tenes dos opciones:
a) Backup y restore. Dependiendo de la dimensión del repositorio puede tardar
b) Copiar directamente los archivos del repositorio, o sea los archivos *.dbf (que incluyen los archivos del extent y los transaction logs). Para eso simplemente baja el stone y copialos. Tenes que bajar el stone porque los puede modificar mientras los copias y ademas para asegurarte que el stone sincronizó los transaction logs con los extents. De hecho, solo es necesario copiar los archivos del extent, los transactions logs no los necesitas copiar, pero cuando levantes la copia te va aparecer en el log del stone un warning que dice que no encontró los transactions logs, lo cual es correcto y está todo bien.



En la documentación no vemos nada que indique que podemos replicar o
distribuir repositorios.

Si se puede. Replicar te lo comenté arriba, opción 1. 
A que te referís con distribuir? poner los archivos en distintos servidores? también podes, simplemente configurá las opciones DBF_EXTENT_NAMES y STN_TRAN_LOG_DIRECTORIES y listo.
¿Qué documentación estás leyendo? Fijate de estar leyendo la System Administration Guide, no la Programming Guide 


Tampoco veo info sobre como exportar objetos de un repositorio y
montarlos en otro, si bien esto se puede resolver con serialización no
encontré que haya soporte de base.

Lo que se hace generalmente para esto es un file out y file in. El file out funciona a nivel objeto no solo clase. 
Lo que pasa que si es mucho lo que tenes que exportar... que se yo...
Lo otro que podes hacer es muy simple, desde un Smalltalk te conectas al stone source y target al mismo tiempo y vas copiando de uno a otro. No es tan sencillo porque tenes que hacer copias de los que vas leyendo del source porque el GemKit no te deja que el mismo objeto pertenezca a dos sesiones distintas (y con razon, sino se producirían conflictos transaccionales), pero bue, es una opción.

Cualquie cosa chifla!
Hernan.

GallegO

unread,
Dec 3, 2008, 6:22:33 AM12/3/08
to clubSm...@googlegroups.com
Andres, Nahuel:

Gracias por las respuestas. En realidad lo que me esperaba era una
replicación automática, como tiene Oracle o SQL Server. Entiendo que no
es el caso más común pero en algunos clientes es necesario por problemas
de conectividad. Incluso a veces de muy difícil solución sino imposibles.
Creo que lo que más se acerca es lo que me comentaba Andres de los
transactions logs. El tema es que eso funcione para más de un
repositorio y no solo entre pares. En todo caso le preguntaré a James.

Que me pueden comentar acerca de la performance Smalltalk de GemStone?
Se puede comparar con VW, VAST, Dolphin?
Supongo que esto que pregunto aplica más a su uso como plataforma GLASS
y no como simple base de datos de objetos.
Algún ratio con respecto a un Smalltalk común?

Gracias por sus respuestas!!

Saludos
GallegO

Nahuel Silva escribió:
> MMMmmm si hacés un backup y después un restore ? Si no copiate los dbf
> a lo cabeza, funciona de diez :D eso si fijate que no esté levantado
> el repositorio sino explota.
>
> Ah, sino lista de gemstone te responde jemes foster al toque :)
>
> Salutti
>
> On Tue, Dec 2, 2008 at 6:00 PM, Andres Valloud
> <andres....@gmail.com <mailto:andres....@gmail.com>> wrote:
>
>
> Buenas...
>
> 2008/12/2 GallegO <fxga...@gmail.com <mailto:fxga...@gmail.com>>:

Nahuel Silva

unread,
Dec 3, 2008, 6:39:21 AM12/3/08
to clubSm...@googlegroups.com
Gallego,

Podés hacer todos esos procesos automatizados en un .sh si estas en linux sino en un .bat, a través de topaz, y sale como trompada, la verdad que no se me ocurre mucho más.

Respecto al tema de prformance no puedo comentarte mucho porque la verdad todavía no estuve tocando mucho desde smalltalk.
Lo que puedo asegurar es que gemstone es muy groso, siempre y cuando no te olvides de correr markForCollection habitualmente ;)

Salutti


2008/12/3 GallegO <fxga...@gmail.com>

GallegO

unread,
Dec 3, 2008, 6:41:23 AM12/3/08
to clubSm...@googlegroups.com
Hernan:

Gracias por responder. Te contesto entre lineas:

Hernan Wilkinson escribió:


> No se a que te referís exactamente con replicar un repositorio en
> forma automática, pero te comento las opciones:
>

Si me refiero a la terminología de las RDBMS tradicionales. Por ejemplo,
tenemos una base de datos en Cuba y otra en Canadá. En el esquema que
tenemos con SQL Server ambas bases de datos se mantienen sincronizadas.
Se puede configurar esa sincronización para cada tabla. Lo que me
pregunto es cómo podría tener dos repositorios de GemStone sincronizados
de esa manera. Por lo que me cuentan parece que no se puede en forma
automática y on-line.


>
>
> En la documentación no vemos nada que indique que podemos replicar o
> distribuir repositorios.
>
>
> Si se puede. Replicar te lo comenté arriba, opción 1.
> A que te referís con distribuir? poner los archivos en distintos
> servidores? también podes, simplemente configurá las
> opciones DBF_EXTENT_NAMES y STN_TRAN_LOG_DIRECTORIES y listo.
> ¿Qué documentación estás leyendo? Fijate de estar leyendo la System
> Administration Guide, no la Programming Guide
>

Si la de administración (pero tengo que reconocer que la leí por encima
sin detenerme en los detalles). Es interesante que se puedan por lo
menos mantener los archivos en otros servidores. Con respecto a la
distribución es también referido a la tecnología tradicional y
relacionado con la sincronización. Volviendo al caso anterior podría
tener objetos en distintas bases y yo decidir cuales viajan de un
repositorio a otro. En este caso es más difícil entender como sería esto
ya que a nivel de rows lo veo más fácil, aunque en Gemstone los objetos
también tienen un OID...


> Lo que se hace generalmente para esto es un file out y file in. El
> file out funciona a nivel objeto no solo clase.

No sabia.


> Lo que pasa que si es mucho lo que tenes que exportar... que se yo...
> Lo otro que podes hacer es muy simple, desde un Smalltalk te conectas
> al stone source y target al mismo tiempo y vas copiando de uno a otro.
> No es tan sencillo porque tenes que hacer copias de los que vas
> leyendo del source porque el GemKit no te deja que el mismo objeto
> pertenezca a dos sesiones distintas (y con razon, sino se producirían
> conflictos transaccionales), pero bue, es una opción.
>

Si, lo que pasa que me estaba inclinando para el lado de GLASS, por eso
las opciones que incluyen conectarme con VW o VAST no las tengo en cuenta.

Uds. no tienen problemas de ese tipo con bases de datos que estan muy
lejanas entre si? Siempre confían en la conexión o siempre trabajan en
una LAN?

Saludos
GallegO

Hernan Wilkinson

unread,
Dec 3, 2008, 6:46:53 AM12/3/08
to clubSm...@googlegroups.com


2008/12/3 GallegO <fxga...@gmail.com>


Andres, Nahuel:

Gracias por las respuestas. En realidad lo que me esperaba era una
replicación automática, como tiene Oracle o SQL Server. Entiendo que no
es el caso más común pero en algunos clientes es necesario por problemas
de conectividad. Incluso a veces de muy difícil solución sino imposibles.
Creo que lo que más se acerca es lo que me comentaba Andres de los
transactions logs. El tema es que eso funcione para más de un
repositorio y no solo entre pares. En todo caso le preguntaré a James.

me imagino que aún no leiste mi respuesta :-)
 


Que me pueden comentar acerca de la performance Smalltalk de GemStone?
Se puede comparar con VW, VAST, Dolphin?

La performance de GemStone es menor comparada con cualquier Smalltalk común por un hecho muy simple, tiene que poder escalar a disco todo lo que tiene en memoria, esto implica que a veces manda a disco zonas de memoria que estás usando o a veces tiene que traer de disco zonas de memoria que necesitas. Además, hay que tener en cuenta todo el trabajo necesario que tiene que hacer para poder determinar cuando se hace commit que objetos debe modificar, etc.
Un tema importante a tener en cuenta en la performance también es el tiempo que consume el GemKit. El GemKit es el componente de GemStone que instalas en VW o VAST para ver a GemStone como otro Smalltalk, o sea, es el responsable de hacerte creer que estás trabajando con objetos en tu Smalltalk en vez de con GemStone. Entonces, no es lo mismo probar performance desde VW o directamente en un Gem (la VM de GemStone), se entiende? O sea, el trabajo que tiene que hacer el GemKit de replicación de objetos o forwarding de mensajes impacta. Ojo, con esto no quiero decir que la performance es mala, sino que hay que tener en cuenta estas cosas.
Así y todo, la VM de GemStone (el Gem) es más lento que el resto. Por ejemplo, correr esto:

Time  millisecondsToRun: [ 10000 timesRepeat: [ | coll | coll := OrderedCollection new. 10000 timesRepeat: [ coll add: 1 ]]] 

En VAST lleva: 3453
En VW lleva:  5712 (Sorpresivamente casi el doble...)
En GemStone lleva: 19422

Esto implica que crear objetos en GemStone no es trivial y tiene que ver con lo que te comentaba arriba.
Otra prueba boba pero para punto flotante:
Time millisecondsToRun: [ 500000 timesRepeat: [ 10.3 * 5.7 ]]

En VAST lleva: 0
En VW lleva: 4 (otra vez me sorprendió que tarde más...)
En GemStone lleva: 109

Aca la diferencia no es tan grande pero todavía existe... (Estoy con GemStone 6.1.4, o sea, 32 bits)

 

Supongo que esto que pregunto aplica más a su uso como plataforma GLASS
y no como simple base de datos de objetos.
Algún ratio con respecto a un Smalltalk común?

Si querés datos de performance de GLASS, andá la blog del tipo que lo está haciendo que tiene varios datos sobre hits per second, etc.

Un abrazo,
Hernan 

Hernan Wilkinson

unread,
Dec 3, 2008, 6:57:01 AM12/3/08
to clubSm...@googlegroups.com


2008/12/3 GallegO <fxga...@gmail.com>


Hernan:

Gracias por responder. Te contesto entre lineas:

Hernan Wilkinson escribió:
> No se a que te referís exactamente con replicar un repositorio en
> forma automática, pero te comento las opciones:
>
Si me refiero a la terminología de las RDBMS tradicionales. Por ejemplo,
tenemos una base de datos en Cuba y otra en Canadá. En el esquema que
tenemos con SQL Server ambas bases de datos se mantienen sincronizadas.
Se puede configurar esa sincronización para cada tabla. Lo que me
pregunto es cómo podría tener dos repositorios de GemStone sincronizados
de esa manera. Por lo que me cuentan parece que no se puede en forma
automática y on-line.

Hay una herramienta para sincronizar repositorios de esa manera... no me acuerdo el nombre... pero básicamente lo que hace es anotarse como observer de los cambios realizados en un repositorio y replicarlos en otro... nunca la use pero se que existe. Te conviene preguntar en la lista de gemstone por ella.
 

>
>
>     En la documentación no vemos nada que indique que podemos replicar o
>     distribuir repositorios.
>
>
> Si se puede. Replicar te lo comenté arriba, opción 1.
> A que te referís con distribuir? poner los archivos en distintos
> servidores? también podes, simplemente configurá las
> opciones DBF_EXTENT_NAMES y STN_TRAN_LOG_DIRECTORIES y listo.
> ¿Qué documentación estás leyendo? Fijate de estar leyendo la System
> Administration Guide, no la Programming Guide
>
Si la de administración (pero tengo que reconocer que la leí por encima
sin detenerme en los detalles). Es interesante que se puedan por lo
menos mantener los archivos en otros servidores. Con respecto a la
distribución es también referido a la tecnología tradicional y
relacionado con la sincronización. Volviendo al caso anterior podría
tener objetos en distintas bases y yo decidir cuales viajan de un
repositorio a otro. En este caso es más difícil entender como sería esto
ya que a nivel de rows lo veo más fácil, aunque en Gemstone los objetos
también tienen un OID...

mmm pero porque motivo querrías tener varios repositorios? Cual sería la ventaja.
Creo que en Kapital tinen varios repositorios... Lucho estás ahí? podes comentar algo al respecto?
El OID de los objetos en GemStone está oculto... no está para ser usado lo cual me parece correcto
 

> Lo que se hace generalmente para esto es un file out y file in. El
> file out funciona a nivel objeto no solo clase.
No sabia.
> Lo que pasa que si es mucho lo que tenes que exportar... que se yo...
> Lo otro que podes hacer es muy simple, desde un Smalltalk te conectas
> al stone source y target al mismo tiempo y vas copiando de uno a otro.
> No es tan sencillo porque tenes que hacer copias de los que vas
> leyendo del source porque el GemKit no te deja que el mismo objeto
> pertenezca a dos sesiones distintas (y con razon, sino se producirían
> conflictos transaccionales), pero bue, es una opción.
>
Si, lo que pasa que me estaba inclinando para el lado de GLASS, por eso
las opciones que incluyen conectarme con VW o VAST no las tengo en cuenta.

Uds. no tienen problemas de ese tipo con bases de datos que estan muy
lejanas entre si? Siempre confían en la conexión o siempre trabajan en
una LAN?

Nuestras aplicaciones están siempre en LAN. La de Kapital está en WAN o más... en New York se conectan a Londres... por eso hicieron unos cambios a partir de la versión 6.3 donde pusieron una cache intermedia adicional entre los Gem y el share page chace del Stone... No se que tipo de conexión tienen entre New York y Londres, pero funca... seguro es buena. Otro caso similar es el de OOCL, donde lo usan al sistema en varios lugares del mundo, pero desconozco la arquitectura (si es Web, o clientes pesados, etc. lo cual cambia bastante la historia...)
Tené en cuenta que GemStone es una tecnología distinta a las base de datos relaciones, por lo que hay ciertas problemas válidos en una que no son válidos en la otra... quizá convenga que primero analicen bien si con GemStone necesitan hacer esas replicaciones, si tendrían los mismos problemas, etc. Si querés nos juntamos un día y lo charlamos. 
Lo que te puedo comentar es que GemStone es una buena tecnología y tiene resuelto muchos de estos problemas por los clientes que lo utilizan... como  todo, no es la panacea pero es muy buena. (jeje, no soy vendedor de GemStone...)

Hernan.
 


Saludos
 GallegO



GallegO

unread,
Dec 3, 2008, 7:25:13 AM12/3/08
to clubSm...@googlegroups.com
Hernan Wilkinson escribió:

> mmm pero porque motivo querrías tener varios repositorios? Cual sería
> la ventaja.
> Creo que en Kapital tinen varios repositorios... Lucho estás ahí?
> podes comentar algo al respecto?
> El OID de los objetos en GemStone está oculto... no está para ser
> usado lo cual me parece correcto
Te aclaro un poco para no parecer que le busco problemas a GemStone :P ,
a ningún vendedor le gusta jaja (vos no sos vendedor no? jeje)
Bueno la ventaja es ninguna. Yo seria feliz sino tuviéramos que tenerlo,
el caso es que algunas conexiones son muy poco fiables, o tienen cortes
(no micro) o son satelitales 128 - 256 hasta 512 no se si algo más. Y el
sistema tiene que funcionar en todas las locaciones, por lo general 24*7
en las empresas más exigentes (y trabajadoras).

>
>
> Nuestras aplicaciones están siempre en LAN. La de Kapital está en WAN
> o más... en New York se conectan a Londres... por eso hicieron unos
> cambios a partir de la versión 6.3 donde pusieron una cache intermedia
> adicional entre los Gem y el share page chace del Stone... No se que
> tipo de conexión tienen entre New York y Londres, pero funca... seguro
> es buena.
[snip]

Claro, me imagino que las conexiones del primer mundo son buenas. Ademas
los bancos, me imagino, están muy aceitados en eso.
En Argentina es bastante difícil tener conexiones de buena calidad y
baratas en algunos puntos del país (en medio del campo). Eso hace que
las empresas más chicas se vena un poco limitadas a la hora de tener
varias conexiones por redundancia. Incluso las empresas más grandes a
veces tienen problemas.


Saludos
GallegO

GallegO

unread,
Dec 3, 2008, 7:35:05 AM12/3/08
to clubSm...@googlegroups.com
Hernan Wilkinson escribió:

> La performance de GemStone es menor comparada con cualquier Smalltalk
> común por un hecho muy simple, tiene que poder escalar a disco todo lo
> que tiene en memoria, esto implica que a veces manda a disco zonas de
> memoria que estás usando o a veces tiene que traer de disco zonas de
> memoria que necesitas. Además, hay que tener en cuenta todo el trabajo
> necesario que tiene que hacer para poder determinar cuando se hace
> commit que objetos debe modificar, etc.
Si, entiendo y estoy de acuerdo en que sea asi. Además la opción RDBMS
también es lenta. En algún lado tenemos que guardar... save image
abstenerse de hacer comentarios :D

> Un tema importante a tener en cuenta en la performance también es el
> tiempo que consume el GemKit. El GemKit es el componente de GemStone
> que instalas en VW o VAST para ver a GemStone como otro Smalltalk, o
> sea, es el responsable de hacerte creer que estás trabajando con
> objetos en tu Smalltalk en vez de con GemStone. Entonces, no es lo
> mismo probar performance desde VW o directamente en un Gem (la VM de
> GemStone), se entiende? O sea, el trabajo que tiene que hacer el
> GemKit de replicación de objetos o forwarding de mensajes impacta.
> Ojo, con esto no quiero decir que la performance es mala, sino que hay
> que tener en cuenta estas cosas.
Con GLASS se elimina ese overhead, pero quedas pegado a la menor
perfomance de GemStone.

> Así y todo, la VM de GemStone (el Gem) es más lento que el resto. Por
> ejemplo, correr esto:
> Time millisecondsToRun: [ 10000 timesRepeat: [ | coll | coll :=
> OrderedCollection new. 10000 timesRepeat: [ coll add: 1 ]]]
> En VAST lleva: 3453
> En VW lleva: 5712 (Sorpresivamente casi el doble...)
> Aca la diferencia no es tan grande pero todavía existe... (Estoy con
> GemStone 6.1.4, o sea, 32 bits)
[snip]
Si, en el curso de GemStone de Smalltalks 2008 calculamos un factorial
grande y tardo mucho, mucho, ya con eso nos imaginamos que la
performance como Smalltalk era menor.
También vimos como Squeak calculaba factorial más rápido que VW (Todavia
no lo puedo creer y aún tengo dudas sobre eso ja!)

Lo que si hay que reconocer que en GemStone, comparado con una
relacional no tenes el costo de instanciación como en las relacionales,
siempre hablando de no usar GemBuilder y usar GLASS, claro esta.


>
> Si querés datos de performance de GLASS, andá la blog del tipo que lo
> está haciendo que tiene varios datos sobre hits per second, etc.
>

Si, es bastante buena, eso es gran punto a favor de GLASS.

Saludos
GallegO

Gerardo Richarte

unread,
Dec 3, 2008, 8:48:21 AM12/3/08
to clubSm...@googlegroups.com
yo tambien estoy haciendo cosas con GLASS, empezando, y nada serio,
asi que no puedo aportar mucho.

Pero mirá este post de Dale Henrichs sobre algunas medidas rapidas que
hizo de performance de aplicaciones hechas en GLASS.

http://gemstonesoup.wordpress.com/2007/10/19/scaling-seaside-with-gemstones/

es muy interesante. Cuantos requests necesitas poder contestar por segundo?
me gustaria saber esa respuesta. En la prueba que peor le fue aguanta 10
por segundo.

Fijate las respuestas al post, la primera de Avi Bryant (el que
originalmente hizo Seaside y ahora tiene dabbledb.com un site que
recomiendo mucho navegar, hecho en Seaside... y Squeak por detras, con
persistencia unicamente en ImageSegments).

Obviamente, una opcion recomendable siempre es usar fastcgi (diria que
si vas a armar un webserver de cero uses lighttpd y no apache, lighttpd
es mucho mas chiquito y rapido, pero no tiene todas las cosas de
apache... que no vas a necesitar si usas Seaside), y pongas todo el
contenido estatico (imagenes, quizas javascripts, QUIZAS css, flash,
video, etc) directamente afuera del seaside.

Siempre depende de los requerimientos de tu aplicacion, obviamente.

richie

Esteban A. Maringolo

unread,
Dec 3, 2008, 9:00:43 AM12/3/08
to clubSm...@googlegroups.com
Lo que el Gallego pregunta, que ya conversamos personalmente, es si
existe la posibilidad de tener una distribución física de las bases de
objetos tolerante a pérdidas de conexión.

En sistemas "antiguos" (RDBMS), esto se puede lograr mediante el uso
de réplica de datos, ya sea mediante triggers o mediante el log de
transacciones, ya que al perder conexión la base A con la B, los que
estan conectados a la A pueden seguir trabajando localmente sin
enterarse que la BD perdió conectividad. Una vez restaurada la
conexión, el sistema de réplica actualizará lo que tenga que
actualizar, que fue quedando encolado (queued) en el servidor
correspondiente.

En el System Administration Guide de GemStone, menciona la posibilidad
de replicar los transaction logs, pero eso no se si se puede hacer de
manera bidireccional. Además tampoco aclara como se podría hacer, dado
que en una base de datos relacional la estructura a replicar es
siempre la misma, se replican cambios a nivel de filas en una o más
tablas, en cambio en un ODBMS la "estructura" es arbitraria.

No se trata solo de tener más servidores para hacer escalar en cuanto
a desempeño y rendimiento, sino en tener más servidores para que
puedan atender de manera distribuida y tolerante a fallos de
comunicación.

Saludos.

Esteban A. Maringolo

Juan Buligovich

unread,
Dec 3, 2008, 9:15:55 AM12/3/08
to ClubSmalltalk
Gallego

Hernán comentaba
"Hay una herramienta para sincronizar repositorios de esa manera... no
me
acuerdo el nombre... pero básicamente lo que hace es anotarse como
observer
de los cambios realizados en un repositorio y replicarlos en otro...
nunca
la use pero se que existe. Te conviene preguntar en la lista de
gemstone por
ella."

Hernán. Te referías a operar con un servidor duplicado?

En el capítulo 1, última sección (1,7) del manual SysAdminGuide para
GemStone 6.1 (estamos utilizando GemStone 6.1.2 y 6.1.5) explica cómo
operar con un duplicate server. Se basa en un segundo GemStone Server
corriendo permanentemente a modo restore. El segundo server se
alimenta de la información en los logs generados por el server
principal.

Creo que esta opción es piola como para poder conmutar rápidamente al
segundo server si se cae el primero. Para eso habría que hacer un
commitRestore para sacar al segundo server de la modalidad restore.

Gallego, por lo que entendí de tus comentarios esto no te serviría. O
mejor dicho, te serviría si fueran dos servers activos, o que el
segundo server funcionara como nodo más cercano y que la maquinaria
GemStone terminaran sincronizándolos transparentemente.

Me parece que GemStone -al menos en las versiones que conozco- no
tiene algo así.

Saludos
Juan

GallegO

unread,
Dec 3, 2008, 9:30:46 AM12/3/08
to clubSm...@googlegroups.com
Gerardo Richarte escribió:

> yo tambien estoy haciendo cosas con GLASS, empezando, y nada serio,
> asi que no puedo aportar mucho.
>
> Pero mirá este post de Dale Henrichs sobre algunas medidas rapidas que
> hizo de performance de aplicaciones hechas en GLASS.
>
> http://gemstonesoup.wordpress.com/2007/10/19/scaling-seaside-with-gemstones/
>
> es muy interesante. Cuantos requests necesitas poder contestar por segundo?
> me gustaria saber esa respuesta. En la prueba que peor le fue aguanta 10
> por segundo.
>
>
Es una buena pregunta, no se cómo calcular eso, pero por el momento no
creo que tantos por segundo.

La perfomance me preocupa más por el lado de procesamiento de
información, cálculos, consultas de cientos de miles de instancias,
agruparlas para sumarizar, etc.
Ese es un tipo de uso, podemos denominarlo de consulta y requiere un
esfuerzo considerable cuando consultamos muchos datos.

El otro tipo de uso seria el de ingreso de datos, que requiere mucha
menos capacidad de procesamiento y tampoco se trata de que tenemos miles
de usuarios accediendo.

Por esto que explico, por ahora, no me preocupa tanto los hits por
segundo como si me preocupa la capacidad de procesamiento.


> Fijate las respuestas al post, la primera de Avi Bryant (el que
> originalmente hizo Seaside y ahora tiene dabbledb.com un site que
> recomiendo mucho navegar, hecho en Seaside... y Squeak por detras, con
> persistencia unicamente en ImageSegments).
>
>

Si lo he visto en varias oportunidades.


> Obviamente, una opcion recomendable siempre es usar fastcgi (diria que
> si vas a armar un webserver de cero uses lighttpd y no apache, lighttpd
> es mucho mas chiquito y rapido, pero no tiene todas las cosas de
> apache... que no vas a necesitar si usas Seaside), y pongas todo el
> contenido estatico (imagenes, quizas javascripts, QUIZAS css, flash,
> video, etc) directamente afuera del seaside.
>
>

Si, teníamos pensado hacerlo así. El tema es que por ahora lo estamos
haciendo todo con Dolphin y BD relacionales. Te imaginas, escalar con
Dolphin es image based, aunque tenemos alguna esperanza en que esto
cambie un poco con DNG, o si pasamos a GLASS.

Otro problema es la comunicacion de GLASS con el mundo exterior, he
leido que quieren implementar FFI quizas eso ayude bastante. Por ahora
todo files y sockets. Un poco duro. Pregunte por el precio del
GemConnect y cri cri

Saludos
GallegO

Gerardo Richarte

unread,
Dec 3, 2008, 9:30:25 AM12/3/08
to clubSm...@googlegroups.com
Esteban A. Maringolo wrote:
> Lo que el Gallego pregunta, que ya conversamos personalmente, es si
> existe la posibilidad de tener una distribución física de las bases de
> objetos tolerante a pérdidas de conexión.
>
tambien preguntó concretamente sobre la performance de Gemstone, y
despues particularmente de la de GLASS. Ese post del blog de Dale es muy
bueno, y se entiende claramente para que cosas te alcanza y para que
cosas no GLASS (en este sentido), y tambien se adivina como escala
(extrapolando de las muchas pruebas que estan documentadas)

richie

GallegO

unread,
Dec 3, 2008, 9:34:08 AM12/3/08
to clubSm...@googlegroups.com
Juan:

Como explicas vos, no serviría.

Saludos
GallegO


Juan Buligovich escribió:

Hernan Wilkinson

unread,
Dec 3, 2008, 10:41:38 AM12/3/08
to clubSm...@googlegroups.com

Otro problema es la comunicacion de GLASS con el mundo exterior, he
leido que quieren implementar FFI quizas eso ayude bastante. Por ahora
todo files y sockets. Un poco duro. Pregunte por el precio del
GemConnect y cri cri

Por que decis que es un problema? tiene toda una interface muy buena para cargar dlls hechas en C.. nosotros tuvimos que hacer eso y anduvo diez puntos, como cualquier smalltalk.
GemConnect no lo mantienen más... es un producto para replicar objetos en Oracle, por si queres tener replicación en BDR
 


Saludos
 GallegO



Andres Valloud

unread,
Dec 3, 2008, 10:47:32 AM12/3/08
to clubSm...@googlegroups.com
Buenas...

> Time millisecondsToRun: [ 10000 timesRepeat: [ | coll | coll :=
> OrderedCollection new. 10000 timesRepeat: [ coll add: 1 ]]]
> En VAST lleva: 3453
> En VW lleva: 5712 (Sorpresivamente casi el doble...)

Me da la impresion de que esto tiene que ver con la manera de
implementar OrderedCollection... no tengo VAST a mano, podrias fijarte
en un profiler y ver que onda?

> Otra prueba boba pero para punto flotante:
> Time millisecondsToRun: [ 500000 timesRepeat: [ 10.3 * 5.7 ]]
>
> En VAST lleva: 0
> En VW lleva: 4 (otra vez me sorprendió que tarde más...)

Aca me parece que lo mas interesante seria poner un loop que tarde
aproximadamente un segundo. Por ejemplo, dependiendo de que se hace
para millisecondsToRun:, podes tener una resolucion efectiva de mas o
menos 16ms. Ademas, si justo agarras un GC etc...

Algo mas: en VAST, 10.3 es un double o un float?

Andres.

GallegO

unread,
Dec 3, 2008, 11:29:33 AM12/3/08
to clubSm...@googlegroups.com
Hernan:

Ahora que veo tu respuesta si, en realidad el problema mayor es no tener
un fw. de acceso a relacionales.
El problema que tenemos es que nadie puede acceder a tu base con una
herramienta típica de reporting. Esto es solucionable si uno mismo
genera vistas en otra base. Para eso se extraña no tener acceso a ODBC.
Es algo mínimo en cualquier ambiente de desarrollo. Como somos
Smalltalkers seguro podemos arreglarnos...
Ademas tenemos que tener en cuenta la reticencia que puede tener un
cliente a tener todos sus datos en una BD cerrada o propietaria a la
cual no pueden acceder por SQL.
Quizás no me exprese bien. En realidad es nuestro problema, que tenemos
una base de clientes con BD relacionales y la migración se haría
bastante complicada.
Otro tema a tener en cuenta es que quizás algunos que trabajen en
ambientes Win esten usando COM, como es nuestro caso, para generar
planillas Excel. En ese punto particular estamos pensando en hacer una
exportación en XML con el formato de Excel (ver
http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx )
No sabia que GemConnect no lo mantenían más, podrían haber hecho algo
para ODBC, se ve que ningún cliente quiere a las relacionales jaja.

Perdón en este punto quiero aclarar que no estoy contra GemStone. Al
contrario quiero usarlo. Inicie la discusión para tratar de resolver
todos los inconvenientes que vemos o creemos ver.

Saludos
GallegO


Hernan Wilkinson escribió:

Hernan Wilkinson

unread,
Dec 3, 2008, 11:53:43 AM12/3/08
to clubSm...@googlegroups.com
On Wed, Dec 3, 2008 at 1:47 PM, Andres Valloud <andres....@gmail.com> wrote:

Buenas...

> Time  millisecondsToRun: [ 10000 timesRepeat: [ | coll | coll :=
> OrderedCollection new. 10000 timesRepeat: [ coll add: 1 ]]]
> En VAST lleva: 3453
> En VW lleva:  5712 (Sorpresivamente casi el doble...)

Me da la impresion de que esto tiene que ver con la manera de
implementar OrderedCollection... no tengo VAST a mano, podrias fijarte
en un profiler y ver que onda?

Dale, cuando tenga un rato me fijo... igual en otras cosas VW le pasa el trapo a VAST, solo me causo gracia encontrar una en que no.
 


> Otra prueba boba pero para punto flotante:
> Time millisecondsToRun: [ 500000 timesRepeat: [ 10.3 * 5.7 ]]
>
> En VAST lleva: 0
> En VW lleva: 4 (otra vez me sorprendió que tarde más...)

Aca me parece que lo mas interesante seria poner un loop que tarde
aproximadamente un segundo.  Por ejemplo, dependiendo de que se hace
para millisecondsToRun:, podes tener una resolucion efectiva de mas o
menos 16ms.  Ademas, si justo agarras un GC etc...

Estoy de acuerdo, seguramente pasa eso. En VAST creo que maneja incrementos de 16ms 


Algo mas: en VAST, 10.3 es un double o un float?

Float.. en VW también por lo que vi... 


Andres.



Hernan Wilkinson

unread,
Dec 3, 2008, 11:58:30 AM12/3/08
to clubSm...@googlegroups.com


2008/12/3 GallegO <fxga...@gmail.com>


Hernan:

Ahora que veo tu respuesta si, en realidad el problema mayor es no tener
un fw. de acceso a relacionales.
El problema que tenemos es que nadie puede acceder a tu base con una
herramienta típica de reporting. Esto es solucionable si uno mismo
genera vistas en otra base. Para eso se extraña no tener acceso a ODBC.

jaja, es lo mismo que nos pasó a nosotros y por eso hicimos la herramienta de reporting... que por una modica suma podemos arreglar... jaja
Varias veces se nos ocurrió escribir un driver ODBC para mostrar información de manera "plana" tipo BDR... nunca tuvimos tiempo, pero no debería ser muy complicado, solo sería de lectura.


Es algo mínimo en cualquier ambiente de desarrollo. Como somos
Smalltalkers seguro podemos arreglarnos...
Ademas tenemos que tener en cuenta la reticencia que puede tener un
cliente a tener todos sus datos en una BD cerrada o propietaria a la
cual no pueden acceder por SQL.

Nosotros tenemos los mismos problemas, por eso lo que vamos a hacer es replicar cierta información en BDR, por suerte la arquitectura del sistema nos da para hacerlo fácil

 

Quizás no me exprese bien. En realidad es nuestro problema, que tenemos
una base de clientes con BD relacionales y la migración se haría
bastante complicada.

y si... no es fácil.
 

Otro tema a tener en cuenta es que quizás algunos que trabajen en
ambientes Win esten usando COM, como es nuestro caso, para generar
planillas Excel. En ese punto particular estamos pensando en hacer una
exportación en XML con el formato de Excel (ver
http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx )

No entiendo porque esto sería un problema con GemStone.
 

No sabia que GemConnect no lo mantenían más, podrían haber hecho algo
para ODBC, se ve que ningún cliente quiere a las relacionales jaja.

tal cual!
 


Perdón en este punto quiero aclarar que no estoy contra GemStone. Al
contrario quiero usarlo. Inicie la discusión para tratar de resolver
todos los inconvenientes que vemos o creemos ver.

Mirá, mi opinión es esta: Desde el punto de vista técnico, GemStone es muy bueno, pero desde el punto de vista de marketing y comercial, es muy difícil de hacerlo aceptar... por eso nuestra estrategia ultimamente es decir que la técnología que usamos no la divulgamos por cuestiones de competitividad... a quien le gusta bien, y a quien no, mala suerte (para nosotros también! jaja). Pero siempre el problema se da con la gente de sistemas, no con el usuario final, por eso hay que lograr que sea el usuario final quien pone el gancho...

Saludos
Hernan 

Andres Valloud

unread,
Dec 3, 2008, 12:08:47 PM12/3/08
to clubSm...@googlegroups.com
Buenasss...

>> Me da la impresion de que esto tiene que ver con la manera de
>> implementar OrderedCollection... no tengo VAST a mano, podrias fijarte
>> en un profiler y ver que onda?
>
> Dale, cuando tenga un rato me fijo... igual en otras cosas VW le pasa el
> trapo a VAST, solo me causo gracia encontrar una en que no.

Je... habia otra tambien... pero esa ya hace rato que la arregle :).

> Estoy de acuerdo, seguramente pasa eso. En VAST creo que maneja incrementos
> de 16ms

En Squeak 2.x me acuerdo que pasaba lo mismo... incluso a veces el
incremento era de 16k pero el resultado final era +/- 1 mod 16...

>> Algo mas: en VAST, 10.3 es un double o un float?
> Float.. en VW también por lo que vi...

Si, porque no tiene la $d final.

Andres.

Gerardo Richarte

unread,
Dec 3, 2008, 12:27:38 PM12/3/08
to clubSm...@googlegroups.com

> Varias veces se nos ocurrió escribir un driver ODBC para mostrar
> información de manera "plana" tipo BDR... nunca tuvimos tiempo, pero
> no debería ser muy complicado, solo sería de lectura.
En la pregunta original de GallegO me quedé pensando, y ahora,un rato
despues, ya estoy un poco mas convencido.

Creo que la forma moderna de hacer esto es exponer una interface XML con
alguna API para acceder a la informacion (y de paso pueden decir Web 2.0)

no hay algun protocolo sttandard de red para bases relacionales? no
hay uno de esos que sea sobre XML o algo asi? no hay algun driver ODBC
con algun protocolo abierto? ideal seria implementar, directamente,
alguno de estos protocolo en Gemstone, asi despues uno se puede conectar
con algun cliente normal SQL, y no tener que dumpear todo en una base
afuera.

bueh, mis 2 centavos totalmente especulativos :)
richie

Hernan Wilkinson

unread,
Dec 3, 2008, 1:14:34 PM12/3/08
to clubSm...@googlegroups.com
el problema de hacer el driver de odbc es que estructura de "tabla" mostras... por eso pensabamos hacer como definiciones de tablas que serían mapeadas despues... con xml se puede hacer porque no hay una estructura "rectangular" (por no decir cuadrada :-)) como en las bases relacionales....

GallegO

unread,
Dec 3, 2008, 3:08:45 PM12/3/08
to clubSm...@googlegroups.com
Hernan Wilkinson escribió:

>
>
>
> Otro tema a tener en cuenta es que quizás algunos que trabajen en
> ambientes Win esten usando COM, como es nuestro caso, para generar
> planillas Excel. En ese punto particular estamos pensando en hacer una
> exportación en XML con el formato de Excel (ver
> http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx
> <http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx>

> )
>
>
> No entiendo porque esto sería un problema con GemStone.
No. Digo que usar COM con GLASS es un problema. Corre en Linux ;)
Por eso quiero que empecemos a generar XML (de Excel) para generar las
planillas.
Nadie tiene nada de esto hecho? mangazo mal...

Saludos
GallegO

Esteban Lorenzano

unread,
Dec 3, 2008, 3:40:10 PM12/3/08
to clubSm...@googlegroups.com
Esto puede ser una descolgada total, pero bue... la voy a tirar igual :)
¿Para que querés la sincronización de la base de datos? Lo digo porque
en líneas generales, sincronizar a ese nivel es bastante poco
recomendable, lo más "teoricamente correcto" es integrar a nivel de
aplicación (con servicios, bah).

Insisto, lo más probable es que no tenga nada que ver con nada...

Saludos,
Esteban
"Querer es suscitar las paradojas"
Camus - El mito de Sísifo

GallegO

unread,
Dec 3, 2008, 4:03:30 PM12/3/08
to clubSm...@googlegroups.com
Hola Esteban:

No entiendo bien a que te referís. Podrías darme un ejemplo mínimo
aunque sea?
Si no se trata de lo mismo por lo menos aprenderemos algo :P

Saludos

Esteban Lorenzano escribió:

Esteban Lorenzano

unread,
Dec 3, 2008, 4:54:41 PM12/3/08
to clubSm...@googlegroups.com
Bueno :)
Yo me colgué pensando que querían replicar los datos porque quieren
integrar aplicaciones que no necesariamente están muy bien conectadas
entre sí. Esta es probablemente la inferencia errónea, porque vos en
ningún momento decís eso... pero bien, yo pensé: ¿para que querrían
duplicar datos?, 1) backup, 2) integración.
La primera opción queda descartada porque de otro modo cualquiera de
las respuestas anteriores serían factibles, entonces sigo por
integración (hay probablemente otro escenario: misma aplicación
corriendo en distintos puntos, pero se puede ver como una variante del
punto 2).
Entonces en cuanto a integración, bueno, hay varios "niveles" en donde
se puede integrar una aplicación:
1) A nivel de datos. Este es el más común, y en mi humilde opinión, el
motivo por el cual las RDBMS son tan ubicuas. Sin embargo, integrar a
nivel de datos es inherentemente malo porque se pierde toda la
inteligencia agregada en el sistema, lo cual invariablemente deviene
en redundancia de datos y redundancia de código (no sería el caso del
ultimo punto: misma aplicación corriendo en dos lugares).
2) A nivel de aplicación, la aplicación A no accede a los datos de la
aplicación B sino que usa una libreria de la aplicacion A. Es mejor
que la opcion 1 porque permite usar la inteligencia aplicada en A,
pero es negativo en otros aspectos, el mas importante es que terminas
teniendo un montón de páckages con versiones distintas por todos lados.
3) Lo que se supone que es lo mejorcito: que la aplicación A publique
un servicio y la aplicación B lo consuma. Eso, dicen, es lo mejor de
todos los mundos. Claro que es el origen de la mentira SOA que hoy
tenemos por doquier, pero eso no significa que no sea mucho mejor que
las opciones anteriores.

En definitiva, para integración, yo no pensaría en replicación de
datos sino en ver como una aplicación puede consumir servicios de otra.

En eso es en lo que estaba pensando... insisto, probablemente lejos
del problema real :)

Salud,
Esteban

GallegO

unread,
Dec 4, 2008, 7:37:33 AM12/4/08
to clubSm...@googlegroups.com
Esteban:

Entiendo a que te referís. Nosotros simplemente necesitamos tener la
misma aplicación corriendo en distintos lugares. El problema lo da la
mala conectividad ya que si no fuera este el caso trataríamos de
centralizar las cosas.

Aprovecho para comentar que la gente de GemStone se comunico y me
dijeron que me venden el GemConnect, pero no me dijeron que estaba
discontinuado. Que raro.


Saludos
GallegO

Esteban Lorenzano escribió:

Hernan Wilkinson

unread,
Dec 4, 2008, 9:35:46 AM12/4/08
to clubSm...@googlegroups.com
Bueno, ojo, quizá estoy equivocado respecto del GemConnect...

2008/12/4 GallegO <fxga...@gmail.com>

Marcelo Cortez

unread,
Dec 4, 2008, 9:43:15 AM12/4/08
to clubSm...@googlegroups.com
Gallego , me agarro curiosidad. cuanto $$$ sale :D
salu2
mdc

2008/12/4 Hernan Wilkinson <hernan.w...@gmail.com>

Jose Gregoris

unread,
Dec 4, 2008, 10:43:42 AM12/4/08
to clubSm...@googlegroups.com
Hola
 
Que se puede comentar sobre www.objectivity.com con respecto a Gemstone.
Alguien la uso ?
 
saludos kiko


--- El mié 3-dic-08, Hernan Wilkinson <hernan.w...@gmail.com> escribió:


¡Buscá desde tu celular! Yahoo! oneSEARCH ahora está en Claro
http://ar.mobile.yahoo.com/onesearch

GallegO

unread,
Dec 4, 2008, 10:53:49 AM12/4/08
to clubSm...@googlegroups.com
Marcelo:

Sobre la licencia de u$s7000 (primer nivel no free) para GLASS se
necesita un 25% adicional para el GemConnect. De todas formas no me
suena a precio de lista, así que supongo que se puede negociar. Tampoco
me dijeron cuanto salia solamente si queríamos sumarselo a la versión
free. Yo creo que vale la pena esperar a ver si con la implementación
de FFI en GLASS portan el fw de odbc de Squeak.
Les parecen caros estos precios? Todo depende no...

Saludos
GallegO

Marcelo Cortez escribió:
> Gallego , me agarro curiosidad. cuanto $$$ sale :D
> salu2
> mdc
>
> 2008/12/4 Hernan Wilkinson <hernan.w...@gmail.com
> <mailto:hernan.w...@gmail.com>>
>
> Bueno, ojo, quizá estoy equivocado respecto del GemConnect...
>
> 2008/12/4 GallegO <fxga...@gmail.com <mailto:fxga...@gmail.com>>
Reply all
Reply to author
Forward
0 new messages