Hablando hoy del ORM por referencia para python, SQLAlchemy, el sr @MiguelAngelLV ha recomendado uno para Android.
He visto por ahí que no hay muchos ORM mobile cross-platform, y tampoco hablan muy bien de los que hay. Peeero al parecer hay uno que promete bastante, llamado Realm. Quisiera saber que opináis vosotros de él, ¿lo conocéis?
Realm es… interesante. Lo he usado ya para un par de proyectos pequeños, nunca en uno grande.
La API está bastante bien: cambiar datos en un objeto es prácticamente transparente, pero tiene ciertas cosas que pueden ser un porculo. Ejemplo: si quieres modificar un item que está en la DB, tienes que hacerlo en un realm.write { ... }, sin embargo si no está en la DB o estás modificando un campo no persistible no hace hace falta. Con lo cual acabas haciendo realm.writes “porsi”, vaya a ser que explote.
El tema de las migraciones está bastante bien pensado. Tú cambias la versión y ya hace los cambios en el schema él solo. Si quieres cambiar los datos puedes pasarle una lambda/closure con esos cambios, pero no es obligatorio.
Las búsquedas son una mezcla de “SQL” y el propio lenguaje, así que para búsquedas complejas igual no es muy eficiente. Aparte, Realm no está pensado para ser 100% relacional, es más un añadido que metieron para comodidad que otra cosa.
Por último: Realm es propietario. No es un formato de DB open source y no puedes exportar un SQL de él, como mucho un CSV o montarte un JSON con los datos a exportar.
@klin Con Idiria también hemos usado Realm en varios proyectos. Le seguimos el rastro desde hace varios años
Si todavía no lo has hecho, te recomiendo que te suscribas a su newsletter porque suelen enviar vídeos de charlas muy interesantes sobre Android y Swift.