Разработка качественного приложения требует серьезных усилий, значительная доля которых приходится на проектирование и постоянную модификацию базы данных, организацию взаимодействия бэкенда с базой данных, разработку промежуточных слоёв и т.д. Работа с бэкендом и базой данных не прощает ошибок — нет ничего страшнее, чем проблемы, возникающие на стороне базы данных, когда приложение уже вышло на рынок.
Перед тем, как создать приложение, проводится большая работа по подготовке. В частности, это касается базы данных: строится схема и структура базы. Но это еще полдела, в процессе разработки и развития приложения схема базы данных практически всегда претерпевает существенные изменения. Например, разработчики положили все товары в одну таблицу, но со временем появилось требование разнести разные товары по разным таблицам. Кроме модификации схемы, требуется также и постоянная модификация промежуточных слоев. Для всего этого необходим ряд знаний и навыков, которые формируются не за месяц и даже не за год, и даже при наличии таких навыков сроки разработки все время сдвигаются.
Бэкенд в облаке
Было бы по меньшей мере удивительно, если во время повсеместного бума облачных технологий в стороне остались базы данных. Острая конкуренция в сегменте создания web-приложений и пользовательских мобильных приложений дала сильный толчок рынку. Многие компании увидели, насколько программистам важны инструменты, позволяющие многократно увеличить скорость разработки. Одно из решений — создание BaaS (backend as a service, есть ещё вариация MBaaS — mobile) — пакета услуг, представляющего собой серверную инфраструктуру в облаке и прослойку для работы с ней. BaaS нацелен на снижение сложности разработки приложений, нормализацию серверного кода, увеличение скорости создания конечного продукта до 70%. Он превращает весь бэкенд практически в ноль строчек кода — в поставляемой провайдером услуге предусмотрена и база данных, и обращения к серверу, и, например, интеграция со сторонними сервисами или социальными сетями. BaaS предоставляет разработчику доступ к базе данных в облаке плюс программную прослойку и API для работы с базой, которая гораздо более масштабируема и универсальна по сравнению с базой данных на локальных ресурсах.
Рынок BaaS оценивается экспертами как динамичный и быстрорастущий. Так, специалисты исследовательской компании Technavio в своем отчёте прогнозируют среднюю годовую скорость роста рынка BaaS и MBaaS (мобильный BaaS) 101,88%, что в абсолютных величинах составляет рост с $1.76 млрд в 2015 г. до $29.16 млрд в 2019 г. График впечатляет:
На рынке BaaS присутствует множество игроков, которые предоставляют схожие услуги: Appery.io, Parse, Firebase и др. Все они предлагают в качестве хранилища различные базы данных: реляционные, документо-ориентированные, иерархические, и т.д. В этом посте речь пойдёт о решении, основанном на взаимодействии с графовой базой данных NitrosBase.
Графовая база и гибкая схема
Графовая база данных по сравнению с классической реляционной или документо-ориентированной предоставляет существенно больше гибкости при разработке приложений. Схема данных может меняться на лету; каждый объект может содержать произвольный набор полей; поддерживаются связи многие-ко-многим; запросы к такой базе данных (особенно сложные join запросы) строятся гораздо проще, чем к другим базам данных; и т.д. Графовые базы данных подходят для решения любой задачи, но особенно они помогают тем, чьи программы предполагают построение глубоких связей, когда данные могут быть связаны через несколько отношений (структуры корпораций, социальные сети, приложения, требующие учета предпочтений пользователей, медицинские системы, системы управления производством, управление проектами, документооборот и базы знаний, новостные системы и т.д.).
Если говорить кратко, то Databoom позволяет фронтенду мобильных и web-приложений напрямую обращаться к базе данных, создавать объекты и структуры, не заботясь о том, как эта база организована.
Databoom: один шаг от базы данных к готовому приложению
Databoom предлагает решение, которое избавляет разработчика от многих проблем и трудностей, связанных с организацией бэкенда приложения. Сейчас Databoom работает с графовой базой данных NitrosBase. Однако в дальнейших планах разработка интерфейсов и к другим базам данных. Единственный момент, который следует учитывать, это значительное падение скорости отклика базы данных при работе с приложением в случае использования классических реляционных баз данных. Также при использовании документо-ориентированных баз данных возможно возникновение проблем с моделью, например, с построением отношений многих ко многим, выполнением join запросов, сложных sparql запросов. Фактически Databoom — это программная прослойка между приложением и базой данных, которая позволяет выполнять ряд важных для разработчика функций и отменяет необходимость писать серверную инфраструктуру для приложения.
В своём сервисе мы используем технологии, которые здорово облегчают жизнь пользователей. Расскажем о некоторых из них.
Использование протокола OData. Мы о нём писали уже не раз (здесь и здесь) и готовы писать ещё.
OData – это открытый REST протокол для получения и обновления данных. Протокол позволяет выполнять операции с ресурсами (идентифицируемыми через URI), используя в качестве запросов HTTP-команды (GET, PUT, POST, PATCH, DELETE), и обмениваться данными в формате JSON. OData является одним из лучших стандартов для создания RESTful API.
В протокол OData изначально заложена возможность работы с сильно связанными данными. Но главное, протокол OData находит все большую поддержку у разработчиков библиотек, фреймворков и контролов.
Благодаря этому Databoom прекрасно работает со сколь угодно сложно организованными данными, а также автоматически (на уровне binding) работает с ведущими JavaScript библиотеками и контролами. Именно поэтому databoom может использоваться для быстрой разработки и прототипирования приложений.
Поддержка различных протоколов, фреймворков, библиотек. Благодаря протоколу OData множество различных библиотек и контролов автоматически настраиваются на хранилище databoom. Кроме того, databoom поддерживает (или планирует поддержать) также и другие библиотеки и протоколы, например, контролы под Angular.js, jQgrid, DataTables, Webix и т.д. Это позволяет работать с Databoom самому широкому кругу разработчиков, которые привыкли пользоваться определённым набором инструментов.
Использование графовых баз данных. Они дают огромные возможности для работы с данными: хранят и извлекают связанные данные любой сложности, используют отношение многих ко многим, сохраняют данные «как есть», даже если это сложно организованные данные. Преимуществом графовых баз данных является информационная гибкость — при такой организации базы данных допустимы абсолютно любые связи между данными, нет лимитов на число связей между записями.
Поддержка языка запросов SPARQL. OData — очень удобный язык запросов для большинства задач. Но для решения определённых задач и построения сложных запросов он недостаточно мощен. Поэтому Databoom поддерживает также язык запросов SPARQL (SPARQL Protocol and RDF Query Language), наиболее подходящий для создания запросов к графовым базам данных. Основная часть запроса на SPARQL — шаблон, описывающий подграф, который требуется найти в основном графе. Это более мощный и гибкий язык запросов, чем SQL, его применение позволяет строить самые сложные запросы к базе данных. Можно комбинировать OData и SPARQL запросы к одним и тем же данным.
Использование JS controls, которые позволяют применять при разработке приложений единую технологию JavaScript, минимизируя использование HTML и CSS, а также легко работают с базой данных. Частным случаем использования JS controls являются грид контролы, позволяющие группировать записи по нескольким колонками и таким образом создавать интересные вложенные структуры для удобства пользователей.
Быстрое прототипирование и использование JS controls. Сегодня на рынке существует множество сервисов, которые позволяют создавать фронтенд приложения в несколько строк кода. Это сервисы, предлагающие многочисленные прототипы, шаблоны и формы для разработки приложений, например, Webix, Kendo UI, DevExtreme Web, Syncfusion HTML5 controls, Infragistics HTML5 controls, OpenUI5, Wijmo, jQgrid, и проч. Использование этих библиотек вместе с databoom дает куммулятивный эффект и позволяет максимально быстро создавать полноценные приложения.
Дополнительные сервисы и развитие. В Databoom предусмотрено множество дополнительных, востребованных пользователями возможностей и сервисов:
- Синхронизация данных через WebSockets. Она используется там, где нужны “живые данные”. Например: чат-приложение, табло биржи, программы мониторинга в реальном времени (спортивные соревнования), и т.д.
- Работа в оффлайн режиме с последующей синхронизацией данных на сервере без прерывания процесса работы приложения
- Управление файлами
- Управление пользователями и правами доступа
- Модуль e-mail и sms для подтверждений, рассылок и т.д.
Всё перечисленное делает Databoom мощным инструментов в руках разработчика. Он получает сервис для работы с графовыми базами данных, которые дают серьёзное преимущество при проектировании сложных приложений. Сегодня Databoom доступна абсолютно всем, вне зависимости от потребностей и нагруженности приложения.
Databoom может быть размещена на собственных серверах Databoom (для бесплатных пользователей) и на любом сервере, который выберет заказчик, включая его собственный сервер (для платных). Управление Databoom осуществляется через специальную control panel, которая позволяет создавать группы, пользователей с правами, логином и паролем, заполнять посредством JSON-файлов и очищать базу данных, прогружать в базу файлы, писать и отправлять запросы.
Используя сервис Databoom, разработчик может отвлечься от утомительной работы над «допиливанием» бэкенда и сосредоточиться на фронтенде и графическом интерфейсе, опережая возможных конкурентов при выходе на рынок. Недаром девиз Databoom: «Кратчайший путь от идеи до рынка». Мы знаем, как его пройти.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий