Кейсы 24 декабря 2019

Бессерверная NoSQL-база данных от компании ObjectBox как новый тренд разработки

Далее

Современный мир задыхается в растущих потоках и объемах информации. В связи с этим увеличивается и необходимость ее структурирования и обработки. На сегодняшний день большая часть информации хранится в базах данных, находящихся на стационарных серверах или в облаках. Основательница компании ObjectBox Вивьен Доллинджер рассказала «Хайтеку» о том, как зарождались первые NoSQL-базы, о трудных буднях разработчика приложений и интернета вещей, а также об опасностях компьютерного мира.


Вивьен Доллинджер — магистр делового администрирования MBA и PhD в области бизнеса, основатель компании ObjectBox.

ObjectBox — английско-немецкая компания-разработчик одноименной объектно-ориентированной NoSQL-системы управления базами данных для мобильных устройств и IoT.


Создание новой СУБД похоже на прыжок в воду с обрыва

До недавних пор понятие СУБД прочно ассоциировалось с мощными серверами, огромными объемами данных и специалистами, владеющими специальными языками программирования — SQL. Но представьте, что вы разработчик приложений, и вам понадобилась небольшая, но простая, автономная и быстрая СУБД, например, для мобильника? Или же для какого-то иного интеллектуального устройства, которые всё больше входят в нашу повседневную жизнь? Было бы странно устанавливать туда какого-то монстра, который будет весить больше, чем само приложение!

До создания ObjectBox Вивьен Доллинджер и ее компаньон Маркус Юнгингер занимались разработкой мобильных приложений. В процессе работы они столкнулись со сложной задачей: найти СУБД для своих программ — быстродействующую, с высокой степенью надежности и простую в работе. Не найдя ни одной подобной, Маркус и Вивьен решили создать собственную.

Как это ни парадоксально, но основные проблемы, связанные с реляционными базами данных, вытекают из их основных преимуществ. Например, строгое следование правилам ACID неизбежно приводит к падению производительности системы, а в случае попытки масштабирования СУБД на несколько вычислительных систем, как это делается в облачных вычислениях, приводит к тому, что одновременное предоставление доступности и согласованности оказывается невозможным.

С другой стороны, задачи обработки больших данных не требуют столь жесткого подхода и вполне готовы мириться с некоторой прогнозируемой степенью неопределенности. Также чрезвычайно замедляет работу и накладывает ограничения на тип хранимых объектов и сама слишком умная и гибкая модель SQL — современные задачи такие возможности полностью никогда не используют, ограничиваясь более простыми алгоритмами обработки и хранения.

Команда ObjectBox

Образно SQL и NoSQL базы можно сравнить с перекрестками со светофором и с круговым движением. В первом случае движение более упорядочено, риск аварий минимален, но ресурсы используются неэффективно, например, водители будут ожидать разрешения двигаться даже при пустой пересекающей дороге, в другом случае пропускная способность гораздо выше, но требует от водителей повышенного внимания и навыков.

«Где-то до 2009 года мы работали с СУБД, использующими SQL. Рост объемов информации и типов сохраняемых данных потребовал разработки БД с новым подходом к реализации функций. Классические реляционные базы данных стали демонстрировать низкую производительность, зависать от большого количества запросов, и, что в принципе недопустимо, терять часть данных, — рассказывает Вивьен. — Мы проанализировали существующие на рынке продукты и пришли к выводу, что ни один из них не удовлетворяет наших потребностей. Нам требовалась быстрая и безотказная обработка запросов. В итоге мы решили создать свой, соответствующий духу эпохи продукт».


Система управления базами данных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.

ACID (Atomicity, Consistency, Isolation, Durability) — принципы работы транзакционных систем, таких как СУБД: атомарность (гарантия полноты транзакци), согласованность (гарантия фиксации только допустимых результатов), изолированность (параллельность транзакций не оказывает влияния на результат) и долговечность (все завершенные транзакции должны оставаться неизменными при любых сбоях).

SQL — «язык структурированных запросов» — язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Реляционная база данных — СУБД, управляющая реляционными данными, то есть построенными на математическом понятии «отношение». Наиболее простое образное представление отношений записей в реляционной базе — таблица.


