librelist archives

« back to archive

Qué opinan de "ORM is an anti-pattern"?

Qué opinan de "ORM is an anti-pattern"?

From:
Enrique Nieloud
Date:
2011-06-16 @ 11:30
http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern

Re: [rubysur] Qué opinan de "ORM is an anti-pattern"?

From:
Gabriel Benmergui
Date:
2011-06-16 @ 11:49
Yo use hibernate cuando era dev de Java, y concuerdo con que tuve que
aprender un monton de cosas, para despues tener que ahces cosas de SQL
tambien. Y me parecio pedorro.

Los puntos fuertes del articulo que escribe esta persona son:

1) que sql no es la gran cosa para representar objetos. Esto es vital,
porque sql son tablas, y eso es una forma estructural de ver la informacion.

2) Que los ORM son leaky abstractions. Creo que hacer una abstraccion 100%
de como funciona la base de datos es imposible en la practica, por lo que
con una ORM no pensaria que tiene que solucionarte eso, sino darte unas
herramientas para facilitartelo.

Trabajar con active record o mongoid me aseguro mucho trabajo que en un
disenio con DAOs (como he visto en la practica en java) es asqueroso.

Si toman como ejemplo a Ohm(que en la documentacion menciona que saber como
funciona la base de datos te va a hacer las cosas mas facil) ves un ejemplo
de que no hay disenio que te pueda abstraer 100% de una db. Si no sabes nada
de las operaciones de Redis, no hay forma de enmascarartelo.


El tema de los leaky abstractions da vueltas todo el tiempo en la comunidad
ruby/rails. Me parece que es un problema endemico de la comunidad, que surge
de sacar una DSL de cualquier cosa. En cuanto a los ORM, voto por aceptar
que no deberian reemplazar el entendimiento de la DB, pero si hacerlo mas
facil y accesible.

On Thu, Jun 16, 2011 at 8:30 AM, Enrique Nieloud <enieloud@gmail.com> wrote:

> http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern
>

Re: [rubysur] Qué opinan de "ORM is an anti-pattern"?

From:
Tute
Date:
2011-06-16 @ 14:31
Concuerdo. Hibernate es un ORM muy robusto. El que usa SQL, con respeto 
Gabriel, por lo general, es porque desconoce HQL, por ejemplo, pero 
cuando se observa termina siendo más complicado aprender HQL que SQL y 
preferiria mil veces tirar una query hecha y derecha y que armar un 
gusano de HQL.

ActiveRecord es un ORM y te hace la vida mucho más fácil y si te pones 
imaginativo, lo pasas por arriba, y nunca me dió problemas. Para las 
bases No-SQL no estoy seguro como funcionaria pero no tengo dudas que se 
puede hacer un ORM en Redis. Medio rebuscado, puede ser, pero es posible 
y quizas hasta útil.

On 06/16/2011 08:49 AM, Gabriel Benmergui wrote:
> Yo use hibernate cuando era dev de Java, y concuerdo con que tuve que 
> aprender un monton de cosas, para despues tener que ahces cosas de SQL 
> tambien. Y me parecio pedorro.
>
> Los puntos fuertes del articulo que escribe esta persona son:
>
> 1) que sql no es la gran cosa para representar objetos. Esto es vital, 
> porque sql son tablas, y eso es una forma estructural de ver la 
> informacion.
>
> 2) Que los ORM son leaky abstractions. Creo que hacer una abstraccion 
> 100% de como funciona la base de datos es imposible en la practica, 
> por lo que con una ORM no pensaria que tiene que solucionarte eso, 
> sino darte unas herramientas para facilitartelo.
>
> Trabajar con active record o mongoid me aseguro mucho trabajo que en 
> un disenio con DAOs (como he visto en la practica en java) es asqueroso.
>
> Si toman como ejemplo a Ohm(que en la documentacion menciona que saber 
> como funciona la base de datos te va a hacer las cosas mas facil) ves 
> un ejemplo de que no hay disenio que te pueda abstraer 100% de una db. 
> Si no sabes nada de las operaciones de Redis, no hay forma de 
> enmascarartelo.
>
>
> El tema de los leaky abstractions da vueltas todo el tiempo en la 
> comunidad ruby/rails. Me parece que es un problema endemico de la 
> comunidad, que surge de sacar una DSL de cualquier cosa. En cuanto a 
> los ORM, voto por aceptar que no deberian reemplazar el entendimiento 
> de la DB, pero si hacerlo mas facil y accesible.
>
> On Thu, Jun 16, 2011 at 8:30 AM, Enrique Nieloud <enieloud@gmail.com 
> <mailto:enieloud@gmail.com>> wrote:
>
>     http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern
>
>

Re: [rubysur] Qué opinan de "ORM is an anti-pattern"?

From:
German Otero
Date:
2011-06-21 @ 15:00
On Jun 16, 2011, at 11:31 AM, Tute wrote:

