Việc triển khai kết nối các hệ thống thông tin, cơ sở dữ liệu vào cơ sở dữ liệu quốc gia để truy nhập, trao đổi và chia sẻ dữ liệu cần có quy định các yêu cầu kỹ thuật về cấu trúc của các thông điệp dữ liệu được trao đổi giữa cơ sở dữ liệu quốc gia và các hệ thống thông tin, cơ sở dữ liệu có kết nối với cơ sở dữ liệu quốc gia (gọi tắt là cấu trúc dữ liệu trao đổi). Nếu thiếu các quy định kỹ thuật này thì một hệ thống thông tin, cơ sở dữ liệu nhận được dữ liệu cũng không thể đọc và sử dụng được. Để hướng dẫn các cơ quan chủ quản cơ sở dữ liệu quốc gia xây dựng cấu trúc dữ liệu trao đổi, ngày 23/6/2017, Bộ trưởng Bộ Thông tin và Truyền thông đã ban hành Thông tư số 13/2017/TT-BTTTT quy định các yêu cầu kỹ thuật về kết nối các hệ thống thông tin, cơ sở dữ liệu với cơ sở dữ liệu quốc gia.
Bài viết này sẽ thảo luận về hiện trạng cấu trúc dữ liệu trao đổi của các cơ sở dữ liệu quốc gia cần ưu tiên triển khai tạo nền tảng phát triển chính phủ điện tử hiện nay và một số kinh nghiệm tốt về thiết kế lược đồ XML phục vụ xây dựng mô hình dữ liệu mức vật lý trong cấu trúc dữ liệu trao đổi.
Hiện trạng cấu trúc dữ liệu trao đổi của các cơ sở dữ liệu quốc gia cần ưu tiên triển khai tạo nền tảng phát triển chính phủ điện tử
Ngày 22/5/2015, Thủ tướng Chính phủ đã ký Quyết định số 714/QĐ-TTg ban hành Danh mục cơ sở dữ liệu quốc gia cần ưu tiên triển khai tạo nền tảng phát triển chính phủ điện tử; trong đó quy định cơ quan chủ quản cơ sở dữ liệu quốc gia chủ trì xây dựng và ban hành các quy chuẩn kỹ thuật cơ sở dữ liệu quốc gia về nội dung, cấu trúc và kiểu thông tin của dữ liệu; phương thức truy nhập dữ liệu. Trong các cơ sở dữ liệu quốc gia thuộc Danh mục cơ sở dữ liệu quốc gia cần ưu tiên triển khai tạo nền tảng phát triển chính phủ điện tử, đến thời điểm hiện tại, Cơ sở dữ liệu quốc gia về Dân cư đã có quy định về cấu trúc dữ liệu trao đổi được ban hành; đó là Quy chuẩn kỹ thuật quốc gia về cấu trúc thông điệp dữ liệu công dân trao đổi với cơ sở dữ liệu quốc gia về dân cư (QCVN số 109:2017/BTTTT) do Bộ Công an phối hợp với Bộ Thông tin và Truyền thông xây dựng. Việc ban hành QCVN số 109:2017/BTTTT tạo thuận lợi cho các hệ thống thông tin, cơ sở dữ liệu đã, đang và sẽ xây dựng có nhu cầu kết nối với Cơ sở dữ liệu quốc gia về Dân cư có định hướng, kế hoạch bổ sung, nâng cấp các thành phần phục vụ kết nối theo quy định của QCVN số 109:2017/BTTTT để bảo đảm sẵn sàng kết nối, truy nhập, trao đổi và chia sẻ dữ liệu khi Cơ sở dữ liệu quốc gia về Dân cư đưa vào vận hành. Các cơ sở dữ liệu quốc gia khác gồm: Cơ sở dữ liệu Đất đai quốc gia; Cơ sở dữ liệu quốc gia về Đăng ký doanh nghiệp; Cơ sở dữ liệu quốc gia về Thống kê tổng hợp về dân số; Cơ sở dữ liệu quốc gia về tài chính; Cơ sở dữ liệu quốc gia về Bảo hiểm cũng cần sớm xây dựng, ban hành các quy chuẩn như vậy để tạo thuận lợi cho các bộ, ngành địa phương có nhu cầu kết nối các hệ thống thông tin, cơ sở dữ liệu với cơ sở dữ liệu quốc gia chuẩn bị sẵn sàng các điều kiện kết nối.
Một số kinh nghiệm tốt về thiết kế lược đồ XML
Để xây dựng quy định về cấu trúc dữ liệu trao đổi, trước hết cần phải mô hình hóa dữ liệu. Mô hình dữ liệu là thiết kế kỹ thuật sử dụng các ký hiệu, ngôn ngữ để thể hiện cấu trúc, nội dung của dữ liệu. Mô hình dữ liệu trong cấu trúc dữ liệu trao đổi bao gồm các mức độ chi tiết sau: Mô hình dữ liệu mức khái niệm, Mô hình dữ liệu mức logic, Mô hình dữ liệu mức vật lý. Trong đó, định dạng mô tả mô hình dữ liệu mức vật lý được yêu cầu sử dụng ngôn ngữ XML, tuân thủ lược đồ XML tiêu chuẩn; cú pháp hoàn chỉnh, rõ ràng, chặt chẽ (well-defined). Sau đây là một số kinh nghiệm tốt về thiết kế lược đồ XML bảo đảm đáp ứng các yêu cầu trên:
Không gian tên (namespaces) của lược đồ dữ liệu XML
Khi tạo một lược đồ XML, chúng ta luôn cần chỉ rõ một targetNamespace URI. URI (Uniform Resource Identifier) là một chuỗi ký tự xác định một tài nguyên Internet. URI phổ biến nhất là URL (Uniform Resource Locator) xác định một địa chỉ miền Internet. Một loại URI khác không phổ biến là URN (Universal Resource Name). URI được sử dụng trong lược đồ XML phải là một URI hợp lệ; nên là duy nhất và “được sở hữu” bởi cơ quan, đơn vị tạo ra lược đồ XML. URI sử dụng nên được đặt theo địa chỉ cổng thông tin/trang thông tin điện tử chính thức của cơ quan, đơn vị tạo ra lược đồ XML. Ví dụ: targetNamespace= “http://aita.gov.vn/DataExchange/CommonType.xsd”.
Kinh nghiệm tốt cho một không gian tên URI là:
http://$domain/$groupSpecifier/$namespaceTitle/$year-$month
Trong đó, groupSpecifier có thể bao gồm nhiều mức; ví dụ: /HPS/EMEA/UK/sales/.
Ví dụ về không gian tên:
http://www.example.org/DFG/tech/schemas/foobar/2003-11
Không gian tên nên có một cổng thông tin/trang thông tin điện tử chính thức có thể truy cập được sử dụng không gian tên URI bỏ đi phần năm-tháng (Ví dụ: http://www.example.org/ DFG/tech/schemas/foobar/). Cổng thông tin/trang thông tin điện tử chính thức nên tham chiếu đến phiên bản mới nhất của lược đồ XML và hỗ trợ trạng thái của phiên bản trước.
Đặt giá trị trong một thuộc tính hay phần tử?
Khi tạo một lược đồ XML, chúng ta thường có lựa chọn đặt giá trị trong một thuộc tính hay một phần tử. Thật sự cũng không có sự thống nhất trong việc sử dụng thuộc tính hay phần tử; dưới đây là một số kinh nghiệm tốt giúp chúng ta lựa chọn khi viết lược đồ XML của mình:
- Sử dụng thuộc tính cho dữ liệu đặc tả về phần tử cha;
- Sử dụng thuộc tính cho dữ liệu bị ràng buộc về ngữ nghĩa với phần tử chứa nó;
- Sử dụng phần tử cho dữ liệu có ý nghĩa riêng với phần tử chứa nó;
- Sử dụng thuộc tính khi giá trị của nó sẽ thường xuyên hiện diện để nâng cao khả năng người sử dụng đọc được tài liệu XML hoặc để giảm kích thước của tài liệu;
- Nếu chúng ta mới sử dụng thì nên sử dụng dạng phần tử (có thể mở rộng được).
Số lượng phần tử
Tất cả các phần tử dữ liệu khai báo cần chỉ rõ số lượng. Khi chúng ta viết một lược đồ XML luôn đặt thuộc tính sau elementFormDefault="qualified" trong phần tử khi khai báo lược đồ và chỉ rõ số lượng trong khai báo phần tử minOccurs="1" maxOccurs="1" .
Tên thuộc tính
Không nên đặt thuộc tính attributeFormDefault; nên để giá trị mặc định là "unqualified".
Nếu một thuộc tính được khai báo ở mức trên cùng trong tệp lược đồ XML thì nó là một thuộc tính toàn cục. Chúng ta chỉ nên sử dụng thuộc tính toàn cục trong các trường hợp sau:
- Thuộc tính được sử dụng (hoặc đang được thiết kế để sử dụng) trên một số lược đồ XML rời rạc và luôn có cùng ý nghĩa.
- Cần đưa một thuộc tính mới vào trong lược đồ XML khác để mở rộng lược đồ đó.
Một ví dụ về thuộc tính toàn cục là xml:lang được sử dụng trong nhiều tài liệu XML nhưng luôn có cùng ý nghĩa.
Nhóm thuộc tính
Nếu chúng ta có một thuộc tính được sử dụng nhiều lần trong các phần tử khác nhau của lược đồ XML thì nên tạo một nhóm thuộc tính và tham chiếu nhóm thuộc tính đó từ kiểu dữ liệu phức hợp chứa thuộc tính.
Định nghĩa các tham số thuộc tính phổ biến dưới dạng các thành phần có thể sử dụng lại qua việc định nghĩa phần tử “attributeGroup” của lược đồ XML.
Các định danh trong lược đồ XML
Lược đồ XML có không gian ký hiệu riêng cho phần tử và kiểu dữ liệu vì vậy phần tử và kiểu dữ liệu có thể có tên giống nhau. Kinh nghiệm tốt là thêm từ “Type” vào tất cả tên kiểu dữ liệu đơn giản và phức hợp để giúp người sử dụng có khả năng đọc và hiểu được. Ví dụ, chúng ta muốn tạo kiểu dữ liệu đơn giản cho phần tử zipCodes thì có thể đặt là "zipCodeType" .
Đặt tên thẻ
Sử dụng tên thẻ kết hợp cả chữ hoa và chữ thường với ký tự đầu của mỗi từ là chữ hoa và các ký tự còn lại là chữ thường; không sử dụng dấu nối hay khoảng trống giữa các từ. Định dạng này sẽ tăng khả năng đọc và phù hợp với các tiêu chuẩn công nghiệp phổ biến. Ví dụ: , .
Nếu tên thẻ có sự kết hợp của từ là tên thẻ và từ cấu tạo bằng các chữ đầu của một nhóm từ (có 2 ký tự viết hoa liền nhau) thì tách chúng ra bằng dấu gạch dưới (‘_’). Ví dụ: .
Tên của thẻ không nên vượt quá 25 ký tự. Tên thẻ nên được giải thích rõ trừ khi chúng vượt quá 25 ký tự, khi đó các chữ viết tắt chuẩn nên được sử dụng. Phương pháp này có thể làm giảm kích cỡ của toàn bộ thông điệp và hạn chế ảnh hưởng tới điều kiện về băng thông. Ví dụ: Tên thẻ có thể được viết gọn thành .
Tên thẻ có kiểu phức hợp nên được thêm hậu tố “Type”. Phương pháp này cho phép các kiểu phức hợp dễ dàng được nhận biết. Ví dụ: , .
Đặt tên tệp lược đồ XML
Tệp .xsd nên đặt cùng tên với phần tử gốc của lược đồ XML giúp dễ dàng nhận ra nội dung của tệp .xsd. Ví dụ: Phần tử gốc là thì tên tệp lược đồ XML nên đặt là OTA_AirFlifoRQ.xsd.
Kết luận
Với một số kinh nghiệm tốt về thiết kế lược đồ XML được thảo luận trên đây, các cơ quan chủ quản cơ sở dữ liệu quốc gia chưa ban hành quy định về cấu trúc dữ liệu trao đổi có thể tham khảo khi thiết kế mô hình dữ liệu mức vật lý trong cấu trúc của các thông điệp dữ liệu được trao đổi giữa cơ sở dữ liệu quốc gia và các hệ thống thông tin, cơ sở dữ liệu có kết nối với cơ sở dữ liệu quốc gia bảo đảm tuân thủ lược đồ XML tiêu chuẩn; cú pháp hoàn chỉnh, rõ ràng, chặt chẽ (well-defined).
Tài liệu tham khảo
[1] David Stephenson, XML Schema best practices, Hewlett-Packard Development Company, L.P, 2004;
[2] OpenTravel Alliance, XML Schema Design Best Practices, 2008;
[3] Công văn số 3788/BTTTT-THH ngày 26/12/2014 của Bộ Thông tin và Truyền thông về việc hướng dẫn liên thông, trao đổi dữ liệu có cấu trúc bằng ngôn ngữ XML giữa các hệ thống thông tin trong cơ quan nhà nước;
[4] Quyết định số 714/QĐ-TTg ngày 22/5/2015 của Thủ tướng Chính phủ ban hành Danh mục cơ sở dữ liệu quốc gia cần ưu tiên triển khai tạo nền tảng phát triển chính phủ điện tử;
[5] Thông tư số 02/2017/TT-BTTTT ngày 04/4/2017 của Bộ trưởng Bộ Thông tin và Truyền thông Ban hành “Quy chuẩn kỹ thuật quốc gia về cấu trúc thông điệp dữ liệu công dân trao đổi với cơ sở dữ liệu quốc gia về dân cư”;
[6] Thông tư số 13/2017/TT-BTTTT ngày 23/6/2017 của Bộ trưởng Bộ Thông tin và Truyền thông quy định các yêu cầu kỹ thuật về kết nối các hệ thống thông tin, cơ sở dữ liệu với cơ sở dữ liệu quốc gia.
Phạm Văn Thịnh