오픈 데이터 프로토콜

Open Data Protocol

컴퓨팅에서 ODATA(Open Data Protocol)는 쿼리가 가능하고 상호 운용이 가능한 REST API를 단순하고 표준적인 방법으로 생성 및 사용할 수 있는 개방형 프로토콜입니다.Microsoft는 2007년에 [1]ODATA를 개시했습니다.버전 1.0, 2.0 및 3.0은 Microsoft Open Specification Promise에 따라 출시됩니다.버전 4.0은 [2]OASIS에서 표준화되었으며 2014년 [3]3월에 출시되었습니다.2015년 4월 OASIS는 ODATA v4 및 ODATA JSON Format v4를 ISO/IEC JTC 1에 제출하여 국제 [4]표준으로 승인받았습니다.2016년 12월, ISO/IEC는 ODATA 4.0 Core를 ISO/IEC 20802-1[5][6]:2016으로, ODATA JSON Format을 ISO/IEC 20802-2:[7]2016으로 발표했습니다.

이 프로토콜을 통해 웹 클라이언트가 단순한 HTTP 메시지를 사용하여 URL을 사용하여 식별되고 데이터 모델에 정의된 리소스를 게시 및 편집할 수 있는 REST API를 생성하고 사용할 수 있습니다.OData는 JDBCODBC와 몇 가지 유사점을 공유합니다. ODBC와 마찬가지로 OData는 관계형 데이터베이스에만 국한되지 않습니다.

표준화

ODATA는 마이크로소프트의 초기 개발 후 OASIS ODATA 기술 위원회(TC)의 표준 프로토콜이 되었습니다.

OASIS ODATA 기술위원회

"OASIS ODATA TC는 기업, 클라우드 및 모바일 장치에서 재사용할 수 있도록 서로 다른 애플리케이션 및 여러 이해관계자 간에 데이터 쿼리와 공유를 단순화하는 데 도움이 됩니다.REST 기반 프로토콜인 ODATA는 URI를 사용하여 HTTP, AtomPubJSON구축되어 데이터 피드 리소스에 액세스합니다.관계형 데이터베이스, 파일 시스템, 콘텐츠 관리 시스템, 기존 웹 사이트 등 다양한 소스에서 정보에 액세스할 수 있습니다.ODATA는 데이터 소비자가 현재보다 훨씬 강력한 방식으로 데이터 생산자와 상호 운용할 수 있는 에코시스템을 구축함으로써 데이터 사일로를 해체하고 데이터 공유 가치를 높일 수 있는 방법을 제공합니다. 따라서 더 많은 애플리케이션이 보다 광범위한 데이터 집합을 이해할 수 있습니다.이 생태계에 참여하는 모든 데이터의 생산자와 소비자는 데이터의 전체적인 [8]가치를 높입니다."

TC에는 CA Technologies, Citrix Systems, IBM, Microsoft, Progress Software, Red Hat, SAP SE 및 SDL참여합니다.

아키텍처

ODATA는 RESTful API의 생성 및 사용을 위한 프로토콜입니다.따라서 REST의 일반적인 관행으로서 ODATA는 URI를 사용하여 HTTP, AtomPub 및 JSON을 기반으로 구축되어 데이터 피드리소스에 액세스합니다.

자원 식별

ODATA는 URI를 사용하여 리소스를 식별합니다.서비스 루트가 http://host/service/로 축약된 모든 ODATA 서비스에 대해 다음과 같은 고정 리소스를 찾을 수 있습니다.

서비스 문서

서비스 문서에는 취득 가능한 엔티티 세트, 함수 및 싱글톤이 나열되어 있습니다.클라이언트는 서비스 문서를 사용하여 하이퍼미디어 기반 방식으로 모델을 탐색할 수 있습니다.

서비스 문서는 http://host/service/에서 구할 수 있습니다.

메타데이터 문서

메타데이터 문서에는 ODATA 서비스가 이해하는 유형, 세트, 기능 및 작업이 설명되어 있습니다.클라이언트는 메타데이터 문서를 사용하여 서비스의 엔티티에 대한 쿼리 및 상호 작용 방법을 이해할 수 있습니다.

메타데이터 문서는 http://host/service/$metadata에서 사용할 수 있습니다.

