Ответ
Да, есть. Работал с Realm как локальной NoSQL БД для Android. Основные преимущества:
- Нативная интеграция (нет ORM-прослоек)
- Поддержка LiveData/RxJava
- Автообновление объектов (не нужно перезагружать данные)
Пример базового использования:
// Инициализация
val config = RealmConfiguration.Builder()
.name("myrealm.realm")
.build()
Realm.setDefaultConfiguration(config)
// Запись
realm.executeTransaction { realm ->
val user = realm.createObject(User::class.java)
user.name = "John"
}
// Чтение
val users = realm.where(User::class.java).findAll()
Нюансы:
- Требуется закрывать инстансы Realm в onDestroy()
- Миграции схемы сложнее, чем в Room
- Нет поддержки Compose в observe() без костылей
Использовал в проектах с оффлайн-кэшированием и сложными связями между объектами.