EBay представил ql.io, SQL-подобный язык для взаимодействия с web-сервисами

Материал из Викиновостей, свободного источника новостей

4 декабря 2011 года

Компания eBay представила проект ql.io (Архивная копия от 8 февраля 2015 на Wayback Machine), в рамках которого подготовлена реализация декларативного предметно-ориентированного языка для формирования выборок, выступающая в роли надстройки над традиционным Web API существующих сервисов. Язык ql.io базируется на идеях SQL и использует при манипуляциях данными формат JSON. Целью проекта является сокращение времени разработки за счет упрощения процесса работы с данными через использование более привычных и наглядных механизмов формирования запросов. Исходные тексты ql.io написаны на языке JavaScript и распространяются под лицензией Apache.

Наиболее оправдан ql.io в мэшап-приложениях, манипулирующих данными из разрозненных web-сервисов, например, комбинирующих запросы к API Google Maps и API eBay. При помощи ql.io данные, полученные из разных Web API, обрабатываются в рамках единых операций объединения и агрегирования, примерно также как оператор SELECT обрабатывает данные из нескольких разных таблиц. Используя ql.io разработчику больше не нужно на каждом шагу оглядываться на особенности Web API разных сервисов, достаточно один раз определить их спецификацию и в дальнейшем обращаться к ним через унифицированный интерфейс.

В качестве демонстрации возможностей ql.io приводится пример (Архивная копия от 18 января 2015 на Wayback Machine) выполнения действия по поиску продукта с выводом координат продавцов. Алгоритм выполнения данной операции сводится к выводу из базы eBay идентификаторов продуктов по ключевым словам, получение через отдельный API параметров заявок и определение для заявок координат через Google Geocoding API. При традиционном подходе для реализации указанного примера потребовалось бы написание довольно объемного кода, отправляющего запросы и разбирающего вывод от трёх разных Web API. При использовании ql.io все эти действия укладываются в один SELECT-запрос.

По аналогии с SQL вначале формируются (Архивная копия от 18 января 2015 на Wayback Machine) виртуальные таблицы, отождествлённые с тем или иным существующим Web API. Затем для обработки данных и формирования запросов к Web API можно использовать синтаксис SQL-оператора SELECT (Архивная копия от 20 января 2015 на Wayback Machine). При этом поддерживается возможность совершения вложенных запросов, агрегации данных, сортировки и объединения результатов (JOIN) нескольких запросов к различным таблицам, за которыми могут стоять Web API совершенно разных сервисов. Результат возвращается в формате JSON. Для добавления данных предлагается использовать оператор INSERT (Архивная копия от 19 октября 2014 на Wayback Machine).

Пример создания таблицы и простого SQL-запроса (в действии скрипт можно запустить на специальной демонстрационной web-консоли (Архивная копия от 20 января 2015 на Wayback Machine)):


create table google.geocode
on select get from "http://maps.googleapis.com/maps/api/geocode/{format}?sensor=true&address={^address}"
using defaults format = 'json'
resultset 'results';

select g.geometry.location from google.geocode as g where g.address = 'г. Москва, Красная площадь';

Кроме увеличения удобства обращения к Web API и сокращения числа строк кода с реализацией логики работы, новый язык также позволяет уменьшить задержки и увеличить скорость выполнения операций за счет сокращения числа запросов к серверу, выполнения операций по агрегации данных на сервере и передачи клиенту только необходимых для web-приложения данных. Для оптимизации выполнения сложных запросов, требующих работы с большими объемами данных, в рамках проекта подготовлен специальный серверный шлюз (Архивная копия от 20 января 2015 на Wayback Machine) (по сути выполняет задачи СУБД), который может взять на себя первичную загрузку и обработку данных, возвращая клиенту уже готовый результат. Компоненты шлюза ql.io запускаются поверх серверной платформы node.js. На шлюз загружаются готовые скрипты в формате ql.io, которые затем вызываются из конечного web-приложения через определённый в скрипте интерфейс WebSocket или HTTP API (web-приложению достаточно отправить на шлюз обычный http-запрос с необходимыми параметрами).

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «eBay представил ql.io, SQL-подобный язык для взаимодействия с web-сервисами», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.