Что такое Realm в контексте мобильной разработки?

«Что такое Realm в контексте мобильной разработки?» — вопрос из категории Базы данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Realm — это объектно-ориентированная мобильная база данных, созданная как альтернатива SQLite и Core Data. Она хранит данные как живые объекты, что обеспечивает высокую производительность и простой API.

Ключевые особенности:

  • Объектно-ориентированность: Работа с данными как с нативными объектами (Swift/Obj-C, Kotlin/Java).
  • Автообновление: Объекты и результаты запросов автоматически обновляются при изменении данных.
  • Кросс-платформенность: Единая база данных для iOS, Android и других платформ.
  • Встроенное шифрование: Поддержка шифрования данных на диске.

Пример использования в Swift:

// 1. Определение модели
import RealmSwift

class Task: Object {
    @Persisted var title = ""
    @Persisted var isCompleted = false
}

// 2. Запись данных
let realm = try! Realm()
try! realm.write {
    let newTask = Task()
    newTask.title = "Изучить Realm"
    realm.add(newTask)
}

// 3. Чтение и фильтрация данных
let incompleteTasks = realm.objects(Task.self).filter("isCompleted == false")
print(incompleteTasks)

Ограничения и нюансы:

  • Миграции: Изменение схемы требует написания кода миграции вручную.
  • Размер: Библиотека добавляет вес к приложению.
  • Связи: Поддерживает связи между объектами, но с некоторыми ограничениями (например, нельзя хранить циклические ссылки в списках).