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.