> Concuerdo. Hibernate es un ORM muy robusto. El que usa SQL, con respeto 
Gabriel, por lo general, es porque desconoce HQL, por ejemplo, pero cuando
se observa termina siendo más complicado aprender HQL que SQL y preferiria
mil veces tirar una query hecha y derecha y que armar un gusano de HQL.
> 
> ActiveRecord es un ORM y te hace la vida mucho más fácil y si te pones 
imaginativo, lo pasas por arriba, y nunca me dió problemas. Para las bases
No-SQL no estoy seguro como funcionaria pero no tengo dudas que se puede 
hacer un ORM en Redis. Medio rebuscado, puede ser, pero es posible y 
quizas hasta útil.
> 
> On 06/16/2011 08:49 AM, Gabriel Benmergui wrote:
>> 
>> Yo use hibernate cuando era dev de Java, y concuerdo con que tuve que 
aprender un monton de cosas, para despues tener que ahces cosas de SQL 
tambien. Y me parecio pedorro.
>> 
>> Los puntos fuertes del articulo que escribe esta persona son:
>> 
>> 1) que sql no es la gran cosa para representar objetos. Esto es vital, 
porque sql son tablas, y eso es una forma estructural de ver la 
informacion.
>> 
>> 2) Que los ORM son leaky abstractions. Creo que hacer una abstraccion 
100% de como funciona la base de datos es imposible en la practica, por lo
que con una ORM no pensaria que tiene que solucionarte eso, sino darte 
unas herramientas para facilitartelo.
>> 
>> Trabajar con active record o mongoid me aseguro mucho trabajo que en un
disenio con DAOs (como he visto en la practica en java) es asqueroso.
>> 
>> Si toman como ejemplo a Ohm(que en la documentacion menciona que saber 
como funciona la base de datos te va a hacer las cosas mas facil) ves un 
ejemplo de que no hay disenio que te pueda abstraer 100% de una db. Si no 
sabes nada de las operaciones de Redis, no hay forma de enmascarartelo.
>> 
>> 
>> El tema de los leaky abstractions da vueltas todo el tiempo en la 
comunidad ruby/rails. Me parece que es un problema endemico de la 
comunidad, que surge de sacar una DSL de cualquier cosa. En cuanto a los 
ORM, voto por aceptar que no deberian reemplazar el entendimiento de la 
DB, pero si hacerlo mas facil y accesible.
>> 
>> On Thu, Jun 16, 2011 at 8:30 AM, Enrique Nieloud <enieloud@gmail.com> wrote:
>> http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern
>> 
> 

Hola, No soy de contentar en la lista, mas bien, soy un lector, pero esta 
me interesa.
Me parece que el flaco, simplemente busco un titulo que llame la atencion 
a la hora de escribir un post.. tiro un comentario en twitter, la gente 
desperto, y luego escribio el post.
Mas allá de eso, es una linda charla para tener.
No creo que ORM sea un Anti-pattern. Si concuerdo con el y con varios, en 
que muchas veces la implementacion de un ORM puede ser compleja y su 
utilizacion tambien.
Con respecto a su complucion, donde habla de las bases no-sql, tira un 
parrafo ahi que es practicamente un publicidad de no-sql, pero, como la 
mayoria de los posts de este estilo, no explican, ni linkean, la forma de 
resolver el mapeo de objetos en un noSql sin caer en relaciones. Ej: en 
todos los lugares que lei sobre cassandra, te dicen mete la data 
procesada, y en algun lugar te chantan el client_id o product_id para ir a
buscarlo a el ColumnFamily de prod o clientes, eso no es ni mas ni menos 
que una relacion. Este approach no me gusta nada, porque siento que estoy 
haciendo cagadas.
Igualmente para persistir objetos, existen bases de datos de objetos. ver: db4O

Me parece que el flaco solamente uso Hibernate, y, encima, no sabe usarlo 
o lo uso como overkill.. 
En fin.. me parece que el flaco confunde la diferencia entre la definicion
y la implementacion.. Claramente esta enojado con Hibernate (y otros, tal 
vez) pero eso no hace que ORM sea un anti-pattern.. A mi no me gusta 
Struts (remontandome a mi pasado) y eso no hace que escriba un post sobre 
que MVC es un anti pattern.

En resumen: No veo nada de malo con ORM. Tal vez, haya frameworks que no 
nos agraden, y otros que si. Un patron es una solucion conocida y probada 
a un problema dado. El problema que resuelven los ORM, es la interacción 
con bases de datos relacionales. Por ende no me parece que la solucion a 
ese problema sea utilizar otra base de datos, porque simplemente estas 
cambiando el problema. Creo que los ORM son la solucion acertada a este 
problema. Y si a veces, te tenes que salir de la marca, y escribirte un 
sql a parte, o tratar una situacion como especial porque los frameworks 
que estas utilizando no contemplan ese problema o no lo hacen mas facil, 
no tiene nada de malo. Despues de todo No Silver Bullet