동적 자원

동적 자원의 URI는 서비스 문서 및 메타데이터 문서의 하이퍼미디어 정보에서 계산할 수 있습니다.

자원 조작

ODATA는 HTTP 동사를 사용하여 리소스에 대한 작업을 나타냅니다.

  • GET: 리소스(엔티티 집합, 단일 엔티티, 구조 속성, 탐색 속성, 스트림 등)를 가져옵니다.
  • POST: 새 리소스를 만듭니다.
  • PUT: 기존 리소스를 전체 인스턴스로 대체하여 업데이트합니다.
  • 패치: 속성 일부를 일부 인스턴스로 대체하여 기존 리소스를 업데이트합니다.
  • DELETE: 리소스를 제거합니다.

쿼리

ODATA 엔드포인트에서 요청된 URL에는 쿼리 옵션이 포함될 수 있습니다.ODATA 프로토콜은 엔드포인트가 허용해야 하는 다양한 '시스템 쿼리 옵션'을 지정합니다. 이러한 옵션을 사용하여 데이터를 필터링, 정렬, 매핑 또는 페이지 번호 매길 수 있습니다.

쿼리 옵션은 다음 URL에 추가할 수 있습니다.?에 의해 구분됩니다.&각 옵션은 1개의 문자로 구성됩니다.$- 기호 프리픽스 이름과 그 값(로 구분)=예를 들어 다음과 같이 입력합니다.OData/Products?$top=2&$orderby=Name데이터를 필터링할 때 사용할 수 있도록 다음과 같은 많은 논리 연산자와 함수가 정의됩니다.OData/Products?$filter=Price lt 10.00 and startswith(Name,'M')가격은 10보다 작고 이름은 'M'으로 시작하는 제품을 요청합니다.

자원 표현

ODATA는 데이터와 데이터 모델을 나타내기 위해 다른 형식을 사용합니다.ODATA 프로토콜 버전 4.0에서 JSON 형식은 데이터 표현에 대한 표준이며, Atom 형식은 아직 위원회 사양 단계에 있습니다.데이터 모델을 나타내기 위해 Common Schema Definition Language(CSDL; 공통 스키마 정의 언어)를 사용합니다.이 언어에서는 ODATA 서비스에 의해 공개되는 엔티티 데이터 모델의 XML 표현을 정의합니다.

샘플 ODATA JSON 데이터 페이로드

제품 모음:

{   "@odata.http": "http://services.odata.org/V4/OData/OData.svc/$metadata#Products",   "값": [     {       아이디: 0,       "이름": "고기",       "설명": " 붉은 고기",       "ReleaseDate": "1992-01-01T00시:00Z",       "DiscontinuedDate": 무효,       "등급": 14,       "가격": 2.5     },     {       "ID": 1,       "이름": "우유",       "설명": "지방 우유 낮은",       "ReleaseDate": "1995-10-01T00시:00Z",       "DiscontinuedDate": 무효,       "등급": 3,       "가격": 3.5     },     ...   ] } 

샘플 ODATA Atom 데이터 페이로드

제품의 컬렉션:

       <>사료xml:base="http://services.odata.org/V4/OData/OData.svc/"m:context="http://services.odata.org/V4/OData/OData.svc/$metadata#Products"xmlns="http://www.w3.org/2005/Atom"xmlns:d="http://docs.oasis-open.org/odata/ns/data"xmlns:m="http://docs.oasis-open.org/odata/ns/metadata"xmlns:georss="http://www.georss.org/georss"xmlns:gml="http://www.opengis.net/gml">   <>id>,http://services.odata.org/v4/odata/odata.svc/Products</id>    <>titletype="텍스트">, Products<, /title>.   <>updated>, 2015-05-19T03시 38분:50Z<, /updated>.      <>과 연계rel="자아"title="제품"href="제품"/>   <>entry>.     <>id>,http://services.odata.org/V4/OData/OData.svc/Products(0)</id>       <>범주term="#ODataDemo.Product"scheme="http://docs.oasis-open.org/odata/ns/scheme"/>        <링크>rel="편집"title="제품"href="제품(0)"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"입력="어플리케이션/xml"title="카테고리"href="제품(0)/카테고리/$ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/Categories"입력="애플리케이션/atom+xml;type=피드"title="카테고리"href="제품(0)/카테고리"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"입력="어플리케이션/xml"title="공급업체"href="제품(0)/공급업체/$ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/Supplier"입력="어플리케이션/atom+xml;type=엔트리"title="공급업체"href="제품(0)/공급업체"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"입력="어플리케이션/xml"title="제품 상세"href="제품(0)/제품 상세/$ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail"입력="어플리케이션/atom+xml;type=엔트리"title="제품 상세"href="제품(0)/제품 상세"/>     </>     <2015년 5월 19일T03:38:50Z </updated>     <작성자>       <이름/>     </작성자>      <콘텐츠>입력="어플리케이션/xml">       <m: 속성>          <d:IDM:type="Int32">0 </d:아이디>         <d: 이름></d:이름 >         <d: 설명>통곡물 빵 </d:설명>          <d:ReleaseDatem:type="DateTimeOffset">1992-01T00:00Z </d:ReleaseDate>.          <>d:DiscontinuedDatem:null="진정한"/>          <>d:Ratingm:type="Int16">, 4<, /d:Rating>.          <>d:Pricem:type="더블">2.5<, /d:Price>.       <>/m:properties>.     <>/content>.   <>/entry>.   <>entry>.     <>id>,http://services.odata.org/V4/OData/OData.svc/Products(1)</id>       <>범주term="#ODataDemo.Product"scheme="http://docs.oasis-open.org/odata/ns/scheme"/>        <링크>rel="편집"title="제품"href="제품(1)"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Categories"type="application/xml"title="카테고리"href="제품 (1)/카테고리/$ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/Categories"입력="애플리케이션/atom+xml;type=피드"title="카테고리"href="제품(1)/카테고리"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier"입력="어플리케이션/xml"title="공급업체"href="제품 (1)/공급업체/$ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/Supplier"입력="어플리케이션/atom+xml;type=엔트리"title="공급업체"href="제품 (1)/공급업체"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail"입력="어플리케이션/xml"title="제품 상세"href="제품 (1) / 제품 상세 / $ref"/>         <링크>rel="http://docs.oasis-open.org/odata/ns/related/ProductDetail"입력="어플리케이션/atom+xml;type=엔트리"title="제품 상세"href="제품 (1) / 제품 상세"/>     </>     <2015년 5월 19일T03:38:50Z </updated>     <작성자>       <이름/>     </작성자>      <콘텐츠>입력="어플리케이션/xml">       <m: 속성>          <d:IDM:type="Int32">1 </d:아이디>         <d: 이름> 우유 </d:이름 >         <d: 설명>저지방 우유 </d:설명>          <d: ReleaseDatem:type="DateTimeOffset">1995-10-01T00:00:00Z </d:릴리즈 날짜>          <>d:DiscontinuedDatem:null="진정한"/>          <d: 정격: 유형="Int16">3 </d:평가 >          <d: Pricem:type="Double"> 3.5 </d:가격>       <>/m:properties>.     <>/content>.   <>/entry>. ...</피드> 

샘플 ODATA 메타데이터 문서

<edmx: Edmx 버전="4.0" xmlns: edmx="http://docs.oasis-open.org/odata/ns/edmx">   <edmx: 데이터 서비스>     <스케마> 네임스페이스="ODATA DEMO" xmlns="http://docs.oasis-open.org/odata/ns/edm">       <엔티티 타입 이름="제품">         <키>           <프로퍼티 참조> 이름=아이디/>         </키>         <프로퍼티> 이름=아이디 타입="Edm.Int32" 특수한 절차="false"/>         <프로퍼티> 이름="이름" 타입="Edm.String"/>         <프로퍼티> 이름="설명" 타입="Edm.String"/>         <프로퍼티> 이름="ReleaseDate" 타입="Edm.Date Time Offset" 특수한 절차="false"/>         <프로퍼티> 이름="DiscontinuedDate" 타입="Edm.Date Time Offset"/>         <프로퍼티> 이름="등급" 타입="Edm.Int16" 특수한 절차="false"/>         <프로퍼티> 이름="가격" 타입="Edm.Double" 특수한 절차="false"/>       </엔티티유형>        <콤플렉스 타입> 이름="주소">         <프로퍼티> 이름='거리' 타입="Edm.String"/>         <프로퍼티> 이름='시' 타입="Edm.String"/>         <프로퍼티> 이름="상태" 타입="Edm.String"/>         <프로퍼티> 이름="Zip 코드" 타입="Edm.String"/>         <프로퍼티> 이름="국가" 타입="Edm.String"/>       </Complex Type>              <엔티티 컨테이너 이름="데모 서비스">         <엔티티 세트> 이름="제품" 엔티티 타입="ODATADEMO.Product"> </엔티티설정 >       </엔티티 컨테이너>     </Schema>   </edmx: 데이터 서비스> </edmx:Edmx> 

