OData — это веб-ориентированный API-интерфейс для доступа к данным и манипулирования ими. Он подобен API-интерфейсам mini-ODBC и JDBC, но в отличие от них специально ориентирован на Интернет. Точнее говоря, OData позволяет клиентам конструировать URI-идентификаторы для именования набора сущностей, осуществлять фильтрацию содержащихся в этом наборе сущностей, а также прослеживать отношения со связанными сущностями и коллекциями сущностей. OData предоставляет механизмы для ресурсов (т.н. "поставщиков"), позволяющие представить "выставляемые" ими описания структур данных, и механизмы для клиентов (т.н. "потребителей"), позволяющие посредством протокола HTTP получить выставленные порции ресурсов и манипулировать ими. Веб-ориентированный API-интерфейс OData описывает, как должны быть отформатированы запросы от клиентов и результаты от поставщиков. Документы со спецификациями OData были представлен в организацию OASIS (Organization for the Advancement of Structured Information Standards) в мае 2012 г.

Сюзан Малайка, старший инженер, IBM

Сюзан Малайка (Susan Malaika) работает старшим инженером в отделе IBM Information Management Group (часть IBM Software Group). Специализируется на XML, Web и базах данных. Разработала стандарты, поддерживающие данные для сетевых сред на Global Grid Forum. Являясь разработчиком программных продуктов IBM, работает также в качестве интернет-специалиста, аналитика данных и разработчика приложений. Соавтор книги о Web и опубликованных статей по обработке транзакций и XML. Член IBM Academy of Technology.



02.04.2013

Обзор OData

OData — это веб-ориентированный API-интерфейс для доступа к данным и манипулирования ими. Он подобен API-интерфейсам mini-ODBC и JDBC, но в отличие от них специально ориентирован на Интернет. Точнее говоря, OData позволяет клиентам конструировать URI-идентификаторы для именования набора сущностей, осуществлять фильтрацию содержащихся в этом наборе сущностей, а также прослеживать отношения со связанными сущностями и коллекциями сущностей. Для получения дополнительной информации обратитесь к статье Introduction OData : Data Access for the Web, the cloud, mobile devices, and more (Представляем OData: доступ к данным с помощью Интернета, облачной среды, мобильных устройств и т. д.).

Рисунок 1. Выставление базы данных в Интернете с помощью OData-поставщика общего назначения
Exposing database on the Web through a general purpose OData provider

В схеме на рисунке 1 показано, как такой ресурс, как база данных, может быть выставлен в Интернете при посредстве OData-поставщика общего назначения. Синтаксис OData позволяет с помощью Web-браузеров подергать данные в вышеупомянутой базе данных различным манипуляциям (создание, обновление, удаление, запрос).

Рисунок 2. Язык CSDL (Conceptual Schema Definition Language)
CSDL (Conceptual Schema Definition Language)

На рисунке 2 показана схема языка CSDL (Conceptual Schema Definition Language). CSDL — это опциональный инструмент, помогающий приложениям-потребителям понимать структуру выставляемых данных. CSDL подобен метаданным в JDBC and ODBC, он помогает клиентским приложениям понимать, к чему именно они обращаются.

В Интернете имеются тысячи веб-ориентированных API-интерфейсов. OData — это один из примеров такого API-интерфейса. Более подробную информацию о веб-ориентированных API-интерфейсах можно получить на веб-сайте: Programmable Web. Стандартизация таких интерфейсов позволит улучшить консолидацию в этом важной технологической области и поможет инновациям идти в ногу с потребностями рынка, в частности поддерживать новые конструкции данных и инициативы в сфере открытых данных.

OData в организации OASIS

Проект хартии по OData был представлен в организацию OASIS (Organization for the Advancement of Structured Information Standards). Ниже приведен фрагмент текста из этого документа.

Работа будет ориентирована на достижение следующих целей.

  • Создание RESTful-сервисов данных на базе HTTP, возможность идентифицирования ресурсов с помощью URI-идентификаторов (Uniform Resource Identifier) и определения ресурсов с помощью абстрактной модели данных, возможность публикования и редактирования веб-клиентами с использованием простых HTTP-сообщений.
  • Выставление и получение информации из различных источников, включая, но не ограничиваясь, реляционные базы данных, файловые системы, системы управления контентом и традиционные веб-сайты.

Документы со спецификациями OData, представленные в организацию OASIS, а также проект хартии доступны по следующим ссылкам.

Помимо спецификаций OData в организацию OASIS были представлены следующие четыре документа с расширениями OData.

Эти документы с расширениями призваны инициировать работу в предлагаемом техническом комитете OASIS по OData (OASIS OData Technical Committee). На веб-сайте организации OASIS можно прочитать полный текст хартии по OData и документы с расширениями.

OData и продукты IBM

Следующие продукты IBM поддерживают OData.

Примеры OData

В данном параграфе приведено несколько простых примеров на OData, обращающихся к сервису Netflix.

http://odata.netflix.com/v2/Catalog/

returns

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<service xml:base="http://odata.netflix.com/v2/Catalog/"
         xmlns:atom="http://www.w3.org/2005/Atom"
         xmlns:app="http://www.w3.org/2007/app"
         xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
    <collection href="Genres">
      <atom:title>Genres</atom:title>
    </collection>
    <collection href="Titles">
      <atom:title>Titles</atom:title>
    </collection>
    .
    .
    .
  </workspace>
</service>

http://odata.netflix.com/v2/Catalog/$metadata

returns

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<edmx:Edmx Version="1.0"
           xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
  <edmx:DataServices xmlns:m=
"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
                     m:DataServiceVersion="1.0">
    <Schema Namespace="Netflix.Catalog.v2"
            xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
            xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
            xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
    .
    .
    .
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

