Open Data Protocol version 4.0 

Trong điện toán, Giao thức dữ liệu mở (Open Data protocol (OData)) là một giao thức mở cho phép tạo lập và sử dụng các API RESTful có thể truy vấn và liên thông theo một cách đơn giản và được chuẩn hóa. Microsoft ban hành tiêu chuẩn này lần đầu vào năm 2007 và lần lượt đưa ra các phiên bản 2.0...

Tổng quan

Trong điện toán, Giao thức dữ liệu mở (Open Data protocol (OData)) là một giao thức mở cho phép tạo lập và sử dụng các API RESTful có thể truy vấn và liên thông theo một cách đơn giản và được chuẩn hóa. Microsoft ban hành tiêu chuẩn này lần đầu vào năm 2007 và lần lượt đưa ra các phiên bản 2.0; phiên bản 3.0. Phiên bản 4.0 được tiêu chuẩn hóa bởi OASIS và được ban hành vào tháng 3 năm 2014. Tháng 04 năm 2015, OASIS đã đệ trình OData phiên bản 4.0 và Định dạng OData JSON phiên bản 4 tới Ủy ban kỹ thuật  ISO/IEC JTC1 để phê duyệt như một tiêu chuẩn quốc tế.

Giao thức này cho phép tạo lập và sử dụng (đọc, cập nhật và xóa) các REST APIs. Điều này cho phép các máy trạm Web xuất bản và chỉnh sửa các tài nguyên, được xác định bằng cách sử dụng URL và được định nghĩa trong một mô hình dữ liệu, sử dụng thông điệp HTTP đơn giản. OData chia sẻ một số điểm tương đồng với JDBC (Java Database Connectivity (Kết nối cơ sở dữ liệu Java)) và ODBC (Open Database Connectivity (Kết nối cơ sở dữ liệu mở)). Tương tự ODBC, OData không bị giới hạn tới các cơ sở dữ liệu quan hệ.

Giao thức dữ liệu mở (OData) cho phép tạo ra các dịch vụ dữ liệu dựa trên REST, nó cho phép xác định các tài nguyên bằng cách sử dụng URLs (Định vị tài nguyên đồng nhất – Uniform Resource Locators) và được định nghĩa trong một mô hình dữ liệu. Nó được phát hành và chỉnh sửa bởi các máy trạm sử dụng gói tin HTTP đơn giản.

Đặc tả [OData - URL] xác định một bộ quy tắc cho việc xây dựng các URL để xác định dữ liệu và siêu dữ liệu được tiếp xúc bởi một dịch vụ OData cũng như một tập hợp các tùy chọn truy vấn URL.

Đặc tả [OData-CSDLJSON] xác định sự hiển thị JSON của mô hình dữ liệu thực thể được đưa ra bởi một dịch vụ OData.

Đặc tả [OData-CSDLXML] xác định sự hiển thị XML của mô hình dữ liệu thực thể được đưa ra bởi một dịch vụ OData.

Tài liệu [OData-JSON] chỉ rõ định dạng JSON của trình diễn tài nguyên, được trao đổi bằng việc sử dụng OData.

Giao thức hỗ trợ sự mô tả của các mô hình dữ liệu, sự truy vấn và chỉnh sửa dữ liệu theo những mô hình đó. Nó cung cấp các tiện ích cho:

  • Dữ liệu đặc tả: Một mô tả (có thể đọc được bằng máy) của mô hình dữ liệu được đưa ra bởi dịch vụ cụ thể.
  • Dữ liệu: Tập hợp các thực thể dữ liệu và mối quan hệ giữa chúng.
  • Truy vấn: Yêu cầu dịch vụ triển khai một bộ lọc và các phép biến đổi khác đối với dữ liệu của nó, sau đó trả về kết quả.
  • Chỉnh sửa: Tạo, cập nhật và xóa dữ liệu.
  • Hoạt động: Gọi logic tùy chỉnh.
  • Từ vựng: Gắn ngữ nghĩa tùy chỉnh.

Giao thức OData khác với các phương pháp dịch vụ web dựa trên REST ở chỗ nó cung cấp một phương thức thống nhất để mô tả cả dữ liệu và mô hình dữ liệu. Điều này cải thiện khả năng liên thông ngữ cảnh giữa các hệ thống và cho phép tạo ra một hệ sinh thái.

