2011-01-10 24 views

Respuesta

2

Usé Active Record en Rails 2 y DataMapper en Merb and Rails 3-ahora uso DM/Rails 3 diariamente. He leído en AR3 pero solo lo uso en un pequeño proyecto (una aplicación interna)

He encontrado que la única diferencia que realmente me importa es DM strategic eager loading. Rara vez hace lo que uno esperaría y lo que hace, lo correcto y lo incorrecto, lo hace con FM.

Con explícita eager loading in AR, no hay duda de lo que debería estar ocurriendo: dice lo que hace y (generalmente) hace lo que dice.

durante la carga ansiosa "automático" suena bien, me parece que tiene dos resultados negativos para mí:

  1. cantidades nada despreciables de tiempo dedicado a la búsqueda de fuentes de exceso de consulta de
  2. código lleno de seudo carga ansiosa hacks en los que las relaciones se materializan y descartan solo para prepararlos y el mapa de identidad de forma que ocasionalmente no se "pegan" y nunca se auto-documentan.

De lo contrario, me parece que AR y DM son las mismas bestias con diferentes puntos. A diferencia de decir, Sequel.

+0

¿Usas la secuela? ¿Si no, porque no? – gucki

+1

@gucki Lo usé para un proyecto hace más de un año, pero cambié a DM desde entonces. Realmente no recuerdo los problemas que estábamos teniendo demasiado bien, creo que * puede haber sido problemas para tratar las relaciones antes de persistir, pero no me gustaría jurarlo. Recuerdo que no había nada de malo con Sequel per se, por ejemplo, errores, y los problemas eran desajustes entre la impedancia de diseño. Si estuviera empezando un nuevo proyecto hoy, sin duda volvería a revisar Sequel, ya que estoy harto de la mentira de ORM estos días. –

11

Prefiero DM a AR. Siento que DM es realmente un ORM mientras que AR es solo un envoltorio alrededor de SQL. DM hace que sea muy fácil cambiar de almacén de datos. La sintaxis de consulta de DM es mucho más homogénea, etc. SEL (carga de impaciencia estratégica) también hace que DM se parezca más a una tienda de objetos que AR.

Además, las clases de DM definen las propiedades por adelantado y hacen que el código sea mucho más legible. Nunca me he perdido migraciones después de venir al mundo DM. (a pesar de que puede tenerlos si realmente lo desea). Con rails 3, estoy casi exclusivamente usando DM.

+0

¿No creen que el costo de implementar DM es demasiado alto? En términos de todas esas gemas que quieras usar, pero suponen que tienes AR y luego necesitas hackear las gemas, etc. Por ejemplo, Devise es una buena gema de autenticación de usuario, pero quiere AR y, aunque ya existe un tercero, gema de dvis-dm es un tercero y quién sabe cuándo dejarán de apoyarlo o cuándo se actualizará Devise sin que se actualice el envoltorio. . Esta es una situación justa y ejemplar. –

+3

devise-dm funciona bien. DM también tiene bastantes gemas de terceros. Con el tiempo, a medida que madure DM, estos problemas se desvanecerán. – piyush

+0

aún no he visto un registro activo que pueda manejar la herencia de tablas de clase, mientras que los datamaps parecen hacerlo. ¿Alguien puede confirmar esto? Gracias –

Cuestiones relacionadas