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
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.
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.
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
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?
Hernan:
Gracias por responder. Te contesto entre lineas:
Hernan Wilkinson escribió:
> No se a que te referís exactamente con replicar un repositorio enSi me refiero a la terminología de las RDBMS tradicionales. Por ejemplo,
> forma automática, pero te comento las opciones:
>
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.
>Si la de administración (pero tengo que reconocer que la leí por encima
>
> 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
>
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. ElNo sabia.
> file out funciona a nivel objeto no solo clase.
> Lo que pasa que si es mucho lo que tenes que exportar... que se yo...Si, lo que pasa que me estaba inclinando para el lado de GLASS, por eso
> 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.
>
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
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
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
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
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
richie
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
> 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.
Buenas...
Me da la impresion de que esto tiene que ver con la manera de
> 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...)
implementar OrderedCollection... no tengo VAST a mano, podrias fijarte
en un profiler y ver que onda?
Aca me parece que lo mas interesante seria poner un loop que tarde
> 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...)
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.
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.
>> 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.
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
Saludos
GallegO
Hola
Que se puede comentar sobre www.objectivity.com con respecto a Gemstone.
Alguien la uso ?
saludos kiko
|