2 TÓM TẮT Trong báo cáo này, nhóm nghiên cứu trình bày những nội dung đã tìm hiểu, các kiến thức về các nguồn dữ liệu liên quan tới ứng dụng thành phố thông minh, các đặc tính của chúng
Trang 23MỤC LỤC
LỜI CÁM ƠN 15TÓM TẮT 16Chương 1 Giới thiệu 17
Nguồn dữ liệu cho các ứng dụng thành phố thông minh 17Thành phố thông minh 17Nguồn dữ liệu cho các ứng dụng thành phố thông minh 17
Dữ liệu mở 18Cổng dữ liệu mở và mô hình kiến trúc hướng dịch vụ 22Quan hệ giữa ứng dụng thành phố thông minh và dữ liệu mở 24Những case study điển hình trong các ứng dụng thành phố thông minh 25Ứng dụng thành phố thông minh và chuyển đổi dữ liệu 28Tình hình nghiên cứu mô hình dữ liệu, định dạng dữ liệu, chuyển đổi dữ liệu ở Việt Nam và trên thế giới 29Tình hình nghiên cứu mô hình dữ liệu, định dạng dữ liệu ở Việt Nam và trên thế giới 29Tình hình nghiên cứu chuyển đổi dữ liệu ở Việt Nam và trên thế giới 30Mục tiêu của đề tài 33Chương 2 Các mô hình và định dạng dữ liệu 34
Mô hình dữ liệu 34
Mô hình cơ sở dữ liệu 34
Mô hình cơ sở dữ liệu quan hệ 44
Mô hình cơ sở dữ liệu NoSQL 48
Mô hình cơ sở dữ liệu tài liệu 52
Mô hình cơ sở dữ liệu dạng khóa 58
Mô hình cơ sở dữ liệu dạng cột 63
Mô hình cơ sở dữ liệu dạng đồ thị 68Định dạng dữ liệu phổ thông 78Extensible Markup Language (XML) 78JavaScript Object Notation (JSON) 83Binary JSON (BSON) 86
Trang 24So sánh các mô hình cơ sở dữ liệu 88
So sánh các định dạng dữ liệu phổ thông 91Chương 3 Framework chuyển đổi dữ liệu 99
Các công trình chuyển đổi dữ liệu hiện có 99
Đề xuất phương pháp chuyển đổi dữ liệu 105Phương pháp chuyển đổi dữ liệu 105
Đề xuất chuẩn dữ liệu cho framework 107Thiết kế framework chuyển đổi dữ liệu 112Luồng làm việc của hệ thống 112Kiến trúc tổng quan framework 114Kiến trúc từng phần framework 115Chương 4 Phân tích yêu cầu hệ thống thử nghiệm chuyển đổi dữ liệu 123
Tổng quan về các yêu cầu, chức năng của hệ thống 123Phân tích chức năng của hệ thống 124Chức năng tương tác với người dùng 124Chức năng thu thập dữ liệu - Chức năng chia sẻ dữ liệu 125Chức năng quản lý luồng chuyển đổi dữ liệu 129Chức năng chuyển đổi dữ liệu 129Chức năng lưu trữ dữ liệu 134Chức năng xuất dữ liệu 135Chức năng liên hệ giữa các instance của hệ thống 135Cấu trúc schema trung gian của hệ thống 135Chương 5 Thiết kế, phát triển hệ thống chuyển đổi dữ liệu thử nghiệm 138
Giao diện hệ thống 138Công cụ quản lý thực thi luồng, quản lý báo cáo – Công cụ Airflow 139Quy trình triển khai phần mềm 142
Mã nguồn CKAN 144Triển khai CKAN sử dụng Docker 145Sequence diagram của bộ chuyển đổi 147Use case diagram của CKAN 149Luồng thực thi với CKAN 151
Trang 25Cấu trúc mã nguồn 152Chương 6 Các công cụ liên quan 179
Redis 179Giới thiệu – Lịch sử phát triển 179Tính năng 180Ứng dụng 182
Ưu điểm 184Nhược điểm 185MongoDB 186Giới thiệu 186Các thành phần chính của kiến trúc MongoDB 187
Ưu điểm của MongoDB 188Nhược điểm của MongoDB 189Docker 189Giới thiệu 189Kiến trúc Docker Engine 190
Ưu điểm của Docker Container 190CKAN 191Giới thiệu tổng quan 191Các tính năng của CKAN 191Công nghệ sử dụng 192Kiến trúc hệ thống 193Các tổ chức sử dụng 194Apache Airflow 196Giới thiệu – Chức năng 196
Ưu điểm– Nhược điểm 197Chương 7 Đánh giá hệ thống 199
Đánh giá hệ thống 199
Dữ liệu đánh giá 200Kết quả đánh giá 205Thiết kế testcase đánh giá quá trình chuyển đổi dữ liệu MySQL 205
Trang 26Thiết kế testcase đánh giá quá trình chuyển đổi dữ liệu MongoDB 213Thiết kế testcase đánh giá quá trình chuyển đổi dữ liệu Redis 215Thiết kế testcase đánh giá quá trình chuyển đổi dữ liệu dạng ảnh 217Thiết kế testcase đánh giá quá trình chuyển đổi dữ liệu CSV 218Kết luận 218Ứng dụng tích hợp hệ thống chuyển đổi dữ liệu 219Giới thiệu 219Case study: Hệ thống trực quan hóa truyền nhiễm Covid 220Một số vấn đề mở rộng liên quan đến hệ thống chuyển đổi dữ liệu 223Chương 8 Kết luận và hướng phát triển 226Tài liệu tham khảo 232PHỤ LỤC 238PHỤ LỤC HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG 239Hướng dẫn cài đặt 239Hướng dẫn sử dụng 240PHỤ LỤC MÃ NGUỒN 244
Trang 27MỤC LỤC HÌNH ẢNH
Hình 1 Kiến trúc dữ liệu mở [9] 22 Hình 2 Mô hình kiến trúc hướng dịch vụ Trong đó, các thành phần sẽ giao tiếp với nhau thông qua giao thức truyền thông trên mạng 22 Hình 3 Ứng dụng minh bạch tài chính của chính phủ Brazil (http://www.portaltransparencia.gov.br) [13] 25 Hình 4 Thông tin trường học được cung cấp trên dữ liệu mở ở Tanzania [16] 26 Hình 5 Thông tin dữ liệu mở cung cấp tại 1 vị trí do người dùng chọn ở thành phố New York [16] 27 Hình 6 Ví dụ bản đồ cảnh báo vùng dịch bệnh ở Singapore [16] 27 Hình 7 Cổng dữ liệu mở của chính phủ Hoa Kỳ 28 Hình 8 Một số vấn đề trong lĩnh vực lưu trữ dữ liệu 29 Hình 9 Một vài lĩnh vực có liên quan tới bài toán chuyển đổi dữ liệu 32 Hình 10 Thành phần của một hệ quản trị cơ sở dữ liệu 34 Hình 11 Độ phổ biến của các dạng cơ sở dữ liệu do DB-Engine [35] thống kê vào tháng 8/2020 35 Hình 12 Số lượng sản phẩm của mỗi dạng cơ sở dữ liệu Số liệu do DB-Engines [35] thống kê vào tháng 8/2020 36 Hình 13 Luồng làm việc của hệ thống cơ sở dữ liệu 36 Hình 14 Các thành phần cơ bản của hệ quản trị cơ sở dữ liệu 38 Hình 15 Edgar Frank Codd - Cha đẻ của mô hình cơ sở dữ liệu quan hệ 40 Hình 16 Các giai đoạn phát triển của hệ cơ sở dữ liệu 41 Hình 17 Mốc ra đời của một số hệ cơ sở dữ liệu tiêu biểu 41 Hình 18 Mô hình phân cấp 42 Hình 19 Mô hình mạng 42 Hình 20 Mô hình dữ liệu quan hệ 43 Hình 21 Mô hình dữ liệu hướng đối tượng 43 Hình 22 Mô hình cơ sở dữ liệu quan hệ 44 Hình 23 Cột mốc năm xuất bản của các chuẩn SQL 47 Hình 24 Theo trang DB-Engines [35], cả bốn cơ sở dữ liệu phổ biến nhất hiện nay đều là cơ sở dữ liệu quan hệ 48 Hình 25 Trong top mười cơ sở dữ liệu phổ biến nhất thì chỉ có hai cơ sở dữ liệu thuộc NoSQL 49 Hình 26 Biểu đồ thể hiện sự thay đổi của mức độ nổi tiếng của các dạng cơ sở dữ liệu so với dạng cơ sở
dữ liệu quan hệ 50 Hình 27 Sự khác biệt giữa mô hình dữ liệu quan hệ và mô hình dữ liệu NoSQL: Mô hình dữ liệu quan hệ
là một mô hình thống nhất còn mô hình dữ liệu NoSQL gồm nhiều mô hình con nhỏ 50 Hình 28 Dữ liệu album dưới dạng XML 52 Hình 29 Dữ liệu album dưới dạng JSON 53 Hình 30 Dữ liệu album dưới dạng cơ sở dữ liệu quan hệ 54 Hình 31 Biểu diễn của dữ liệu dưới dạng schema 55 Hình 32 Theo thứ tự từ trên xuống: công ty Adobe, công ty Nokia, công ty Google - Ba công ty lớn đang
sử dụng công nghệ hệ cơ sở dữ liệu dạng văn bản 57 Hình 33 Top 10 cơ sở dữ liệu dạng văn bản phổ biến nhất hiện nay (Theo DB-Engines [35]) 58 Hình 34 Theo thứ tự từ trái sang phải, từ trên xuống, các sản phẩm đặc trưng thuộc dạng Key-Value 59 Hình 35 Hàm băm đơn giản dùng để ánh xạ tên và một số tự nhiên 60
Trang 28Hình 36 Một ví dụ về việc dùng hàm băm để lưu trữ dữ liệu 60 Hình 37 Oracle NoSQL Database và Riak - Hai dạng cơ sở dữ liệu thuộc dạng Key-Value sử dụng cơ chế chỉ lưu trữ dữ liệu trên đĩa cứng 61 Hình 38 Apache Ignite, Aerospike - Hai dạng cơ sở dữ liệu Key-Value có sử dụng cơ chế lưu trữ trên RAM 62 Hình 39 Top 20 cơ sở dữ liệu thuộc dạng cơ sở dữ liệu key-value phổ biến nhất theo DB-Engines [35] vào tháng 8/2020 63 Hình 40 Sản phẩm BigTable - Sản phẩm mở đầu cho dạng cơ sở dữ liệu dạng cột 64 Hình 41 Các cơ sở dữ liệu thuộc dạng cột thông dụng: Cassandra, HBase, Couchbase 64 Hình 42 Sự khác biệt trong cơ chế lưu trữ dạng hàng (Cơ sở dữ liệu quan hệ) và dạng cột (Cơ sở dữ liệu dạng cột) 65 Hình 43 Cơ chế nhóm cột - Một cơ chế được sử dụng trong Cassandra 66 Hình 44 Từ trên xuống dưới, công ty Facebook, công ty Google, công ty Github - ba công ty lớn đang sử dụng công nghệ cơ sở dữ liệu dạng cột 67 Hình 45 Xếp hạng của 11 cơ sở dữ liệu dạng cột theo DB-Engines [35] vào tháng 8/2020 68 Hình 46 Sơ đồ quan hệ của ba người dùng Billy, Harry và Ruth trên Twitter 69 Hình 47 Sơ đồ quan hệ của ba người dùng Billy, Harry và Ruth trên Twitter có bổ sung thêm tin nhắn 70 Hình 48 Một số cơ sở dữ liệu dạng đồ thị thông dụng: Neo4j, Microsoft Azure Cosmos DB, OrientDB, ArangoDB 71 Hình 49 Cơ chế lưu trữ vật lí của Neo4j 72 Hình 50 Sơ đồ biểu diễn cách lưu trữ quan hệ theo dạng đồ thị 73 Hình 51 Đồ thị biểu diễn sự thay đổi độ phổ biến của các dạng cơ sở dữ liệu từ năm 2013 Trong đó, cơ
sở dữ liệu dạng đồ thị có độ tăng độ phổ biến nhanh và nhiều nhất 74 Hình 52 Top 20 sản phẩm thuộc dạng cơ sở dữ liệu đồ thị phổ biến nhất 75 Hình 53 Tổ chức W3C - Tổ chức quản lý XML 78 Hình 54 Các cột mốc ra đời của các phiên bản chuẩn của XML 1.0 và XML 1.1 79 Hình 55 Mẫu dữ liệu XML gốc 80 Hình 56 Cấu trúc của mẫu dữ liệu khi biểu diễn theo DTD 81 Hình 57 Cấu trúc của mẫu dữ liệu khi biểu diễn theo XSD 81 Hình 58 Công ty Microsoft sử dụng XML trong các định dạng docx, xlsx, pptx 82 Hình 59 Tổ chức HIPAA sử dụng XML trong chuẩn giao tiếp 82 Hình 60 JSON - Định dạng trao đổi dữ liệu phổ biến nhất hiện nay 83 Hình 61 Thời điểm ra đời của một số chuẩn JSON 84 Hình 62 Chuẩn dữ liệu Health Level 7 [50] sử dụng JSON làm một trong những định dạng chuẩn dữ liệu
để trao đổi dữ liệu 85 Hình 63 Công ty MongoDB - Công ty đề xuất và bảo trì chuẩn BSON 86 Hình 64 Top 10 cơ sở dữ liệu phổ biến nhất hiện nay theo DB-Engines [35] Trong đó, MongoDB đứng hàng thứ 5, chỉ đứng sau các cơ sở dữ liệu lâu đời 88 Hình 65 Đồ thị biểu thị độ tương quan giữa số lượng dữ liệu và dung lượng dữ liệu giữa hai định dạng BSON và JSON 96 Hình 66 Các bước chuyển đổi dữ liệu [61] 99 Hình 67 Mô-đun di chuyển dữ liệu [62] 100 Hình 68 Mô-đun di chuyển dữ liệu [62] 100 Hình 69 Kiến trúc hệ thống chuyển đổi dữ liệu [63] 101 Hình 70 Bộ công cụ chuyển đổi dữ liệu AML [64] 101
Trang 29Hình 71 Kiến trúc sự thực thi tương tác [65] 102 Hình 72 Kiến trúc tích hợp dữ liệu truyền thống [26] 103 Hình 73 Mô hình chuyển đổi trực tiếp 106 Hình 74 Mô hình chuyển đổi trung gian 107 Hình 75 Hai dữ liệu JSON biểu diễn cùng một mẫu dữ liệu 108 Hình 76 Cấu trúc JSON Schema cho bản ghi thứ 2 109 Hình 77 Quy trình chuyển đổi dữ liệu của framework 113 Hình 78 Kiến trúc tổng quan của framework 114 Hình 79 Quy trình hoạt động của khối Input/Output 115 Hình 80 Giao diện mẫu cho bước nhập dữ liệu 116 Hình 81 Giao diện trả dữ liệu cho người dùng sau khi chuyển đổi mẫu 117 Hình 82 Dữ liệu đầu vào và đầu ra của thành phần schema 118 Hình 83 Dữ liệu sẽ được cung cấp cho provider tương ứng để rút trích ra schema của dữ liệu 119 Hình 84 Các Provider sẽ kế thừa và hiện thực Interface IProvider Cách thiết kế này sẽ giúp hệ thống có tính khả mở 119 Hình 85 Cách thức hoạt động của khối chuyển đổi: Dữ liệu đầu vào là Schema và dữ liệu của người dùng
Dữ liệu đầu ra là dữ liệu đã được chuyển đổi 120 Hình 86 Hoạt động của khối lưu trữ 122 Hình 87 Cổng dữ liệu CKAN sẽ được sử dụng làm giao diện của hệ thống 124 Hình 88 Giao diện của công cụ Airflow cũng sẽ được sử dụng làm giao diện quản lý các luồng chuyển đổi
dữ liệu, báo cáo của quá trình chuyển đổi dữ liệu 125 Hình 89 Các nguồn dữ liệu của các hệ thống chuyển đổi dữ liệu 126 Hình 90 Mã nguồn API Database Factory 128 Hình 91 Mã nguồn Interface DatabaseFunctionsOptions 128 Hình 92 Các hàm cơ bản của chức năng chuyển đổi schema 130 Hình 93 Các hàm cơ bản của chức năng chuyển đổi data 130 Hình 94 Giao diện xem dataset 138 Hình 95 Giao diện upload dataset 139 Hình 96 Giao diện chính của hệ thống Airflow Giao diện này sẽ thể hiện các luồng thực thi có trong hệ thống 140 Hình 97 Giao diện trực quan hóa một luồng thực thi theo kiểu đồ thị 140 Hình 98 Giao diện trực quan hóa một luồng thực thi theo dạng hình cây Giao diện này cũng hiển thị một
số tác vụ thực thi luồng đã được thực hiện 141 Hình 99 Giao diện quản lý báo cáo của hệ thống - Giao diện này hiển thị toàn bộ báo cáo của hệ thống 141 Hình 100 Giao diện quản lý báo cáo của hệ thống - Giao diện này hiển thị báo cáo chi tiết quá trình thực thi của một tác vụ cụ thể 142 Hình 101 Minh họa việc tích hợp công cụ chuyển đổi vào CKAN 143 Hình 103 Mã nguồn của CKAN 144 Hình 103 Cấu trúc mã nguồn của Docker-CKAN 145 Hình 104 Minh họa các thiết lập Dockerfile để CKAN tự động cài đặt plugin được chỉ định 146 Hình 105 Minh họa các thiết lập Dockerfile để CKAN tự động sử dụng plugin đã được cài đặt 146 Hình 106 Minh họa việc cài đặt các package cho CKAN 147 Hình 107 Sequence diagram của bộ chuyển đổi dữ liệu 148 Hình 108 Use case diagram của CKAN có tích hợp bộ chuyển đổi dữ liệu 150
Trang 30Hình 109 Lược đồ mô tả cách người dùng tương tác với CKAN 151 Hình 110 Cấu trúc mã nguồn của bộ chuyển đổi 152 Hình 111 Mã nguồn mô tả việc sử dụng script của SchemaCrawler trong Python 153 Hình 112 Schema được SchemaCrawler trích xuất dưới dạng ảnh 153 Hình 113 Schema được SchemaCrawler trích xuất dưới dạng file JSON 154 Hình 114 Minh họa cách SchemaCrawler sử dụng uuid 154 Hình 115 So sánh cách lưu trữ của schema trong MongoDB trước và sau khi được chuyển đổi 155 Hình 116 Minh họa dữ liệu trong MySQL trước khi chuyển đổi 158 Hình 117 Minh họa dữ liệu trong MongoDB sau khi chuyển đổi 159 Hình 118 Minh họa quá trình khởi tạo câu truy vấn phù hợp cho MySQL 159 Hình 119 Minh họa việc chuyển đổi kiểu dữ liệu của MySQL 159 Hình 120 Minh họa cách sử dụng document reference trong MySQL 161 Hình 121 Minh họa cách sử dụng embedded document trong MongoDB 162 Hình 122 Minh họa việc hiện thực document reference cho MongoDB 163 Hình 123 Minh họa câu lệnh tạo bảng đơn giản 164 Hình 124 Cấu trúc schema của mọi dữ liệu từ Redis 167 Hình 125 Kết quả của công cụ PymongoSchema 168 Hình 126 Hàm đọc file thiết lập gốc của hệ thống 170 Hình 127 Hàm đọc thiết lập của các cơ sở dữ liệu trong hệ thống 170 Hình 128 Hàm tạo kết nối đến Datastore 171 Hình 129 Hàm lưu dữ liệu xuống Datastore 172 Hình 130 Hàm truy xuất schema từ Datastore 172 Hình 131 Cấu trúc dữ liệu trả về của API lấy danh sách dataset hiện có 173 Hình 132 Ví dụ về các gọi và dữ liệu trả về của API lấy danh sách dataset hiện có thông qua công cụ Postman 174 Hình 133 Cấu trúc dữ liệu trả về của API lấy thông tin của một dataset 175 Hình 134 Ví dụ về các gọi và dữ liệu trả về của API lấy thông tin của một dataset 176 Hình 135 Cấu trúc dữ liệu trả về của API lấy danh sách các bộ chuyển đổi hiện có của hệ thống 177 Hình 136 Ví dụ về các gọi và dữ liệu trả về của API lấy danh sách các bộ chuyển đổi hiện có của hệ thống 178 Hình 137 Sản phẩm Redis- Một trong những sản phẩm NoSQL phổ biến, nổi tiếng nhất hiện nay (tháng 8/2020) 179 Hình 138 Vmware và Redislabs - Hai tổ chức chịu trách nhiệm phát triển Redis hiện nay 180 Hình 139 Ví dụ về cách sử dụng Redis 184 Hình 140 Sản phẩm MongoDB 186 Hình 141 Mối quan hệ tương quan giữa một số thuật ngữ trong Cơ sở dữ liệu quan hệ (RDBMS) và MongoDB 186 Hình 142 Các công ty sử dụng sản phẩm MongoDB 187 Hình 143 Ứng dụng Docker 189 Hình 144 Kiến trúc Docker Engine [77] 190 Hình 145 CKAN (Comprehensive Knowledge Archive Network) - Hệ thống quản lý dữ liệu mở phổ biến nhất hiện nay (https://ckan.org/) 191 Hình 146 Các công nghệ, công cụ sử dụng: Python, JavasScript, Flask, Pylons, PostgreSQL, Solr, SQL Alchemy 193 Hình 147 Kiến trúc tổng quan hệ thống CKAN 193
Trang 31Hình 148 Cổng Thông tin Dữ liệu mở của Chính quyền Thành phố Đài Nam - Đài Loan
(data.tainan.gov.tw) 195 Hình 149 Website Dữ Liệu mở của Chính phủ Anh Quốc (data.gov.uk) 195 Hình 150 Tổ chức CivicData (civicdata.io) 196 Hình 151 Công cụ Apache Airflow- Công cụ hỗ trợ cho việc lập trình workflow 196 Hình 152 Một đồ thị DAG 197 Hình 153 Đồ thị DAG trong Airflow 197 Hình 154 Cổng dữ liệu quốc gia - Cổng dữ liệu mở của chính phủ Việt Nam 199 Hình 155 Cổng dữ liệu mở Thành phố Hồ Chí Minh 200 Hình 156 Dữ liệu từ nguồn cổng dữ liệu mở ở Việt Nam 201 Hình 157 Dữ liệu từ nguồn cổng dữ liệu mở ở Việt Nam 201 Hình 158 Cấu trúc tập dữ liệu Sakila 202 Hình 159 Cấu trúc tập dữ liệu Chinook 203 Hình 160 Cấu trúc tập dữ liệu Northwind 203 Hình 180 Cơ sở dữ liệu Redis được nhóm tạo ra để phục vụ cho quá trình kiểm thử 204 Hình 162 Tập dữ liệu MNIST chứa các chữ số viết tay 204 Hình 163 Câu lệnh kiểm tra sự khác nhau giữa schema gốc và schema được tái tạo 206 Hình 164 Câu lệnh kiểm tra sự khác nhau về dữ liệu giữa bảng gốc và bảng được tái tạo 206 Hình 165 Schema đã có sự thay đổi về kiểu dữ liệu Nhưng sự thay đổi dữ liệu là chấp nhận được 207 Hình 166 Schema đã có sự thay đổi về kiểu dữ liệu Nhưng sự thay đổi dữ liệu là chấp nhận được 207 Hình 167 Schema đã có sự thay đổi về kiểu dữ liệu Nhưng sự thay đổi dữ liệu là chấp nhận được 208 Hình 168 Quá trình chuyển đổi dữ liệu không làm thay đổi giá trị dữ liệu 208 Hình 169 Quá trình chuyển đổi dữ liệu không làm thay đổi giá trị dữ liệu 209 Hình 170 Quá trình chuyển đổi dữ liệu không làm thay đổi giá trị dữ liệu 209 Hình 171 Một vài cột dữ liệu hoàn toàn không có dữ liệu, điều này dữ tới sự biến mất của các cột dữ liệu này khi chuyển từ kiểu dữ liệu MongoDB về kiểu dữ liệu MySQL 210 Hình 172 Kết quả kiểm tra schema trong quá trình đánh giá – Các schema không quá khác nhau 211 Hình 173 Kết quả kiểm tra schema trong quá trình đánh giá – Các schema không quá khác nhau 211 Hình 174 Kết quả của quá trình chuyển đổi không làm sai lệch giá trị của dữ liệu MySQL 212 Hình 175 Các module của hệ thống và luồng hoạt động của hệ thống hoạt động bình thường 212 Hình 176 Quy trình chuyển đổi sẽ được tạo các báo cáo tương ứng tạo điều kiện cho người quản lý 213 Hình 177 Tuy có sự khác nhau về dbHash nhưng hai collection đều có giá trị giống nhau 214 Hình 178 Tuy có sự khác nhau về dbHash nhưng hai collection đều có giá trị giống nhau 214 Hình 179 Các dữ liệu gốc thuộc tập dữ liệu 215 Hình 180 Kết quả chuyển đổi dữ liệu 216 Hình 181 Chi tiết một vài dữ liệu được chuyển đổi 217 Hình 182 Kết quả của module chuyển đổi dữ liệu hình ảnh 218 Hình 183 Dữ liệu CSV ban đầu 221 Hình 184 Sơ đồ kiến trúc của Website 221 Hình 185 Số liệu hiệu năng trong 1 tháng 222 Hình 186 Giao diện hiển thị ca nhiễm theo bản đồ 222 Hình 187 Giao diện hiển thị ca nhiễm theo đồ thị 223 Hình 188 Minh họa khởi động CKAN bằng lệnh docker-compose up 240 Hình 189: Minh họa khởi động trình quản lý background jobs bằng lệnh docker exec 241 Hình 190: Giao diện trang chủ CKAN 241
Trang 32Hình 191 Minh họa nội dung của file config.xml 242 Hình 192 Người dùng thêm resource vào CKAN để hệ thống tự động chuyển đổi dữ liệu 242 Hình 193 Minh họa dữ liệu chuyển đổi đã được upload 243 Hình 194 Minh họa dữ liệu chuyển đổi đã được upload – Tải tập tin đã chuyển đổi về 243 Hình 195 Schema ví dụ được tạo ra theo schema trung gian nhóm đề ra 276 Hình 196 Minh họa các thiết lập trong file production.ini 280 Hình 197 Mã nguồn thiết lập docker-compose của chương trình 283 Hình 198 Cấu trúc hoàn chỉnh của Dockerfile 287 Hình 199 Mã nguồn quy trình chuyển đổi dữ liệu 295 Hình 200 Mã nguồn thực thi chuyển đổi Schema từ định dạng MySQL sang định dạng JSON 302 Hình 201 Mã nguồn chuyển đổi dữ liệu từ định dạng MySQL sang JSON 309 Hình 202 Mã nguồn thực thi chuyển đổi schema từ định dạng JSON sang định dạng MySQL 314 Hình 203 Mã nguồn chuyển đổi dữ liệu từ định dạng JSON sang định dạng MySQL 319 Hình 204 Mã nguồn chuyển đổi Schema từ định dạng JSON sang định dạng Redis 320 Hình 205 Mã nguồn chuyển đổi dữ liệu từ định dạng JSON sang Redis 323 Hình 206 Mã nguồn quy trình chuyển đổi Schema từ định dạng Redis sang định dạng JSON 325 Hình 207 Mã nguồn quy trình chuyển đổi dữ liệu từ định dạng Redis sang JSON 328 Hình 208 Mã nguồn quy trình chuyển đổi Schema từ MongoDB sang JSON 332 Hình 209 Mã nguồn quy trình chuyển đổi dữ liệu từ MongoDB sang JSON 334 Hình 210 Mã nguồn quy trình chuyển đổi schema từ các tập tin ảnh sang JSON 335 Hình 211 Mã nguồn quy trình chuyển đổi dữ liệu từ các tập tin ảnh sang JSON 337 Hình 212 Mã nguồn quá trình tiền xử lý dữ liệu CSV 337
Trang 33MỤC LỤC BẢNG BIỂU
Bảng 1 Định nghĩa dữ liệu mở của một số tổ chức 18 Bảng 2 Điểm khác biệt giữa mô hình cơ sở dữ liệu quan hệ và mô hình cơ sở dữ liệu NoSQL 52 Bảng 3 Sự khác nhau về lý thuyết của các dạng cơ sở dữ liệu 89 Bảng 4 So sánh dung lượng lưu trữ của các dạng dữ liệu thông dụng của 20 tập dữ liệu khác nhau 94 Bảng 5 So sánh dung lượng lưu trữ của hai định dạng BSON và JSON của cùng một tập dữ liệu với số lượng mẫu dữ liệu khác nhau 95 Bảng 6 Ưu - Nhược điểm của ba định dạng JSON, XML và BSON 97 Bảng 7 Thống nhất định nghĩa các từ khóa schema trong hệ thống 137 Bảng 8 Giải thích usecase trong CKAN 151 Bảng 9 Phương pháp chuyển đổi schema và tính năng từ MySQL sang MongoDB 156 Bảng 10 Các thuật ngữ tương đương trong MySQL và MongoDB 157 Bảng 11 Ý nghĩa các trong trong dữ liệu trả về của API lấy danh sách dataset hiện có 174 Bảng 12 Thông số của API lấy thông tin của một dataset 174 Bảng 13 Ý nghĩa các trường dữ liệu trong dữ liệu trả về của API lấy thông tin của một dataset 175 Bảng 14 Ý nghĩa trường dữ liệu của trường resources trong dữ liệu trả về của API lấy thông tin của một dataset 176 Bảng 15 Ý nghĩa các trường dữ liệu trong dữ liệu trả về của API lấy danh sách các bộ chuyển đổi hiện có của hệ thống 177
Trang 34CÁC TỪ VIẾT TẮT
Trang 351 LỜI CÁM ƠN
Trong quá trình thực hiện đề tài nghiên cứu khoa học này, nhóm đề tài đã nhận được nhiều sự hỗ
trợ, tạo điều kiện giúp đỡ cũng như là quan tâm, động viên từ nhiều cơ quan, tổ chức và cá nhân
Trước hết, nhóm đề tài xin cảm ơn đến Sở Khoa học Công nghệ TP.HCM đã hỗ trợ kinh phí để
nhóm có thể thực hiện đề tài này Nhóm đề tài cũng xin gửi lời cảm ơn đến Đại học Quốc gia
TP.HCM và Đại học Bách Khoa- ĐHQG TP.HCM và các cá nhân, đồng nghiệp đã hỗ trợ, tạo điều
kiện và động viên các thành viên nhóm trong quá trình nghiên cứu cũng như hoàn thành đề tài
Nhóm đề tài cũng mong nhận được những góp ý chân thành từ các cơ quan, tổ chức, cá nhân và
đồng nghiệp để khắc phục những thiếu sót có thể có trong đề tài
Đại diện nhóm đề tài PGS.TS Đặng Trần Khánh
Trang 362 TÓM TẮT
Trong báo cáo này, nhóm nghiên cứu trình bày những nội dung đã tìm hiểu, các kiến thức về
các nguồn dữ liệu liên quan tới ứng dụng thành phố thông minh, các đặc tính của chúng và
các ứng dụng liên quan tới thành phố thông minh hiện có, các mô hình dữ liệu và định dạng
dữ liệu Ngoài ra, nhóm cũng tìm hiểu các công trình nghiên cứu liên quan trong lĩnh vực
tích hợp dữ liệu, chuyển đổi dữ liệu, các nghiên cứu đã thực hiện một số biện pháp để thực
hiện quy trình chuyển đổi dữ liệu Nhóm cũng đã tìm hiểu phân tích các điểm mạnh, điểm
yếu của các nghiên cứu đã kể trên Từ những kiến thức thu được về đặc trưng của các nguồn
dữ liệu và các kiến thức liên quan trong lĩnh vực chuyển đổi dữ liệu, nhóm đã đề xuất
framework cũng như các bước thực hiện của quy trình chuyển đổi dữ liệu cho hệ thống tích
hợp dữ liệu Cuối cùng, nhóm thực hiện thiết kế, phát triển framework chuyển đổi dữ liệu và
tiến hành đánh giá framework này Tóm lại, trong khoảng thời gian thực hiện đề tài, nhóm
đã hoàn thành những nội dung cụ thể như đã đăng ký trong thuyết minh như sau:
• Nội dung 1: Nghiên cứu các công trình, kỹ thuật, và công nghệ liên quan
• Nội dung 2: Nghiên cứu chuẩn dữ liệu
• Nội dung 3: Đề xuất phương pháp chuyển đổi dữ liệu
• Nội dung 4: Đề xuất kiến trúc hệ thống chuyển đổi dữ liệu
• Nội dung 5: Xây dựng thư viện khả mở cho hệ thống chuyển đổi dữ liệu đã đề xuất
• Nội dung 6: Phát triển hệ thống chuyển đổi dữ liệu thử nghiệm
• Nội dung 7: Thử nghiệm và đánh giá hệ thống
• Nội dung 8: Viết các bài báo khoa học và báo cáo tổng kết
Ngoài ra, nhóm cũng đã thực hiện vượt tiến độ các công việc đã đăng ký trong hầu hết các
hạng mục công việc như đào tạo (vượt số lượng ThS đã đào tạo, NCS tiến sỹ vừa tham
gia nghiên cứu, viết bài đồng thời cũng đã hoàn thành LATS), sản phẩm công bố khoa
học (vượt trội số lượng công bố so với đăng ký: 18/6), và sản phẩm công nghệ (hiện thực
chuyển đổi thêm một số định dạng dữ liệu không đăng ký trong thuyết minh, phát triển
một ứng dụng cung cấp thông tin về COVID-19 trên hệ thống framework quản lý dữ
liệu mở với CKAN của nhóm, phát triển chức năng tự động tìm kiếm giữa các framework
quản lý dữ liệu mở dựa trên định dạng siêu dữ liệu của nhóm đề xuất, …)
Trang 37Chương 1 Giới thiệu
Nguồn dữ liệu cho các ứng dụng thành phố thông minh
Thành phố thông minh Thành phố thông minh (Smart City) có thể được hiểu là một thành phố sử dụng nhiều thiết bị điện tử cảm ứng Internet vạn vật (IoT – Internet of things) để thu thập dữ liệu Các dữ liệu, thông tin thu thập được sẽ được phân tích nhằm đưa ra các chiến lược, các hành động cụ thể để quản lý tài nguyên, tài sản, dịch vụ một cách hiệu quả [1] Dữ liệu thu thập được bao gồm dữ liệu từ công dân, từ các hệ thống thông tin, từ thiết bị, từ các tòa nhà, cao ốc và các tài sản khác có thể được thu thập và phân tích để giám sát, quản
lý các hệ thống giao thông – vận tải, các dịch vụ tiện ích công cộng như hệ thống cấp – thoát nước, hệ thống lưới điện, dịch vụ thu gom rác thải, hệ thống bệnh viện, trường học và các dịch vụ tiện ích khác [2]
Một ứng dụng cụ thể của thành phố thông minh là quản lý hệ thống đèn giao thông, đèn đường bằng cảm biến để giảm thiểu mức độ tiêu thụ năng lượng cũng như làm tăng hiệu quả trong các khâu quản lý, theo dõi và kiểm tra hệ thống đèn Một vài ứng dụng khác của thành phố thông minh có thể được thực hiện là theo dõi hệ thống cấp nước bằng các thiết bị cảm biến để phát hiện rò rỉ, phục vụ cho công tác chống thất thoát nước; kiểm tra, giám sát mức độ ô nhiễm của không khí để có thể cảnh báo kịp thời cho người dân, đặc biệt là những người có sức khỏe đường hô hấp kém
Nguồn dữ liệu cho các ứng dụng thành phố thông minh Nguồn dữ liệu của thành phố thông minh, như đã liệt kê ở trên, có thể bao gồm thông tin từ các nguồn sau:
• Con người: Dữ liệu vị trí của con người, dữ liệu về sức khỏe, giáo dục, các dữ liệu trên đều mang tính riêng tư cao, cần phải có sự đồng ý của người dân và phải trải qua các bước xử lý, ẩn danh dữ liệu để có thể sử dụng
• Thiết bị: Dữ liệu được thu thập từ các cảm biến, camera, các thiết bị thu âm, các thiết bị điện tử khác Dữ liệu được thu thập có thể là dữ liệu về độ ẩm hiện tại, dữ liệu về nhiệt
độ, dữ liệu hình ảnh giao thông trực tiếp,…
• Tòa nhà, cao ốc, các tài sản khác: Dữ liệu về vị trí, tình trạng hiện tại, lịch bảo trì, bảo dưỡng, thông tin về các dịch vụ tiện ích của toà nhà, thông tin về ban quản lý, ban bảo trì, …
• Dữ liệu trên các hệ thống thông tin: Dữ liệu của các dịch vụ công cộng; dữ liệu của các
sở ban ngành trong thành phố như sở giao thông, sở giáo dục; dữ liệu dịch vụ y tế, bảo hiểm y tế, bảo hiểm xã hội, dữ liệu giáo dục,…
Có thể thấy rằng, dữ liệu của thành phố thông minh vô cùng đa dạng, phong phú về nguồn gốc cũng như nội dung, lĩnh vực của dữ liệu Không chỉ vậy, các dữ liệu cùng
Trang 38một lĩnh vực vẫn có những điểm khác biệt do khác nguồn gốc: các ban ngành, đoàn thể khác nhau; các công ty, tổ chức khác nhau; nhãn hiệu, kiểu mẫu thiết bị khác nhau,… Một vài đặc tính của nguồn dữ liệu thành phố thông minh:
• Tính chính xác (Precision): Dữ liệu thu thập được sẽ có độ chính xác khác nhau Sự khác biệt này có nhiều nguyên nhân khác nhau, có thể là do quy định về cách lưu trữ của tổ chức, đoàn thể, thiết bị nhưng mà chủ yếu là do sự chênh lệch về chất lượng của bản thân các thiết bị đo
• Tính đúng (Accuracy): Do một vài sự cố, một vài yếu tố bên ngoài ảnh hưởng, như môi trường gây nhiễu, hỏng hóc thiết bị mà dữ liệu đạt được không chính xác
• Độ chi tiết (Granularity): Các tổ chức, thiết bị khác nhau có thể có mức độ chi tiết của các thông tin khác nhau Sự khác biệt này có thể có thể không đáng kể, có thể bỏ qua nhưng cũng có trường hợp lại có thể gây ra hậu quả nghiêm trọng (Với các ứng dụng đòi hỏi độ chính xác cao thì độ chi tiết của dữ liệu phải đạt một ngưỡng nhất định mới có thể
sử dụng, nếu sử dụng các dữ liệu không đạt ngưỡng về độ chi tiết sẽ gây ra sai lệch.)
• Khối lượng (Volume) và tốc độ dữ liệu (Velocity): Dữ liệu của một thành phố hiển nhiên
sẽ phải có khối lượng lớn và tốc độ gia tăng dữ liệu là rất lớn (Càng nhiều thiết bị, càng nhiều tổ chức, cá nhân cung cấp thông tin thì số lượng dữ liệu sinh ra sẽ ngày càng nhiều)
• Tính đa dạng (Variety): Dữ liệu phong phú về nguồn gốc, đa dạng về nội dung và thuộc nhiều kiểu dữ liệu khác nhau
Dữ liệu mở 1.1.3.1 Giới thiệu dữ liệu mở
Định nghĩa về dữ liệu mở là khác nhau giữa các tổ chức Bảng 1 trình bày một số định nghĩa về dữ liệu mở của các tổ chức và các nhà nghiên cứu trên toàn cầu Các định nghĩa này được sử dụng bởi các nhà cung cấp dữ liệu mở, các nhà nghiên cứu và người ủng hộ dữ liệu mở
Open Data Foundation Dữ liệu mở là dữ liệu có thể được sử
dụng, tái sử dụng và phân phối lại một cách tự do bởi bất kỳ ai [3]
có thể truy cập, sử dụng và chia sẻ [4]
công khai, nó được cấu trúc theo cách cho phép dữ liệu được người dùng cuối
có thể khám phá và sử dụng đầy đủ [5]
Bảng 1 Định nghĩa dữ liệu mở của một số tổ chức
Trang 39Dữ liệu mở có tác động tích cực đến mọi mặt của đời sống, kinh tế, xã hội Một số tác động tích cực được nghiên cứu và tổng hợp trong bài nghiên cứu "The Economic Impact of Open Data: Opportunities for value creation in Europe” [6] bởi Esther Huyer
và Laura van Knippenberg:
• Dữ liệu mở giúp cứu lấy nhiều mạng sống hơn: Visualize No Malaria một công cụ sử dụng sử dụng dữ liệu mở và phân tích vị trí đã góp phần đẩy lùi bệnh sốt rét, họ lập ra bản đồ về những nơi chịu ảnh hưởng của bệnh sốt rét từ đó thay đổi cách nhìn nhận của địa phương về cách phân bổ những nhu yếu phẩm và lực lượng y tế phù hợp với từng địa bàn Dữ liệu mở giúp cải thiện các dịch vụ khẩn cấp bằng cách tìm kiếm những địa điểm xảy ra tai nạn một cách nhanh chóng, từ đó cứu sống nhiều mạng sống hơn thông qua dữ liệu mở về các số điện thoại khẩn cấp về y tế, dữ liệu mở về bản đồ và giao thông thời gian thực
• Dữ liệu mở giúp tiết kiệm thời gian: Dữ liệu về phương tiện giao thông công cộng bao gồm các tuyến đường, lịch trình, có thể được chia sẻ để tạo nên dữ liệu mở Dữ liệu này có thể giúp cho hàng khách có thể đưa ra quyết định trong việc sắp xếp lịch trình giảm thời gian chờ đợi khi tham gia giao thông bằng các phương tiện công cộng Ngoài
ra dữ liệu mở về mật độ giao thông giúp cho việc điều tiết giao thông được tốt hơn
• Dữ liệu mở bảo vệ môi trường: Nhờ dữ liệu mở về môi trường như lượng CO2 toàn cầu,
dữ liệu về ô nhiễm môi trường, những bản thống kê, báo cáo về môi trường được tạo
ra nhằm phổ cập kiến thức về tác động của con người về môi trường Từ đó đưa ra những cảnh báo và đề nghị cho mỗi cá nhân đối với môi trường sống
• Dữ liệu mở giúp giảm bớt chi phí: từ những ví dụ trên có thể suy ra được rằng dữ liệu giúp giảm chi phí chăm sóc sức khỏe và các dịch vụ khẩn cấp, giảm chi phí vì thời gian
bỏ ra khi tham gia giao thông được rút ngắn lại và giảm chi phí vì các hoạt động khắc phục hậu quả của việc ô nhiễm môi trường và biến đổi khí hậu
1.1.3.2 Hệ thống dữ liệu mở
Dữ liệu ngày càng đóng vai trò quan trọng cho sự phát triển kinh tế và tạo ra những tri thức mới cho nhân loại Cùng với sự phát triển của lĩnh vực phân tích dữ liệu và trí thông minh nhân tạo (AI) đã tạo ra xu hướng chia sẻ dữ liệu tại khắp các quốc gia trên thế giới, một mô hình được tạo ra từ xu hướng trên đó chính là chính phủ mở, điều này
đã tạo ra nhiều cổng dữ liệu mở và cơ sở hạ tầng hay còn được gọi chung là hệ thống
dữ liệu mở nhằm tạo ra một cách thức truy cập dữ liệu một cách tập trung và nhằm gia tăng sự tham gia và hợp tác của công chúng
Hệ thống dữ liệu mở là một hệ thống cho phép xuất bản, phân loại, tìm kiếm và trực quan dữ liệu, người dùng có thể thao tác với hệ thống thông qua cổng dữ liệu mở Có rất nhiều hiện thực của hệ thống dữ liệu mở có thể kể đến như:
- The Comprehensive Knowledge Archive Network(CKAN) là một hệ thống quản lý
dữ liệu - Data Management System (DMS) mã nguồn mở cho phép các tổ chức có nhu
Trang 40cầu chia sẻ dữ liệu xuất bản, chia sẻ dữ liệu và tìm kiếm, trực quan dữ liệu cho những người dùng muốn tiếp cận dữ liệu, CKAN được sử dụng nhiều ở các tổ chức chính quyền địa phương và quốc gia, doanh nghiệp và các tổ chức khác CKAN lưu trữ dữ liệu trong các tệp hệ thống (File System) và kho dữ liệu (DataStore), lưu trữ siêu dữ liệu (metadata) của dữ liệu trong cơ sở dữ liệu, hiện thực những phương thức cho việc tiếp cận dữ liệu và người dùng có thể lấy được dữ liệu và metadata thông qua giao diện web, ngoài ra CKAN còn cung cấp API cho các ứng dụng và dịch bên thứ ba có thể tích hợp CKAN và vì thế sử dụng được các tính năng của CKAN
- The Drupal Knowledge Archive Network (DKAN) là một Data Management System (DMS) mã nguồn mở với một bộ đầy đủ các tính năng biên mục, xuất bản, tìm kiếm và trực quan hóa cho phép các tổ chức dễ dàng chia sẻ dữ liệu với công chúng DKAN có nhân là CKAN và sự khác biệt so với CKAN nằm ở việc DKAN hỗ trợ khả năng tạo danh mục dữ liệu thông qua việc sử dụng thêm Content management system (CMS)
- The Open Government Platform (OGPL) cũng là một Data Management System (DMS) mã nguồn mở có nhân là CKAN được thực hiện dưới sự hợp tác của Ấn Độ và Hoa Kỳ nhằm tạo ra một nền tảng nguồn mở để thúc đẩy tính minh bạch, trách nhiệm giải trình của chính phủ và sự tham gia của công dân lớn hơn bằng cách cung cấp thêm
dữ liệu của chính phủ, tài liệu, công cụ và quy trình
- Một số DMS khác như Junar, Socrata cũng là những hệ thống mạnh mẽ cho Open Data
Ở trên đã liệt kê một vài cổng dữ liệu mở phổ biến nhất hiện nay Ngoài các cổng dữ liệu trên còn tồn tại các cổng dữ liệu mở khác Tuy số lượng các cổng dữ liệu mở là nhiều, nhưng các hệ dữ liệu mở đều phải có các tính chất sau:
• Tính mở: Kiến trúc dữ liệu mở phải có khả năng cho phép người dùng các nhân, tổ chức truy xuất, tìm kiếm dữ liệu thông qua các API Hơn thế nữa, tính mở của hệ thống còn được hiểu như là các thành phần của hệ thống, từ kiến trúc hệ thống, cơ sở dữ liệu đến
hệ điều hành, cơ sở hạ tầng mạng đều phải tuân theo các tiêu chuẩn được đặt ra của tổ chức như chuẩn EIF (European Interoperability Framework) [7] của liên minh Châu Âu – tiêu chuẩn các thành viên của liên minh phải tuân theo trong quá trình xây dựng kiến trúc dữ liệu mở, hay chuẩn DCAT (Data catalogue Vocabulary) – chuẩn cung cấp, phổ biến dữ liệu của tổ chức W3C [8]
• Tính khả mở: Trong quá trình thiết kế hệ thống dữ liệu mở cần phải đặc biệt chú ý đến khả năng mở rộng của kiến trúc Các hệ thống dữ liệu mở sẽ có tốc độ gia tăng khối lượng
dữ liệu nhanh chóng, thậm chí theo cấp số nhân và được tạo ra tại nhiều thời điểm, từ những nguồn, tổ chức cũng như các cá nhân khác nhau Thậm chí cũng có thể tồn tại nhiều phiên bản khác nhau của cùng một dữ liệu Vì vậy, kiến trúc dữ liệu mở phải đáp ứng được tính khả mở, cho phép hệ thống cả khả năng mở rộng về cả phần cứng lẫn phần mềm, theo cả chiều ngang lẫn chiều dọc