Блеск и нищета key-value-базы данных LMDB в мобильной разработке Архитектура
Руководитель разработки Облака Mail.Ru для iOS.
Telegram: posipov
Email: inbox@pavelosipov.net
Key-value-базы данных – редкий зверь в мобильной разработке. Их крайне низкоуровневый API не позволяет быстро моделировать хранилища сущностей нетривиальной предметной области. В то же время для простых кэшей достаточно компонентов из платформенных SDK.
Однако в Облаке Mail.Ru в определённый момент времени скорость работы кэша метаданных стала безусловным приоритетом. Существуют пользователи, которые хранят в облаке до 500 тыс. файлов и папок. Решения на основе CoreData, Realm и даже SQLite не позволили нам реализовать операции вставки, слияния и выборки метаданных о структуре деревьев такого объёма за приемлемое время.
В докладе я расскажу, как мы променяли удобство API традиционных баз данных на скорость. В начале будут рассмотрены вопросы моделирования таблиц поверх абстракций "ключ" и "значение", связывание таблиц между собой и построение индексов по полям хранящихся объектов. Далее последует небольшой экскурс во внутреннее устройство LMDB с указанием значимых в прикладной мобильной разработке особенностей. В заключение покажу, как мы сделали хранилище кросс-платформенным, написав логику работу с данными на С++ и сгенерировав Java- и Objective-C-обёртки для на него с помощью Dropbox Djinni.