http://odata.netflix.com/v2/Catalog/Titles

returns

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://odata.netflix.com/v2/Catalog/"
          xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Titles</title>
  <id>http://odata.netflix.com/v2/Catalog/Titles/</id>
  <updated>2012-05-23T21:41:18Z</updated>
  <link rel="self" title="Titles" href="Titles" />
  <entry>
    <id>http://odata.netflix.com/v2/Catalog/Titles('13aly')</id>
    <title type="text">Red Hot Chili Peppers: Funky Monks</title>
    <summary type="html">Lead singer Anthony Kiedis, bassist Flea, ... </summary>
    <updated>2012-01-31T09:45:16Z</updated>
    <author>
      <name />
    </author>
    .
    .
    .
  </entry>
</feed>

http://odata.netflix.com/v2/Catalog/Titles('13aly')

returns

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="http://odata.netflix.com/v2/Catalog/"
       xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
|      xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
       xmlns="http://www.w3.org/2005/Atom">
  <id>http://odata.netflix.com/v2/Catalog/Titles('13aly')</id>
  <title type="text">Red Hot Chili Peppers: Funky Monks</title>
  <summary type="html">Lead singer Anthony Kiedis, bassist Flea, drummer Chad Smith
... </summary>
  <updated>2012-01-31T09:45:16Z</updated>
  <author>
    <name />
  </author>
  .
  .
  .
  <category term="Netflix.Catalog.v2.Title"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />

  <content type="image/jpeg"
src="http://cdn-0.nflximg.com/en_us/boxshots/large/5632678.jpg" />
  <m:properties
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
    <d:Id>13aly</d:Id>
    <d:Name>Red Hot Chili Peppers: Funky Monks</d:Name>
    <d:ShortName>Red Hot Chili Peppers: Funky Monks</d:ShortName>
    <d:Synopsis>Lead singer Anthony Kiedis, bassist Flea, 
            drummer Chad Smith ...</d:Synopsis>
    <d:ShortSynopsis>Lead singer Anthony Kiedis, bassist Flea, 
            drummer Chad Smith ... </d:ShortSynopsis>
    <d:AverageRating m:type="Edm.Double">3.4</d:AverageRating>
    <d:ReleaseYear m:type="Edm.Int32">1991</d:ReleaseYear>
    .
    .
    .
  </m:properties>
</entry>

OData и другие веб-ориентированные API-интерфейсы

В настоящее время используются тысячи веб-ориентированных API-интерфейсов. К числу популярных API-интерфейсов этой категории относятся картографические сервисы. По состоянию на июнь 2012 года на веб-сайте Programmable Web было перечислено более 6000 веб-ориентированных API-интерфейсов (см. заметку под названием: API Business Models Take Center Stage). Недавнее исследование компании Vordel показало, что "половина предприятий внедряет API-интерфейсы для построения новых бизнес-каналов", при этом 25% из этих интерфейсов разрабатывается специально для мобильных приложений.

Одна из интересных областей – какое отношение имеет OData к деятельности в области API-интерфейса Linked Data. Рабочая группа W3C Linked Data Platform (LDP) Working Group и технический комитет OASIS OData Technical Committee стремятся специфицировать API-интерфейсы REST-типа для получения данных и манипулирования ими в Интернете с использованием различных моделей данных. Платформа LDP базируется на модели данных Resource Definition Framework (RDF) а OData базируется на модели данных Entity Data Model (EDM).

  • ИнфраструRDF была описана организаций W3C в 1999 году, но восходит к более ранним работам по тройкам (triple), выполненным в 1980-1990 г.г. Примеры: базы данных типа triple stores и инфраструктура meta-content framework (MCF). RDF — это модель данных, в которой информация моделируется т.н. "тройками" (triple), напр., "номер соцстрахования Стива — nnn-nn-nnn", "пол Стива — мужчина", "Стив приобрел стол", "Джон — друг Стива", "Джоан — подруга Джона" и т.д. Для обращения к ресурсам, а также для связывания ресурсов (Стив, Джон, Джоан, стол и т.д.) с их свойствами инфраструктура RDF пользуется универсальными идентификаторами URIs.
  • Модель EDM была специфицирована компаний Microsoft и берет свое начало в модели Peter Chen's Entity Relationship Model сформулированной в 1976 г. (Peter Chen). Модель EDM до сих пор используется при проектировании реляционных баз данных. Модель данных EDM базируется на преобразовании информации в сущности и в отношения. Эта модель использует специфические для определенной области значения, например, номера социального страхования, номера счетов-фактур, номера товаров, для ссылки на ресурсы и на их свойства, а также для связывания информации.

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

Построение адаптеров между гетерогенными веб-ориентированными API-интерфейсами вполне возможно. К примеру, прототип адаптера для связывания рабочих элементов (workitem) решения IBM Rational Team Concert, получаемых посредством API-интерфейс на базе Linked Data под названием OSLC (Open Services for Life Cycle Collaboration), и документов Microsoft Sharepoint, получаемых посредством OData, можно найти по следующей ссылке: http://wiki.eclipse.org/Lyo/SharepointAdapter.

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

Благодарности

Выражаю глубокую благодарность за отзывы и предложения моим коллегам: Elizabeth Cleary, Andrew Eisenberg, Diane Jordan, Arnaud Le Hors.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы в первый раз заходите в developerWorks. Выберите данные в своем профиле (имя, страна/регион, компания) которые будут общедоступными и будут отображаться, когда вы публикуете какую-либо информацию. Вы можете изменить данные вашего ИБМ аккаунта в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=SOA и web-сервисы
ArticleID=863571
ArticleTitle=OData
publish-date=04022013