생태계

ODATA의 생태계는 프로토콜을 구현하는 클라이언트/서버 라이브러리와 프로토콜을 기반으로 하는 애플리케이션으로 구성됩니다.

라이브러리

ODATA API에 액세스/생산에 사용할 수 있는 ODATA 라이브러리는 다음과 같습니다.

.그물

  • 서버 및 클라이언트: Microsoft의 ODATA.NET[9] 라이브러리
  • 클라이언트: 심플.ODATA.클라이언트[10]

자바

자바스크립트

  • 클라이언트: Apache Olingo[14] (OASIS 기능[15] 탑재)
  • 클라이언트: data.js[16]
  • 클라이언트: 고급[17] 추상화를 위한 JayData (LINQ와 유사한 구문, ODATA 지리 기능 지원, IndexedDB, WebSQL, DevExtreme 통합, Kendo UI, Angular.js, Knockout.js 및 Sencha)
  • 클라이언트: SAP에서 OpenUI5 라이브러리 유지 보수
  • 클라이언트(Node.js):노드의[18] JayData
  • 클라이언트[19]: Breeze
  • 클라이언트: ODATA4 및 Invantive Bridge[20] 온라인
  • 서버: 노드오타타[21]

PHP

  • 클라이언트: odataphp[22]
  • 서버: POData[23]

파이썬

  • 고객: PyODATA[24]
  • 서버 및 클라이언트: Pyslet[25]

루비

  • 클라이언트: ruby_odata 라이브러리[26]
  • 클라이언트: 무료 ODATA[27] V4.0 라이브러리 for Ruby
  • 서버[28]: Safrano

다른이들

구현된 기타 언어는 다음과 같습니다.[29]

  • AJAX: ASPODATA에 접속하기 위한 NET Ajax[30] 라이브러리.
  • C++: odatacpp_client는[31] ODATA 프로토콜의 클라이언트 측 전용 구현입니다.
  • Windward[32] Studios는 보고서 작성 및 문서 생성 솔루션에서 ODATA를 지원합니다.
  • 보고서 작성 도구 목록 라벨에는 OData 전용 데이터 공급자가 있습니다.
  • Blackberry (C++): BlackBerry 10 (BB10) Cascades 응용 프로그램용 ODATA-B10[33] Open Data Protocol (ODATA) 라이브러리

적용들

응용 프로그램은 [34]다음과 같습니다.

  • Progress Data Direct 하이브리드 데이터[35] 파이프라인은 클라우드, 빅데이터 또는 관계형 데이터 소스를 ODATA 엔드 포인트로 노출시킬 수 있습니다.
  • SocrataODATA API를 공개합니다.
  • Microsoft Azure는 ODATA API를 제공합니다.
  • SAP NetWeaver[36] Gateway는 SAP Business Suite 및 SAP Business Warehouse에 대한 ODATA 액세스를 제공합니다.
  • IBM WebSphere eXtreme Scale REST 데이터 서비스는 ODATA를 [37]사용하는 모든 HTTP 클라이언트에서 액세스할 수 있습니다.
  • Microsoft SharePoint 2010 이상에서는 데이터가 ODATA 엔드 포인트로 노출될 수 있음
  • 사무실 365OData V4.0 API를 노출합니다.[38]
  • Salesforce연결 OData API를 소비한다.[39]
  • Skyvia Connect[40]OData을 통해 구름과 데이터베이스 데이터를 노출합니다.
  • Tableau OData, API, 연결할 수 있습니다.[41]
  • TIBCOSpotfire OData, API, 연결할 수 있습니다.[42]
  • Mulesoft[43]OData API와 통합이 도움을 준다.[44]
  • SuccessFactors[45]Odata API를 사용한다
  • Ceridian 스페인 국왕 폐하의 Dayforce[46]Odata[47]을 사용한다.
  • Redfish Odata[48]을 사용한다