Hướng tới mục tiêu đó, giao thức OData tuân theo các nguyên tắc thiết kế sau:

  • Ưu tiên các cơ chế hoạt động trên nhiều nguồn dữ liệu khác nhau. Đặc biệt, không giả định một mô hình dữ liệu quan hệ.
  • Khả năng mở rộng là rất quan trọng. Dịch vụ sẽ có thể hỗ trợ chức năng mở rộng mà không vi phạm các máy trạm không biết về các tiện ích đó.
  • Tuân theo nguyên tắc REST.
  • OData nên xây dựng dần dần. Một dịch vụ rất cơ bản, mềm dẻo nên dễ xây dựng.
  • Giữ giao thức đơn giản. Đưa ra các trường hợp phổ biến và cung cấp khả năng mở rộng khi cần thiết.

Nội dung về OData

Mô hình dữ liệu

Phần này cung cấp mô tả mức cao về Mô hình dữ liệu thực thể (Entity Data Model (EDM)): là mô hình dữ liệu trừu tượng được sử dụng để mô tả dữ liệu được đưa ra bởi một dịch vụ OData. Một tài liệu dữ liệu đặc tả OData là sự trình diễn của mô hình dữ liệu của dịch vụ được đưa ra để sử dụng cho máy trạm.

Các khái niệm chính trong EDM là các thực thể, các mối quan hệ, các bộ thực thể, các hành động và các hàm.

Thực thể (Entity) là thể hiện của các kiểu thực thể (ví dụ: Khách hàng, Nhân viên, v.v.).

Các kiểu thực thể (Entity Types) là các kiểu được cấu trúc và tên với một khóa. Chúng xác định các thuộc tính và mối quan hệ được đặt tên của một thực thể.

Khóa (Key) của một kiểu thực thể được hình thành từ một tập con của các thuộc tính nguyên thủy (ví dụ: CustomerId, OrderId, LineId, vv) của kiểu thực thể đó.

Các kiểu phức hợp (Complex Types) là các kiểu được cấu trúc và đặt tên chứa một tập các thuộc tính. Đây là các kiểu giá trị mà không thể được tham chiếu bên ngoài thực thể chứa chúng. Các kiểu phức hợp thường được sử dụng như là các giá trị thuộc tính trong một thực thể hoặc như là các tham số cho các triển khai.

Các thuộc tính được xem như một phần định nghĩa của kiểu được cấu trúc được gọi là các thuộc tính khai báo (declared properties). Các thể hiện của các kiểu cấu trúc có thể chứa các thuộc tính động (dynamic properties). Thuộc tính động không thể có cùng tên với thuộc tính được khai báo. Thực thể hoặc các kiểu phức hợp cho phép máy khách duy trì các thuộc tính không khai báo được gọi là các kiểu mở.

Mối quan hệ từ thực thể này với thực thể khác được thể hiện dưới dạng thuộc tính điều hướng (navigation properties). Thuộc tính điều hướng thường được định nghĩa là một phần của kiểu thực thể, nhưng cũng có thể xuất hiện các thể hiện dưới dạng thuộc tính điều hướng động chưa khai báo.

Các kiểu liệt kê (enumeration types) là kiểu gốc, trong đó các giá trị là hằng số với các giá trị số nguyên.

Kiểu định dạng (Type definitions) gọi là kiểu gốc với các giá trị cố định như độ dài hoặc độ chính xác tối đa. Kiểu định dạng có thể được sử dụng thay cho các thuộc tính ban đầu, ví dụ, trong các định nghĩa thuộc tính.

Bộ thực thể (Entity sets) là các tập hợp các thực thể (ví dụ: Khách hàng là một tập hợp thực thể có chứa các thực thể khách hàng). Khóa của một thực thể định dạng duy nhất thực thể đó trong một bộ thực thể. Nếu nhiều bộ thực thể sử dụng cùng một kiểu thực thể, cùng các giá trị khóa có thể xuất hiện nhiều hơn trong một bộ thực thể và  nhận dạng nhiều thực thể khác nhau. Mỗi thực thể này có một định danh (ID) thực thể khác nhau. Các bộ thực thể cung cấp các điểm vào trong mô hình dữ liệu.

