Михаил Головко рассказал о принципах устройства и основных возможностях YapDatabase.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
4. YapDatabase
План
• Реляционные и нереляционные БД
• Хранение и работа с данными в YapDatabase
• Расширения YapDatabase
• YapDatabase + VIPER
5. YapDatabase
Реляционная БД
Реляционная база данных — это совокупность
взаимосвязанных таблиц, каждая из которых
содержит информацию об объектах определенного
типа.
Таблицы реляционной БД должны отвечать
требованиям нормализации отношений.
6. YapDatabase
Реляционная БД
Плюсы
• Нет дублирования информации
• Над таблицами можно производить различные
операции
• Данные в таблице имеют чётко определённую
структуру
• Целостность данных гарантируется БД
10. YapDatabase
Нереляционная БД
Плюсы
• Динамическая модель данных, которая заранее
может быть не определена
• В рамках одного домена (коллекции) данные
могут иметь различную структуру
• Несвязанность данных
20. YapDatabase
Connection
• Подключение к базе, через которое можно
работать с данными
• Аналог NSManagedObjectContext
• Одно соединение на запись
• Несколько на чтение для ui
35. YapDatabase
View
• Похоже на NSFetchedResultsController
• Вычисляется на этапе записи в БД
• Данные группированы по коллекциям
• Данные отсортированы
• Данные отфильтрованы
• Может содержать различные объекты
• Ручное обновление данных немного сложнее, чем
NSFetchedResultsController
39. YapDatabase
Mapping (View)
• Настраивать список групп, их порядок
• Можно реверсировать данные
• Динамические и статические секции
• Динамически и статически диапазон
• Зависимость ячеек от другой
62. YapDatabase
Итог
Плюсы
• Нет NSManagedObject
• Если мы запросили данные - они точно будут
• Можно оптимизировать работу с данными при
помощи кэширования
• Не нужна перегонка объектов из
NSManagedObject в PONSO
64. YapDatabase
Итог
Минусы
• Ручная миграция
• Нет понимания работы с коллекциями
• Сложная работа с relation
• Все данные объекта выгружаются в памяти
• Если нужны связи из других коллекций, их нужно
доставать отдельно