Odata (Open Data Protocol)
📍 OData(Open Data Protocol)란?
OData (Open Data Protocol)은 Microsoft가 개발한 REST 기반의 데이터 액세스 프로토콜로, 데이터를 표준화된 방식으로 쿼리하고 조작할 수 있도록 설계된 프로토콜입니다. OData는 RESTful API 원칙에 따라 작동하며, 클라이언트와 서버 간 데이터 통신을 용이하게 합니다.
OData의 주요 개념 및 특징
- RESTful 원칙 준수
- HTTP를 기반으로 하며, CRUD 작업은 HTTP 메서드(GET, POST, PUT, DELETE)로 수행됩니다.
- 표준화된 데이터 쿼리
- 클라이언트는 URL에 직접 쿼리 매개변수를 추가해 데이터를 요청할 수 있습니다.
예: https://example.com/Products?$filter=Price gt 100&$orderby=Name
- 클라이언트는 URL에 직접 쿼리 매개변수를 추가해 데이터를 요청할 수 있습니다.
- 메타데이터 제공
- OData 서비스는 데이터를 설명하는 메타데이터를 XML 형식으로 제공하여 클라이언트가 데이터 구조를 이해하고 사용할 수 있도록 합니다.
URL 예: https://example.com/odata/$metadata
- OData 서비스는 데이터를 설명하는 메타데이터를 XML 형식으로 제공하여 클라이언트가 데이터 구조를 이해하고 사용할 수 있도록 합니다.
- 확장성
- OData는 다양한 데이터 소스(SQL, NoSQL 등)를 지원하며, 클라이언트와 서버 간의 인터페이스를 표준화합니다.
- JSON 및 XML 지원
- JSON과 XML 형식으로 데이터를 전송할 수 있어 유연성이 높습니다.
OData의 구성 요소
구성 요소설명
엔터티(Entity) | 데이터 모델의 기본 단위. 예: "Products" 또는 "Customers". |
엔터티 세트(Entity Set) | 특정 엔터티 유형의 컬렉션. 예: "Products" 엔터티 세트는 여러 제품 데이터를 포함. |
키(Key) | 엔터티를 고유하게 식별하는 속성. 예: Product ID. |
속성(Property) | 엔터티의 개별 데이터 필드. 예: Product의 "Name", "Price". |
네비게이션 링크(Navigation Link) | 관련 엔터티 간의 관계를 탐색. 예: "Order" 엔터티에서 "Customer" 엔터티로의 관계. |
OData의 장점
- 데이터 액세스 표준화
- 다양한 데이터 소스에 일관된 방식으로 액세스할 수 있습니다.
- 유연한 데이터 쿼리
- 필터링, 정렬, 페이징 등 복잡한 쿼리를 URL 기반으로 간단히 구현 가능합니다.
- 확장성 및 상호운용성
- 다른 시스템 및 플랫폼과 쉽게 통합할 수 있습니다.
- 메타데이터 자동 생성
- 클라이언트가 데이터 구조를 쉽게 이해할 수 있어 개발 생산성을 높입니다.
위의 내용을 쉽세 설명하면 웹 상에서 손쉽게 데이터를 조회하거나 수정할 수 있도록 주고 받는 웹(프로토콜)을 말합니다.
서비스 제공자 입장에서는 웹으로 데이터를 제공하는 방식으로 각 포탈 사이트들이 제공하는 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) 을 가지고 있는 것을 볼 수 있다.
주요 활용 사례
- 비즈니스 애플리케이션
- ERP, CRM 등에서 데이터를 효율적으로 처리하기 위해 사용됩니다.
- 웹 및 모바일 애플리케이션
- 데이터가 필요한 클라이언트 애플리케이션의 백엔드 API로 활용됩니다.
- 클라우드 서비스
- 데이터 모델과 쿼리를 표준화하여 SaaS 애플리케이션에서 사용됩니다.
'🏁 Product > ⌨️ Programming' 카테고리의 다른 글
IPMI / BMC 란? 액세스 방법과 서버에서의 역할 (0) | 2024.11.09 |
---|---|
[ IT 용어 ] 쿠키(Cookie)와 세션(Session)의 차이 (0) | 2024.05.22 |
[Figma] 디자인하다 궁금한 점 (0) | 2023.01.06 |
[ IT 용어 ] 동기화 vs 비동기화 (0) | 2022.11.30 |
프로토타이핑에서의 Lo-fi vs hi-fi (0) | 2022.01.24 |