Hola gente! Guillermo, el ambito de aplicacion de lo que quiero hacer, es similar al de Software Transactional Memory, donde tambien se mencionan Transactional Objects, no a la de las bases de datos. Una comparacion de los dos ambitos, tomado de un proyecto/ejemplo en .NET:
http://weblogs.asp.net/ralfw/archive/2007/07/04/software-transactional-memory-ii-isolation-of-changes-to-transactional-objects.aspx Mis enlaces http://delicious.com/ajlopez/stm Nos leemos! Angel "Java" Lopez http://www.ajlopez.com http://twitter.com/ajlopez 2010/10/27 Guillermo Schwarz <[email protected]> > Hola Angel, > > creo que se debe aclarar los términos. > > En el mundo de las bases de datos relacionales las transacciones > significan ACID: Atomic, Consistent, Isolated y Durable. > > En particular Atomic significa que o se hacen todas las operaciones o no > se hace ninguna. ¿Cómo implementas eso? No sólo los objetos > "transaccionables" deben volver al estado en que estaban, sino que todos > los qu ehayan sido modificados. Si un objeto no es durable, debiera dar > lo mismosi se puede devolver a su estado anterior. Por ejemplo un > socket, si ya envió algo por la red, imposible "desenviarlo". Por eso en > los EJBs no está permitio conectarse a través de sockets ni escibir > archivos. > > Luego lo de Consistent, no hay manera de hacerlo en Smalltalk a menos > que modeláramos tablas relacionales en Smalltalk de modo que cada tabla > fuera por ejemplo un Dictionary (PK -> registro completo). Creo que esto > hasta el momento no existe. > > Luego lo de Isolated, creo que es lo que implementaste tú, una de las > transacciones falla (y se podría ejecutar de nuevo) si trata de > modificar un objeto que ha sido modificado en una transacción que aún se > encuentra activa. > > Finalmente lo de Durable correspondería a que el Dictionary que > representa cada tabla fuera persistente. > > No sé si te hace sentido. > > Saludos, > Guillermo. > > On Tue, 2010-10-26 at 06:17 -0300, Angel Java Lopez wrote: > > Hola gente! > > > > Interesante el enlace de parallel, gracias Guillermo. > > > > Comentario rapido: el codigo de tarde de domingo, fue agregar > > transacciones a objetos, en AjTalk. Esta funcionando, pero todavia en > > revision. Me falta implementar la sintaxis con la que lo voy a usar, > > pero sera algo como: > > > > myObj := MyClass new asTransactionable. > > > > "tambien podria poner" > > > > MyClass transactionable: true. > > > > "y de ahi en mas los objetos creados de MyClass son transactionables". > > > > Transaction begin. > > > > "modifican los objetos, habra objetos transaccionables" > > > > Transaction commit. "o Transaction rollback" > > > > Si dos Process tratan de modificar la misma variable de instancia de > > myObj, uno dara exception. Me falta controlar las variables indexadas. > > > > Nos leemos! > > > > Angel "Java" Lopez > > http://www.ajlopez.com > > http://twitter.com/ajlopez > > > > 2010/10/26 Guillermo Schwarz <[email protected]> > > Sí, bueno, yo veo que todo tiende a Java, a pesar de que los > > lenguajes > > funcionales (F#) parecen estar mejor implementados en .NET que > > en la JVM > > (Scala y Clojure). > > > > Y me gustó la idea de implementar EJBs en Smalltalk, por > > alguna razón > > imagino que es un buen vehículo conceptual que existan threads > > con > > transacciones en vez de threads con locks. > > > > Y de esa manera las bases de datos resuelven el tema de las > > transacciones, el código en Smalltalk simplemente indica en > > qué momento > > gatillar el "commit". > > > > Entonces estará el problema de cómo hacer las transacciones a > > la base de > > datos si según recuerdo no existe una manera estándar como > > JDBC para > > acceeder a las BDR desde Smalltalk. Entonces me topé con > > TOPLink, que al > > parecer es sólo abierto en el caso de Java y con Glorp, que al > > parecer > > es el estándar hoy en día en el mundo Smalltalk: > > > > http://www.glorp.org/ > > > > Entonces una vez implementada la persistencia mediante Glorp, > > debiera > > poder delimitar transacciones a través de EJBs y la ejecución > > a través > > de [] fork debiera ser trivial... > > > > Al menos conceptualmente me parece que la solución anda, no sé > > tú. ¿Te > > suena a que anda? > > > > ¿Porqué digo esto? Porque me topé con esto: > > http://wiki.squeak.org/squeak/537 > > > > Lo que me parece que estuvieran tratando de replicar son los > > ambientes > > Lisp distribuidos en los que funciona de manera trivial el > > paralelismo > > masivo porque en Lisp casi no hay nada compartido. Lograr eso > > en > > Smalltalk creo que es casi imposible, porque el lenguaje está > > pensado > > para que modifique el estado de los objetos en memoria. El > > enfoque que > > yo tengo es que sea responsabilidad del programador no hacer > > ninguna > > llamada a objetos en memoria, lo mismo que pasa con los EJBs > > en Java. > > > > Ahora como estos EJBs están en Smalltalk en realidad debieran > > llamarse > > EOB (Enterprise OBjects). > > > > Saludos, > > Guillermo. > > > > > > > > On Tue, 2010-10-19 at 18:26 -0300, Angel Java Lopez wrote: > > > Comentario corto: Hace unos anios comence a escribir este > > tipo de pet > > > project, en C#, porque no estaba claro que pasaba con un > > Java VM o JDK > > > Abierto. Ahora esta el Harmony de Apache, que recuerde. Pero > > ya casi > > > desde principios de siglo, tenemos Mono. No probe todo lo > > que escribo, > > > pero un pet project bastante importante para mi, que esta > > siendo usado > > > diaramente en dos proyectos de desarrollo, corre sin tocar > > nada, desde > > > el compilado, en Ubuntu con Mono, y en OS/X de Mac con Mono. > > > > > > Y esta todo el codigo fuente de Mono para ese soporte. > > > > > > Nos leemos! > > > > > > Angel "Java" Lopez > > > http://www.ajlopez.com > > > http://twitter.com/ajlopez > > > > > > 2010/10/19 Guillermo Schwarz <[email protected]> > > > > > > > > > Quizás lo que quiere Valluod es > > desligarse de > > > una plataforma (C#) de la que no > > tiene los > > > fuentes ;-) > > > > > > Lo que? > > > > > > > > > Me refería al codigo fuente de c#. > > > > > > Si el día de mañana sacan Windows 9 u 8 y sobre el > > corre > > > solo .net 9 u 8, pero tu vm no corre sobre el nuevo > > runtime, > > > perdiste toda la inversión de tiempo que hiciste. > > > > > > Mientras que si desarrollas sobre una plataforma > > open source, > > > no importa lo que cambien por debajo, siempre puedes > > adaptar > > > tu plataforma porque dispones del código fuente. > > > > > > > > > > > > > > > > > > Andres. > > > > > > > > > > > > > > -- > > > > > To post to this group, send email to > > [email protected] > > > To unsubscribe from this group, send email to clubSmalltalk > > > [email protected] > > > > > > http://www.clubSmalltalk.org > > > > -- > > Simplex Veri Sigillum > > > > -- > > To post to this group, send email to > > [email protected] > > To unsubscribe from this group, send email to clubSmalltalk > > [email protected] > > > > http://www.clubSmalltalk.org > > > > > > > > -- > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to clubSmalltalk > > [email protected] > > > > http://www.clubSmalltalk.org > > -- > Simplex Veri Sigillum > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<clubsmalltalk%[email protected]> > > http://www.clubSmalltalk.org > -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