«Наша команда изначально состояла из нас двоих — меня и Маркуса. Пришлось прикладывать титанические усилия, чтобы всюду успевать и реализовывать задуманное. Мы пробовали использовать ORM, который располагался поверх SQLite, а затем пошли ва-банк и создали полностью с нуля NoSQL-СУБД ObjectBox. Оглядываясь назад, осознаю — оно того стоило! Создание абсолютно новой СУБД было похоже на прыжок в воду с обрыва — относительное спокойствие до и сумасшедшая по интенсивности работа после, — вспоминает Вивьен. — Спустя 20 дней после принятия решения и множества экспериментов с кодом мы решили привлечь еще людей и создать команду, в которой Маркус занял место технического директора, а я взяла на себя руководство проектом — выбирала и корректировала общий курс, направляла всех членов команды».


Маркус Юнгингер — создатель EventBus (система рассылки оповещений для Android и Java) и greenDAO (компактная и быстрая ORM для Android под SQLite), в настоящее время технический директор и соучредитель ObjectBox. Свыше 20 лет занимается программированием и считается одним из лучших разработчиков GitHub, крупнейшего в мире сообщества разработчиков программного обеспечения.

ORM (Object-Relational Mapping, рус. объектно-реляционное отображение, или преобразование) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

SQLite — компактная встраиваемая (бессерверная) СУБД.


Сейчас в команде ObjectBox работают девять человек. Четверо из них работают под руководством Вивьен в бизнес-сегменте, преимущественно в Лондоне. А пятеро — в разработке софта с Маркусом. Изначально вся команда базировалась в Берлине. Но ObjectBox — продукт, позволяющий работать с ним удаленно, так что теперь часть группы программистов рассеяна по Европе и работает из дома.

Как это устроено внутри

Маркус и его команда разработчиков пытались реализовать сразу несколько важных моментов при разработке ObjectBox — короткий и понятный код, кроссплатформенность, возможность запуска модельного тестирования одновременно с работой в базе, надежная эксплуатация без подвисаний и остановок.

«Перед нами стояла задача выполнять граничные вычисления с использованием СУБД и синхронизировать IoT с мобильными устройствами. ObjectBox должен был представлять собой уникальную комбинацию NoSQL и объектно-ориентированного программирования, предоставляя первое высокопроизводительное NoSQL-решение объектно-ориентированной встроенной базы данных для небольших устройств», — рассказывает Вивьен.

Команда ObjectBox

Для разработки БД Маркус предложил платформу Android, спроектировал всё так, чтобы для работы с ObjectBox можно было использовать любой из пяти языков программирования — Java, Kotlin, Go, Swift или C. Такая политика была выбрана для расширения круга разработчиков, выбирающих БД от компании ObjectBox как основу для своих приложений.

Для ядра был выбран C++ — один из основных языков программирования. Он универсален и используется для создания драйверов, приложений для мобильных и смартфонов, операционных систем и разнообразных игр.

«Он полностью отвечал нашим запросам, так что сомнений не возникло. ObjectBox задумывался нами как БД для разработки не только мобильных приложений, но и интернета вещей», — говорит Вивьен.


Граничные вычисления — технология, подразумевающая обработку данных непосредственно на IoT-устройствах.

NoSQL — термин, обозначающий ряд подходов к реализации СУБД, имеющих диаметральные отличия от моделей с доступом к данным средствами языка SQL.

IoT (интернет вещей) — взаимодействие гаджетов и иных электронных устройств с внешним окружением, в том числе и между собой.


Как и в случае человеческого общества, объекты, хранимые в СУБД, также как-либо взаимосвязаны друг с другом. Такие взаимосвязи принято называть отношениями, и их описание зачастую весит больше, чем сам объект. При работе СУБД смотрит (обращается) не только к самим объектам, но также и к тому, как они взаимосвязаны друг с другом, то есть к их отношениям. Представьте, что вы в браузере смотрите не только текущую страницу, но и все страницы, на которые она ссылается — это будет наиболее наглядным, хотя и упрощенным примером отношений в СУБД. Или представьте формулу, в которой цифры и переменные — это объекты, а математические знаки — отношения между ними. Основную задачу, скорость работы, удалось решить за счет использования опережающей загрузки отношений.