도구들

  • 핵자 데이터베이스 마스터[49]

「 」를 참조해 주세요.

  • GData – 경쟁하는 프로토콜 구글에서.
  • 자원 기술(RDF)W3C에 의해 유사한 개념 –.
  • 그래프QL

참조

  1. ^ "Welcome!". MSDN Blogs. OData Team.
  2. ^ "OASIS Open Data Protocol (OData) Technical Committee". Retrieved 2013-08-05.
  3. ^ "OASIS Approves OData 4.0 Standards for an Open, Programmable Web". oasis-open.org. 17 March 2014.
  4. ^ "OASIS has Submitted OData v4 and OData JSON Format v4 to ISO/IEC JTC 1 for approval as an International Standard". MS Open Tech. Archived from the original on 2015-05-20. Retrieved 2015-05-18.
  5. ^ "OData Published as an ISO Standard · OData - the Best Way to REST". www.odata.org. Retrieved 2021-05-11.
  6. ^ "ISO/IEC 20802-1:2016". ISO. Retrieved 2021-05-11.{{cite web}}:CS1 maint:url-status(링크)
  7. ^ "ISO/IEC 20802-2:2016". ISO. Retrieved 2021-05-11.{{cite web}}:CS1 maint:url-status(링크)
  8. ^ "OASIS Open Data Protocol (OData) TC OASIS". www.oasis-open.org. Retrieved September 24, 2019.
  9. ^ 마이크로소프트의 ODATA.NET 라이브러리
  10. ^ 심플, ODATA고객
  11. ^ 아파치 올링고
  12. ^ 젤로 프레임워크
  13. ^ 오다타 클라이언트
  14. ^ 아파치 올링고
  15. ^ "Libraries · OData - the Best Way to REST". www.odata.org. Retrieved 2019-02-19.
  16. ^ "data.js". CodePlex Archive.
  17. ^ 제이 데이터
  18. ^ 노드의 JayData
  19. ^ 미풍
  20. ^ ODATA4 및 Inventive Bridge 온라인
  21. ^ 노드오타타
  22. ^ 오다탑
  23. ^ POData
  24. ^ PyODATA
  25. ^ 피슬렛
  26. ^ 루비_odata 라이브러리
  27. ^ 루비용 무료 ODATA V4.0 라이브러리
  28. ^ 사프라노
  29. ^ "Libraries". odata.org.
  30. ^ ASP.NET Ajax 라이브러리
  31. ^ odatacpp_client
  32. ^ 윈드워드 스튜디오
  33. ^ ODATA-BB10
  34. ^ "Ecosystem". odata.org.
  35. ^ 진척 Data Direct 하이브리드 데이터 파이프라인
  36. ^ "SAP NetWeaver Gateway". Retrieved 2012-11-22.
  37. ^ IBM developerWorks eXtreme Scale REST 데이터 서비스(ODATA)
  38. ^ "Welcome to Office 365 APIs". docs.microsoft.com. Retrieved September 24, 2019.
  39. ^ "Set Up Salesforce Connect to Access External Data with the OData 2.0 or 4.0 Adapter".
  40. ^ Skyvia Connect
  41. ^ "OData - Tableau". help.tableau.com. Retrieved September 24, 2019.
  42. ^ "OData and Spotfire". The TIBCO Blog. Retrieved 2016-03-30.
  43. ^ 룰소프트
  44. ^ "Anypoint Exchange". www.mulesoft.com. Retrieved September 24, 2019.
  45. ^ 성공 요인
  46. ^ Ceridian HCM의 데이포스
  47. ^ "HR Reporting Software - Dayforce Ceridian". www.ceridian.com. Retrieved September 24, 2019.
  48. ^ "What You Need to Know About Redfish API". Exxact. 2017-12-01. Retrieved 2019-08-31.
  49. ^ "Nucleon Database Master". Retrieved 16 November 2017.

외부 링크

ODATA OASIS 규격

위원회의 사양

위원회의 메모