본문 바로가기

🏁 Product/⌨️ Programming

OData란?

반응형

Odata (Open Data Protocol)

 

 

 

 

📍 OData(Open Data Protocol)란?

 

OData (Open Data Protocol)은 Microsoft가 개발한 REST 기반의 데이터 액세스 프로토콜로, 데이터를 표준화된 방식으로 쿼리하고 조작할 수 있도록 설계된 프로토콜입니다. OData는 RESTful API 원칙에 따라 작동하며, 클라이언트와 서버 간 데이터 통신을 용이하게 합니다.

 

 

 

OData의 주요 개념 및 특징

  1. RESTful 원칙 준수
    • HTTP를 기반으로 하며, CRUD 작업은 HTTP 메서드(GET, POST, PUT, DELETE)로 수행됩니다.
  2. 표준화된 데이터 쿼리
  3. 메타데이터 제공
    • OData 서비스는 데이터를 설명하는 메타데이터를 XML 형식으로 제공하여 클라이언트가 데이터 구조를 이해하고 사용할 수 있도록 합니다.
      URL 예: https://example.com/odata/$metadata
  4. 확장성
    • OData는 다양한 데이터 소스(SQL, NoSQL 등)를 지원하며, 클라이언트와 서버 간의 인터페이스를 표준화합니다.
  5. JSON 및 XML 지원
    • JSON과 XML 형식으로 데이터를 전송할 수 있어 유연성이 높습니다.

 

 


OData의 구성 요소

구성 요소설명

엔터티(Entity) 데이터 모델의 기본 단위. 예: "Products" 또는 "Customers".
엔터티 세트(Entity Set) 특정 엔터티 유형의 컬렉션. 예: "Products" 엔터티 세트는 여러 제품 데이터를 포함.
키(Key) 엔터티를 고유하게 식별하는 속성. 예: Product ID.
속성(Property) 엔터티의 개별 데이터 필드. 예: Product의 "Name", "Price".
네비게이션 링크(Navigation Link) 관련 엔터티 간의 관계를 탐색. 예: "Order" 엔터티에서 "Customer" 엔터티로의 관계.

 

 


 

OData의 장점

  1. 데이터 액세스 표준화
    • 다양한 데이터 소스에 일관된 방식으로 액세스할 수 있습니다.
  2. 유연한 데이터 쿼리
    • 필터링, 정렬, 페이징 등 복잡한 쿼리를 URL 기반으로 간단히 구현 가능합니다.
  3. 확장성 및 상호운용성
    • 다른 시스템 및 플랫폼과 쉽게 통합할 수 있습니다.
  4. 메타데이터 자동 생성
    • 클라이언트가 데이터 구조를 쉽게 이해할 수 있어 개발 생산성을 높입니다.

 

 

 


 

 

위의 내용을 쉽세 설명하면  웹 상에서 손쉽게 데이터를 조회하거나 수정할 수 있도록 주고 받는 웹(프로토콜)을 말합니다.
서비스 제공자 입장에서는 웹으로 데이터를 제공하는 방식으로 각 포탈 사이트들이 제공하는 OPEN API 포맷을

독자적인 형식이 아니라 오픈된 공통규약으로 제공 가능하며,

개발자는 이 정보를  다양한 언어의 클라이언트 라이브러리로 어플리케이션에서 소비할 수 있도록 사용합니다.


공식 사이트는 www.odata.org 이며 많은 언어들을 지원하고 있습니다.
좀 더 상세하게 정의를 해 보면 OData는 Atom Publishing Protocol(RFC4287)의 확장 형식이고 

REST (REpresentational State Transfer) Protocol 입니다.

따라서 웹 브라우저에서 OData 서비스로 노출된 데이터를 볼 수 있습니다.

그리고 AtomPub 의 확장이라고 했듯이 데이터의 조회만으로 한정되는 것이 아니라 CRUD 작업이 모두 가능한 것이 특징입니다.

 

 

 