Общая проблема с отношениями в том, что обычно они загружаются по стратегии lazy (с англ. «лениво» — «Хайтек»), то есть по факту обращения к ним. Это приводит к задержкам при первом обращении к отношению, поскольку данные должны быть извлечены из хранящейся на относительно медленном по сравнению с оперативной памятью носителе базы данных.

ObjectBox решает эту проблему использованием «нетерпеливого» режима (eager strategy), позволяя запросам предварительно загружать отношения в фоновом режиме. Это делает потоковую обработку запросов очень быстрой. Как только запрос обработан, предварительно загруженные отношения избавляют СУБД от необходимости частого обращения к базе данных. Кроме того, для еще большего ускорения обработки для каждого запроса вы можете указать, какие именно отношения необходимо предварительно загрузить в зависимости от типа объекта или других параметров.

Децентрализация и доступность частных данных

Вторая задача, которая стояла перед командой ObjectBox, напрямую свяазана с областью применения СУБД — в IoT, IIoT, мобильных устройствах и гаджетах. Так как все их отличают достаточно небольшая мощность и ограниченный объем памяти, то и размер самой СУБД, и ее ресурсные аппетиты должны быть как можно меньше. Жесткая оптимизация кода позволила сделать размер приложения с СУБД менее 1 МБ.

«При презентации своих разработок потенциальным клиентам мы всегда учитываем их требования и задачи, которые должны быть реализованы с помощью наших продуктов. Изначально мы работали только над решением собственных задач в создании приложений, позже поняли — похожие проблемы волнуют многих в нашей сфере», — констатирует Вивьен.

СУБД ObjectBox придерживается принципа разумной децентрализации, когда часть обработки данных смещается из облака в периферию, в IoT, освобождая тем самым ресурсы облака, но само хранение остается централизованным. Команда ObjectBox считает, что сохранение данных в облачных хранилищах и синхронизация устройств между собой позволяют максимально отойти от граничных вычислений. Это позволит не загонять разработки ИТ в глухой угол, а дальше совершенствовать их.

Надежность, простота и скорость

Несмотря на различные подходы к реализации, производительность СУБД можно сравнить в одинаковых условиях на одинаковых типах данных. На приведенных графиках, полученных при помощи теста с открытым исходным кодом, показана сравнительная скорость в миллисекундах СУБД ObjectBox, Realm и Room на стандартных операциях — доступ, обновление, вставка и удаление.

Отдельное приложение ObjectBox Sync выполняет сразу несколько функций:

  • через интернет обеспечивает синхронизацию имеющихся на устройстве данных c другими устройствами или облаком;
  • в зависимости от заданных настроек определяет объем передаваемых данных и периодичность синхронизации, тем самым снижая затраты на облачные вычисления;
  • позволяет гибко настраивать устройство в ручном или автоматическом режиме через интерфейс с настройками, командную строку, файлы с настройками или API;
  • обеспечивает безопасность собранных и передаваемых устройством данных, так как без подключения к сети никакая информация не передается.

Таким образом, разработчики могут:

  • создавать продукты для граничных вычислений;
  • синхронизировать их с неограниченным количеством устройств;
  • выполнять задачи на граничных устройствах, не задействуя при этом ресурсов облака;
  • через сеть передавать в реальном времени полученные на граничных устройствах результаты сбора данных или вычислений в облачные хранилища.

SaaS — одна из форм облачных вычислений, модель обслуживания, при которой подписчикам предоставляется готовое прикладное программное обеспечение, полностью обслуживаемое провайдером.

Rеalm, Room — СУБД.


Участие в конкурсах — дорога к инвестициям

«Долгие годы компания была частной. Нас, владельцев, не устраивали ее темпы роста, и вполне логичным шагом стал поиск внешнего финансирования. В 2017 году мы подали заявку и успешно приняли участие в Techstars London 2017 — одной из крупнейших программ-акселераторов для стартапов. Весной 2018 года известные всему миру инвестиционные компании Vito Ventures и Cavalry Ventures предоставили ObjectBox $2 млн в качестве первых вложений, — делится Вивьен. — Я и сейчас бесконечно благодарна им за веру в наш проект».