Các hoạt động cho phép triển khai logic tùy chỉnh trên các phần của một mô hình dữ liệu. Các chức năng (function) là các triển khai không có các hiệu ứng phụ và có thể hỗ trợ thêm các thành phần khác như triển khai lọc bổ sung, các hàm hoặc một hành động. Các hành động (Actions) là các triển khai trong đó, cho phép các hiệu ứng phụ như sửa đổi dữ liệu và không thể được soạn thảo thêm để tránh hành vi không xác định. Các hành động và chức năng được liên kết (bound) tới một kiểu. Điều này cho phép chúng được gọi các thành viên của một thể hiện (instance) của kiểu đó. Hành động nhập (Action imports) và chức năng nhập (function imports) cho phép các hành động và chức năng không liên kết được gọi từ dịch vụ gốc.

Chú thích (Annotations)

Các phần tử mẫu và phần tử thực thể có thể được chú thích.

Chú thích có thể được sử dụng để chỉ định một sự kiện riêng lẻ về một phần tử, chẳng hạn như chú thích để xác định một khái niệm chung, hoặc một người hoặc một bộ phim.

Các chú thích được áp dụng (applied annotations) bao gồm một thuật ngữ (tên của chú thích đang được áp dụng), mục đích (phần tử mẫu hoặc phần tử hiển thị mà thuật ngữ được áp dụng) và một giá trị. Giá trị có thể là giá trị tĩnh hoặc giá trị biểu thức trong đó, có thể chứa đường dẫn đến một hoặc nhiều thuộc tính của thực thể được chú thích.

Các thuật ngữ chú thích được định nghĩa cụ thể trong siêu dữ liệu. Các thuật ngữ chú thích này có tên và kiểu.

Một tập hợp các thuật ngữ liên quan trong một không gian tên chung bao gồm một từ vựng (A vocabulary).

Mô hình dịch vụ

Các dịch vụ OData được định nghĩa thông qua một mô hình dữ liệu chung. Dịch vụ này thông báo mô hình dữ liệu của nó được mô tả ở dạng có thể đọc được bằng máy, cho phép các máy khách tương tác với dịch vụ theo một cách được xác định rõ ràng.

Một dịch vụ Odata bao gồm hai nguồn tài nguyên được mô tả trong mô hình dữ liệu, tài liệu dịch vụ (service document) và tài liệu dữ liệu đặc tả (metadata document).

Tài liệu dịch vụ liệt kê các bộ thực thể, các chức năng và các đơn nhất (singletons) có thể triệu gọi. Máy khách có thể sử dụng tài liệu dịch vụ để điều hướng mô hình dịch vụ trong môi trường định hướng siêu truyền thông.

Tài liệu dữ liệu đặc tả mô tả các kiểu, bộ, chức năng và hành động được biên dịch bởi dịch vụ OData. Máy khách có thể sử dụng tài liệu dữ liệu đặc tả để hiểu phương thức truy vấn và tương tác với các thực thể trong dịch vụ.

Ngoài hai tài nguyên “cố định” này, dịch vụ OData còn bao gồm các tài nguyên động. Các URL của các tài nguyên này có thể được tính toán dựa trên các thông tin trong tài liệu dữ liệu đặc tả.

Hệ thống định danh và các tham chiếu thực thể

Trong khi các thực thể trong một bộ thực thể được xác định bằng các giá trị khóa riêng của chúng, các thực thể cũng được nhận dạng duy nhất bởi một định danh thực thể duy nhất. Định danh thực thể PHẢI là một IRI như được định nghĩa trong [RFC3987] và CÓ THỂ được biểu thị bằng tải trọng và IRL như một tham chiếu phù hợp. Trong khi máy khách PHẢI được chuẩn bị để chấp nhận bất kỳ IRI nào, các dịch vụ PHẢI sử dụng các URI hợp lệ trong phiên bản đặc tả này.

URL đọc  (Read URLs) và URL chỉnh sửa (Edit URLs)

URL đọc của một thực thể là URL có thể được sử dụng để đọc thực thể.

URL chỉnh sửa của một thực thể là URL có thể được sử dụng để cập nhật hoặc xóa đối tượng.