웹 브라우저에서 http://services.odata.org/website/odata.svc 를 열어보면,

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app" xml:base="http://services.odata.org/Website/odata.svc/">
  <workspace>
    <atom:title>Defaultatom:title>
    <collection href="ODataConsumers">
      <atom:title>ODataConsumersatom:title>
    collection>
    <collection href="ODataProducerApplications">
      <atom:title>ODataProducerApplicationsatom:title>
    collection>
    <collection href="ODataProducerLiveServices">
      <atom:title>ODataProducerLiveServicesatom:title>
    collection>
  workspace>
service>

 

위와 같은 결과를 볼 수 있는데요. 이 결과는 OData에서 workspace라고 부르는 Entity Sets (Feeds) 리스트를 보여주는 것입니다.

위의 리스트들 중에서 ODataConsumers라는 데이터 컬렉션을 확인해 보기 위해http://services.odata.org/website/odata.svc/ODataConsumers 로 URL을 변경해 봅니다.

*ODataConsumers라는 정보는 REST로 전달되는 정보이므로 대/소문자를 구분

 

xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://services.odata.org/Website/odata.svc/" 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">ODataConsumerstitle>
  <id>http://services.odata.org/website/odata.svc/ODataConsumersid>
  <updated>2013-08-10T06:20:56Zupdated>
  <link rel="self" title="ODataConsumers" href="ODataConsumers" />
  <entry>
    <id>http://services.odata.org/Website/odata.svc/ODataConsumers(1)id>
    <title type="text">Browserstitle>
    <summary type="text">Most modern browsers allow you to browse Atom based feeds. Simply point your browser at one of the OData Producers.summary>
    <updated>2013-08-10T06:20:56Zupdated>
    <author>
      <name />
    author>
    <link rel="edit" title="ODataConsumer" href="ODataConsumers(1)" />
    <category term="ODataServices.ODataConsumer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:Id m:type="Edm.Int32">1d:Id>
        <d:Name m:type="Edm.String">Browsersd:Name>
        <d:Description m:type="Edm.String">Most modern browsers allow you to browse Atom based feeds. Simply point your browser at one of the OData Producers.d:Description>
        <d:ApplicationUrl m:type="Edm.String">d:ApplicationUrl>
      m:properties>
    content>
  entry>
  ...
  <entry>
    <id>http://services.odata.org/Website/odata.svc/ODataConsumers(14)id>
    <title type="text">(Unofficial) SSIS import scripttitle>
    <summary type="text">A SQL Server Integration Services script for importing OData into SQL Server.summary>
    <updated>2013-08-10T06:20:56Zupdated>
    <author>
      <name />
    author>
    <link rel="edit" title="ODataConsumer" href="ODataConsumers(14)" />
    <category term="ODataServices.ODataConsumer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:Id m:type="Edm.Int32">14d:Id>
        <d:Name m:type="Edm.String">(Unofficial) SSIS import scriptd:Name>
        <d:Description m:type="Edm.String">A SQL Server Integration Services script for importing OData into SQL Server.d:Description>
        <d:ApplicationUrl m:type="Edm.String">http://www.cozyroc.com/script/odata-sourced:ApplicationUrl>
      m:properties>
    content>
  entry>
feed>

 

위의 결과와 같이 ODataConsumers 의 구성 Entity를 확인할 수 있습니다.
내용을 잠시 확인해 보면  entry는 ID로 유일하게 식별할 수 있는 URL값을 가지고 있고, 그 외에 몇 가지 속성들을 가지고 있는 것을 볼 수 있습니다.

가장 중요한 부분은 “content” 로 표준 엔터티 데이터 모델 (EDM – Entity Data Model) 을 가지고 있는 것을 볼 수 있다.

 

 

 


 

주요 활용 사례

  1. 비즈니스 애플리케이션
    • ERP, CRM 등에서 데이터를 효율적으로 처리하기 위해 사용됩니다.
  2. 웹 및 모바일 애플리케이션
    • 데이터가 필요한 클라이언트 애플리케이션의 백엔드 API로 활용됩니다.
  3. 클라우드 서비스
    • 데이터 모델과 쿼리를 표준화하여 SaaS 애플리케이션에서 사용됩니다.

 

반응형