Techstars — бизнес-акселератор, основанный в США в 2006 году. По состоянию на 2019 год фонд Techstars оказал поддержку более 1 600 компаний с общей рыночной капитализацией в $18,2 млрд. Критерии отбора очень жесткие — менее 1% заявителей принимаются в программу. Имеет разветвленную международную сеть, поддерживаемую государствами. Например, Techstars London предлагает участнику программы получение предпринимательской визы Tier 1 (Entrepreneur) Visa и право официально работать в Великобритании на протяжении трех лет. В случае, если компания после трех лет существования создает десять и больше рабочих мест, то участники стартапа и их семьи имеют право претендовать на получение постоянного жительства в Великобритании.


«Весной 2018 года известные всему миру инвестиционные компании Vito Ventures и Cavalry Ventures предоставили ObjectBox $2 млн в качестве первых вложений, — рассказывает Вивьен. — Я и сейчас бесконечно благодарна им за веру в наш проект.

Наши инвесторы сказали, что ключевыми факторами, повлиявшими на решение выписать чек, стала репутация команды в сообществе разработчиков и неординарное техническое решение. Тем не менее, для нас, как для технических специалистов, по-прежнему остается главная задача — доведение продукта до широкой аудитории».

Крупный пилотный проект для железных дорог

«Наш последний проект в области IoT стал пилотным проектом совместно с Kapsch в железнодорожной отрасли», — говорит Вивьен. Kapsch является давним партнером железнодорожных операторов и помогает отрасли переходить в цифровую эпоху. Проблема заключалась в том, что железнодорожным операторам постоянно не хватает данных о происходящем на путях, в тоннелях и в поездах.


Kapsch — австрийская корпоративная группа с 5 000 сотрудников по всему миру, работающая в области телематики, ИТ и телекоммуникаций. Основана в 1892 году.


Интегрируя СУБД ObjectBox в продукт Kapsch для железных дорог, он смог обеспечить превосходную скорость и непрерывность передачи данных для своих клиентов. Это означает, что критические данные доступны по мере необходимости и обрабатываются в СУБД в режиме реального времени. В кроссплатформенном решении Kapsch используются критически важные данные, позволяющие избежать дорогостоящих простоев и ремонтов, а также сократить время и задержки обслуживания.

Основной задачей при оптимизации работы операторов железных дорог является получение информации в реальном времени о состоянии железнодорожных путей, поездах и степени их загрузки. Диспетчерским службам нужно в любой конкретный момент времени абсолютно достоверно знать, где находятся поезда, локомотивы, вагоны, персонал и грузы, а руководству компании — иметь прозрачную финансово-логистическую модель перевозок. Достоверность и скорость обработки данных имеют самое важное значение в железнодорожной отрасли. Это повышает за счет более эффективного управления трафиком финансовые результаты компании и безопасность грузо- и пассажироперевозок.

Ближайшие перспективы

По разным экспертным оценкам ожидается, что уже к 2020 году в мире будет от 21 (Gartner) до 200 (Intel) млрд умных сенсоров и других IoT-устройств, которые будут генерировать по меньшей мере 507,5 ЗБ (зеттабайт) данных. С точки зрения аналитиков, также ожидается многократный рост компаний, специализирующихся на хранении и обработке данных для IoT. Но рынок IoT также нельзя назвать однородным. Уже сейчас эксперты выделяют на нем отдельное направление — IIoT, или промышленный интернет вещей, когда любая производственная единица является обладателем собственного «интеллекта».

Ключевыми рынками для ObjectBox являются IoT и Mobile. На рынке IoT основное внимание компания уделяет Industry 4.0 (IIoT), умным автомобилям и городам.

«Мы планируем заинтересовать таких крупных клиентов, как IoT-маркеты, производителей умных автомобилей и платформы умных городов. Наши основные конкурентные преимущества — высокая скорость, небольшой размер и разумная ценовая политика. Но это не значит, что мы невнимательны к нуждам каждого индивидуального клиента. Мы рады каждому новому разработчику, присоединившемуся к нам», — говорит Вивьен.

Хотя проект был запущен всего несколько лет назад, ObjectBox уже сейчас пользуется доверием более 150 тыс. разработчиков, которые создали более 20 тыс. уникальных приложений. Это число включает в себя только приложения с количеством установок свыше 20 млн.