URL chỉnh sửa của một thuộc tính là URL chỉnh sửa của  thực thể gắn với các phân đoạn bổ sung (appended segment) có chứa các đường dẫn tới thuộc tính.

Các dịch vụ  được khuyến khích để sử dụng URL chuẩn cho một thực thể được định nghĩa trong OData-URL cho cả URL đọc và URL chỉnh sửa.

Thực thể tạm thời

Các thực thể tạm thời là các hiển thị của một kiểu thực thể được "tính toán nhanh" và chỉ tồn tại trong một tải trọng duy nhất. Chúng không thể được đọc lại hoặc cập nhật. Do đó, các thực thể này không có định danh thực thể ổn định cũng như các URL đọc và URL cập nhật.

URL ngữ cảnh

URL ngữ cảnh mô tả nội dung của tải trọng. Nó bao gồm URL tài liệu dữ liệu đặc tả và một phân đoạn xác định phần có liên quan của tài liệu dữ liệu đặc tả. Tải trọng yêu cầu thường không cần URL ngữ cảnh vì kiểu tải trọng này có thể xác định từ URL yêu cầu.

Các phần phụ sau mô tả cách URL ngữ cảnh được xây dựng cho từng danh mục tải trọng bằng cách cung cấp các mẫu URL ngữ cảnh. Mẫu URL ngữ cảnh sử dụng các thuật ngữ sau:

• {context-url} là đường dẫn tài nguyên chuẩn cho tài liệu dữ liệu đặc tả,

• {entity-set} là tên của một tập hợp thực thể hoặc đường dẫn đến một thuộc tính điều hướng,

• {entity} là URL chuẩn cho một thực thể,

• {singleton} là URL chuẩn cho một thực thể đơn lẻ,

• {select-list} là danh sách tùy chọn được phân tách bằng dấu phẩy, các hàm và hành động được lựa chọn,

• {property-path} là đường dẫn đến thuộc tính cấu trúc của thực thể,

• {type-name} là tên của kiểu,

• {/ type-name} là một phân đoạn chứa tên của một kiểu có nguồn gốc được đặt trước bằng dấu gạch chéo.

Các định nghĩa đầy đủ cho URL ngữ cảnh được định nghĩa trong [OData-ABNF].

Ứng dụng

OData là một giao thức Web để truy vấn và cập nhật dữ liệu cung cấp một cách thống nhất để truy cập dữ liệu. Nói một cách đơn giản, OData cung cấp một định dạng chuẩn để truyền dữ liệu và một giao diện thống nhất để truy cập dữ liệu đó. Nó dựa trên các nguồn cấp dữ liệu ATOM và JSON và giao diện sử dụng là các giao thức HTTP (REST) để triển khai truy vấn và cập nhật. OData là một thành phần quan trọng trong việc giải quyết các vấn đề về tiếp cận dữ liệu. Do có một giao diện linh hoạt, thống nhất, API có thể được tạo ra một lần và được sử dụng từ nhiều trải nghiệm khách hàng khác nhau.

Giao diện OData linh hoạt có thể được thu hút khách hàng có tiềm năng bởi vì khách hàng có nhiều trải nghiệm phong phú hơn. Hệ sinh thái khách hàng OData đã phát triển mạnh trong vài năm qua và đã hình thành một thư viện khách hàng cho phần lớn các thiết bị và nền tảng máy khách.  

Trong Thông tư số 39/2017/TT-BTTTT ngày 15/12/2017 của Bộ trưởng Bộ Thông tin và Truyền thông Ban hành Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước, Khuyến nghị áp dụng tiêu chuẩn Odata phiên bản 4.0 và được xếp vào nhóm Tiêu chuẩn kết nối.

Đỗ Tiến Thành

Tài liệu tham khảo:

[1] http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html

[2] https://www.odata.org/

 

 

58 Go top

Ý kiến về Trang thông tin điện tử Cục Tin học hóa?



THÔNG KÊ TRUY CẬP
  • Người trực tuyến Người trực tuyến
    • Khách Khách 77
    • Thành viên Thành viên 0
    • Tổng Tổng 77
    • Tổng lượt truy cập: Tổng lượt truy cập: 10200557