TÓM TẮT KHÓA LUẬNHiện nay, các lĩnh vực về thị giác máy tính nói riêng và trí tuệ nhân tạo nói chungđang phát triển với một tốc độ vũ bão.. Hiện nay, thị trường về lĩnh vực thị giác máy
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA HE THONG THONG TIN
LE VAN NHAT NGUYEN HUU TRUONG
KHOA LUAN TOT NGHIEP
Building Ecommerce system to sell Computer Vision solution
KY SU NGANH HE THONG THONG TIN
TP HO CHi MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THÓNG THÔNG TIN
LE VĂN NHAT - 17520848
NGUYEN HỮU TRUONG - 17521186
KHÓA LUẬN TÓT NGHIỆP
XÂY DỰNG HỆ THÓNG THƯƠNG MẠI ĐIỆN TỬ KINH
DOANH CÁC GIẢI PHÁP THỊ GIÁC MÁY TÍNH
Building Ecommerce system to sell Computer Vision solution
KY SU NGANH HE THONG THONG TIN
GIANG VIEN HUONG DAN
Th S TRINH TRONG TIN
TP HO CHI MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số
TigầYy của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn Khoa Hệ thống Thông tin
chuyên ngành Thương mại điện tử, trường đại học Công nghệ Thông tin —- ĐHQG
TP.HCM đã tạo điều kiện cho em thực hiện đề tài tốt nghiệp này
Tiếp đến, chúng em xin được bày tỏ lòng biết ơn sâu sắc tới các thầy côtrường Đại học Công nghệ Thông tin nói chung và khoa Hệ thống Thông tin nóiriêng đã tận tình truyền đạt kiến thức trong những năm em học tập Với vốn kiếnthức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình nghiêncứu khóa luận mà nó còn là hành trang quý báu để em áp dụng vào thực tế mộtcách vững chắc và tự tin
Chúng em xin được gửi lời cảm ơn sâu sắc và chân thành nhất tới thầy Th.STrình Trọng Tín, thầy đã rất nhiệt tình chỉ bảo, định hướng tư duy và hướng dẫn
cách làm việc khoa học cho chúng em trong suốt quá trình thực hiện khóa luận Chúng em xin chân thành cảm ơn gia đình, bạn bè, và tập thể lớp TMDT2017 đã
luôn ở bên cạnh động viên, kích lệ tinh than và đóng góp nhiều ý kiến cho chúng
em trong quá trình hoàn thành khóa luận này.
Lời cuối cùng, mặc dù đã có gắng hoàn thành khóa luận với tất cả sự nỗ
lực của bản thân nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Chúng
em kính mong nhận được nhiều đóng góp ý kiến và chỉ bảo của quý Thầy Cô và
các bạn Chúng em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, tháng 07 năm 2021
Nhóm sinh viên thực hiện
Lê Văn Nhật Nguyễn Hữu Trường
Trang 5MỤC LỤC
Chương 1 TONG QUAN ĐÈ TÀI 252 SE‡EESEEEEEEEEEEEEEEerkerkerkrree 15
LL Lý đo chọn đề tài c- s21 E1 E1 E12 1011211211211 1111111111111 c0 151.2 Đối tượng nghiên cứu - ¿+ ++2+++Ext2EEEEEESEEESEEEEEEEEEErkrrrkrrkrsree 16
IESSS 010i 16
1.4 Phạm vi để tài cccrrttthhht HH rêu 17
1.5 Phương pháp thực hiỆn - 5 c3 3211321131311 E11 errkrre 17
Chương2 CƠ SỞ LÝ THUYÊT 2 2¿©+©+©+++Ex++EE+zE+vrxe+rxrrrxees 18
2.1 Khao ái cố 18
2.1.1 sii0ir 0017 182.1.2 Các mô hình dang được triển khai - 5c ©5z+cs+cs+zxecse2 19
2.1.3 Thị trường Việt Nam - G222 3221121121111 EEEErrrkrre 22
2.2 Tổng quan các thuật toán thị giác máy tính 2 2 2 s+szs+zszxee 23
2.2.1 Phân lớp hình anh (Image classification) «+ s-«<++<<++<+ 23
2.2.1.1 Thuật toán mạng tích hop chập (CNN) -<<<<cc<s<e2 24
2.2.2 Phát hiện, nhận diện đối tượng (Object detection) - 25
2.4 Tổng quan về Node]S :-©52 e+S++EE‡EE2EE2EEEEE211221271 7121221121 29
2.4.1 _ Khái niệm - Ăn TH ng ng re 29
Trang 62.4.2 Các đặc tính của Node]S - - 5c 11122111121 1111511115112 29
2.4.3 Ứng dụng của Nodel]S -¿ 5¿©c+c2cccxterkrsrkerrrerkeerxee 292.4.4 Ưu nhược điểm của NodeJ§ - -cccccccxtirerrtrrrrrtrrerrkee 302.5 Kiến trúc MicrOSerViCes - +52 E2 EEEE21211221271 71211211 1c 30
2.5.1 Kiến trúc monolithic -c-cc+ccxetrrrkerrrrrkerrrrirrrrrkes 302.5.2 Kiến trúc MicroServices ccxccctccerkerkerkrrrerrerkrrvee 31
2.5.3 MG DIN oe eceseceecneesceeeseeseeeseesceecsesecsecseesceesaceeeesaeeeseesaeeeeaes 32
2.5.4 Ưu điểm và nhược điểm của kiến trúc MicroServices: - 32
2.6 Hệ quản tri cơ sở dit liệu Mongol)B cccscc + vsvsssersrserere 33
2.6.1 Tìm hiểu về NoSQL -¿- 2-5 k‡EE‡EEEEEEEEEEEEEEEEEkerkerkeree 332.6.2 Tống quan về MongoDB - + x+k+Ek+E+E+E£kerkerkerxereeree 332.6.3 Một số câu lệnh cơ bản trên MongolDB ‹ -<<+<++ex++ 342.6.4 Ưu điểm và nhược điểm của MongoDB - + 5 s+cs5s2 36
2.6.5 So sánh MySQL và MongoDB - cccc se sscrsesererseres 37
2.7 Công nghệ Web với React]S - c S SH HH HH gi, 38
2.7.1 React]S L HH HH HH Hết 38
2.7.2 Các thành phan chính -2-©2¿-+¿22++2+++£x+2Exzrxrrxeerxeerxee 38
2.7.3 Nguyên lý hoạt động -cS Ăn SnSS HH rệt 40 2.7.4 So sánh với các công nghệ khác (Angular, Vue) . 41
2.7.5 Ưu điểm và nhược điểm v ccceccccceccccssccesssscscssesesessesesessescstsussesesveseeeeees 41
Chương 3 | PHAN TÍCH VA THIET HE THÓNG - 2 5z: 43
3.1 Phân tích yêu cầu hệ thống ¿2©5¿+++2E++EE++EE+2Extzxrerkesrxrrrrees 43
3.1.1 Mô hình kinh doanh 6 5526k +sE+Essekeersreerrsreerkre 43
3.1.2 _ Phương diện khách hàng - 5 Ă + re 45
Trang 73.1.3 Phương diện doanh nghiỆp - 5 5 Ăn re 46
3.2 Phân tích thiết kế -++2c+ktttEEktttEErtttrirttrrirrrrrirrriiirrirriio 47
3.2.1 Mô hình Use CaSG Gv HH Hệ 47 3.2.2 Danh sách các ACOT .- Gv ệt 47 3.2.3 MÔ tả USE CAS€ HH HH ng HH ng Hết 48
3.2.4 Sơ đồ hoạt động -©cc Set 211211212121 1E cxe 49
3.2.5 Đặc tả luồng 2.22 2E E2 22121121121 57
3.3 Thiết kế dữ liệu -ccc-+ccttttttttrhtHH Hee 68
3.3.1 Cơ sở dữ liệu trên MongolDB «chinh gen 68
3.3.2 Sơ đồ hóa cơ sở dữ liệu -cccccccctrirrrrirrrrrirrrrrirrrrriei 743.3.3 Hệ thống triển khai 2c ESE+EE+EEEEEEEerEerkerkerkrree 75Chương 4 PHÁT TRIEN UNG DỤNG -¿-¿+c++2+++zx++zxsrseee 79
4.1 Các giai đoạn phát triển ứng dụng - ¿2 + x+++E++E+Eerkerxerxerxrree 79
4.2 Quy trình hoạt động của khách hàng - «+ £+x£+v£eseeseesessers 83
4.2.1 Trang đăng KÍ SẶ Ăn HH HH gi, 83 4.2.2 Trang đăng nhập .- - c1 S39 1 1 1x ri 84
4.2.3 Trang bảng điều khiển ¿©+©++2++2zxczxrerxesrxrrrrees 84
4.2.4 Trang gói cước — thanh tOán - - + 2s St sereeerrserrrrrerrre 85 4.2.5 Trang hoạt động .L tt SS HT HH HH ng ry 88
4.2.6 Trang code mẫu - ¿252 +++S++E+EE+E£EEEEEEEEEEEEerkrrerkrrerkee 89
4.2.7 Tramg hóa đơn TQ QnntSnvS HH TH HH ng ng re 90 4.2.8 Trang tài khoản ch HT TH HH HH ng 90 4.2.9 Trang chăm sóc khách hảng - - 5 kg eey 91 4.3 Quy trình hoạt động của quản If eee ceseeseeseeeteesseeseeeseeeseeseeeeeesesseeeaees 92
Trang 84.3.1 _ Trang quản lí API c1 HT, 92
4.3.2 Trang quản li 201 CƯỚC - - G5 HH ng ng 92 4.3.3 Trang quản lí người ùng + s- +13 kE* vsikeseeeeserrre 93 4.3.4 Trang quản lí lịch sử g1a0 dỊCH - 5c ret 94 4.3.5 Trang quản lí hóa đơn G332 re 95 4.3.6 _ Trang quản lí hình thức thanh toán - 55555 sex 95
4.3.7 Trang quản lí doanh thu - - 5< + 1E ngư 96
A.A, Kiểm thử ứng dụng - - + 5E+S<+EE£E2EEEEEEEEEE21 2111121121211 xxx 974.5 Kết quả dat được -2¿©2+c22+22x 2212212112211 re 1004.6 Hạn chế Z7 A 101
Chương 5 KÉT LUẬN VÀ HƯỚNG PHÁT TRIEN - 5-52: 102
5.1 Kếtluận ge a <@ / 102
5.2 Kết quả đạt được ccc5c- c2 2E E1521121121121111121121111 11x errk 102
5.3 Hướng phat triỀn ¿-©2¿+2++22++2EE2EE2EE2E1E211271 22121121 Ekrree 103
Trang 9DANH MỤC HÌNH
Hình 1.1 Bang thống kê giáo dục đại học năm 2018 -2010 2- 5 s52 16
Hình 2.1 Biéu đồ quy mơ thị trường thị giác máy tính Châu Á - - 18
Hình 2.2 Top những cơng ty về lĩnh vực thị giác máy tính theo Rakuten RapidAPI — 19
Hình 2.3 Giao diện quản lí của Zalo ẠÌ 5 5 + vn ng ng rưkt 22 Hình 2.4 Giao diện quản lí đăng kí gĩi cước của FPT AI -x<<x<<+ 23 Hình 2.5 Mối liên hệ giữa các tác vụ trong thị giác máy tính - + 23
Hình 2.6 Cau trúc mạng CNN ¿- ¿+ 2+SE+E2E£EEEEEEEEEE12E122121121121 1111211 xe 25 Hình 2.7 Mơ ta xu hướng của ngơn ngữ Python - - St sesee 26 Hình 2.8 Mơ tả kiến trúc monolithic -c¿-c:+22+++cc+vervvveerrrverrrrrrrrrrrrrrre 31 Hình 2.9 Mơ tả mơ hình MICTOSTVIC€S - Q.0 2112311911191 2 1 9 ng ng 32 Hình 2.10 Cau trúc một document trong MONgODB -¿- ¿s22 34 Hình 2.11 Cây thư mục của dự án React JS 5 - + c S2 irrrirerrrey 39 Hình 2.12 Nguyên lí hoạt động của Reacts S5 3 3+3 seirsererrrsrrrs 40 Hình 3.1 Business model canvas về mơ hình kinh doanh -2- ¿55+ 45 Hình 3.2 Sơ đồ Use case của ứng dụng - 2: 2¿©2++2+++Ex+2EEt2EEtrkterxrrrxerrecree 41 Hình 3.3 Sơ đồ hoạt động của UC đăng ký 2-2 22 2+E£+EE+EEerEezEkerxerrerer 50 Hình 3.4 Sơ đồ hoạt động của UC đăng nhập 2-2-5222 ++£E+zEzEzzxerxrrez 51 Hình 3.5 Sơ đồ hoạt động của UC03 — Quên mật khẩu, đặt lại mật khẩu 52
Hình 3.6 Sơ đồ hoạt động của UC04 — Quản lí tài khoản 5-5-5 ++5<++s+ 53 Hình 3.7 Sơ đồ hoạt động của UCOS — Thay đồi mật khẩu - 2-52 54 Hình 3.8 Sơ đồ hoạt động của UC06 — Xem thơng tin sử dung API 54
Hình 3.9 Sơ đồ hoạt động của C08 — Xem hĩa đơn 2-5555 + <++x+sssx 55 Hình 3.10 Sơ đồ hoạt động của UC08 — Xem thơng tin gĩi CUBE - 56
Hình 3.11 Sơ đồ hoạt động của UC09 — Gửi thơng tin hỗ trợ - +: 56
Hình 3.12 Sơ đồ hoạt động của UC10 — Thanh tốn hĩa đơn - 57
Hình 3.13 Sơ đồ mơ tả cấu trúc cơ sở dữ liệu của ứng dụng -: - 75
Trang 10Hình 3.14 Sơ đồ tổng quát của hệ thống VisionX( -:2-©5¿©cxc2cxscxecrse 76Hình 3.15 Hệ thống phía người dùng 2-2 2£ ©E£+E+2EE2EEtEEterxerrxrrrerree 77Hình 3.16 Hệ thống phía quản trị viên ¿- ¿2 ©++++2£x2E£+£x++rxezrxrrxecrxe 78
Hình 4.1 Trang đăng kí người dùng TỚI - 5 5+ SE eksrereererseeske 83 Hình 4.2 Trang đăng nhập tài khoản - c2 32333323 EEErsrrrrrerrrrrkrrre 84
Hình 4.3 Trang bảng điều khién với thống kê lưu lượng sử dụng 85Hình 4.4 Trang bảng điều khiến với thống kê số tiền đã chi theo thang 85
Hình 4.5 Trang gói cước danh sách các gỐI + rikt 86 Hình 4.6 Lựa chọn phương thức thanh toán 5 52+ *+vseereereersrerrs 87
Hình 4.7 Trang xác nhận thông tin thanh toán 5 «+ ssseeesrree 87 Hình 4.8 Lựa chon hình thức thanh toán của VNPAYY 775cc 87
Hình 4.9 Thanh toán bằng hình thức chuyên khoản 2- 2 2-5255 s2£s+£+2 5+2 88Hình 4.10 Thanh toán băng hình thức chuyên khoản -. -2 5¿5z©5+2=5+ 88Hình 4.11 Trang hoạt động hiển thị theo thời gian sử dụng .: - 89
Hình 4.12 Trang code mau hướng dan sử dUNg c.ccccesesessssessssessesessesessesesseeseseesees 89
Hình 4.13 Trang hóa don - 2 3221121132111 11 91111111 111111 111 11T kg ng ng ng 90
Hình 4.14 Trang tài khoản - - - 112112111311 91H TH HH ng 91
Hình 4.15 Trang chăm sóc khách hàng - ¿5< +3 + 1E + E+EESeeereeeeeeerereere 91 Hình 4.16 Trang quản lí danh sách API ow ee eceeeceseeseeseeseeeeseeeseseeeesesceseeaeeas 92 Hình 4.17 Trang quản li BÓI CƯỚC - - 5 +31 9 E1 ng Hưng ng rưệt 93 Hình 4.18 Trang quản lí danh sách 261 CƯỚC 5 32+ E+*EEseereereerererre 94 Hình 4.19 Trang quản lí lịch sử giao dỊCH - - < 3+ 1E + +ESereeeeereerereere 94 Hình 4.20 Trang quản lí hóa Ơï -G- G6 + E111 910193 911 9119111 ng gi ky 95 Hình 4.21 Trang quản lí phương thức thanh toán 5 «<< £+£<sc+sessesses 96 Hình 4.22 Trang quản lí doanh thu 5 2 2< 19211211 21 E2 E3 tr, 96
Trang 11DANH MỤC BANG
Bảng 2.1 Một số câu lệnh giữa MySql và MongoDB 2-5 55s s+cszs+2 35
Bang 2.2 Bang so sánh giữa MySQL và MongoDB -cc«cc«csecsseeserske 38
Bảng 2.3 Bảng so sánh React - Angular - Vue 55c Se set 41
Bang 3.1 Mô tả các yêu cầu của khách hàng - ¿22 x+x+zx++z++rxerxezez 46Bảng 3.2 Mô tả các yêu cầu của doanh nghiỆp -2 2¿- 5c ©£©xz+x2zx+zxeerxz 47
Bang 3.3 Danh sách các Actor của hệ thống - 2-2 2+ 2+E£+EE+£EezEzEzrxerxezex 48
Bang 3.4 Danh sách các User case của hệ thống - 2 2+2 +++x+zx+zs+zszsez 49Bang 3.5 Mô tả luồng đăng ký -2 ©5251 2E E2 221E21711211221 7171121111 58Bảng 3.6 Mô tả luồng đăng nhập -2- 2 52222 2EE22EE2EE22EE2EEEEEESEErrrkrrrrsrke 59Bang 3.7 Mô tả luồng quên mật khẩu, đặt lại mật khẩu - ¿55+ 60Bảng 3.8 Mô tả luồng quản lí tài khoản -¿ 2¿ 5£ ©5£2S22£x2E£+£x+zrxezrxerxesree 61
Bang 3.9 Mô tả luồng xem lịch sử sử dụng gói CUGC -:¿+c+>s++s+ 62
Bang 3.10 Mô tả luồng xem hóa đơn 2 2-5 S99E£EE£EE+EE£EE£EEZEEEerEerkerxrrerree 62Bang 3.11 Mô tả luồng xem gói dịch vụ - ¿2-55 E+EE+EE+E£+EzE£EerEerkerxersrree 63Bang 3.12 Mô tả luồng gửi thông tin hỗ trỢ 2-2 5©5£2£+£E+£EczEzEzrxerxezes 63Bảng 3.13 Mô tả luồng thanh toán -2- 2 5¿22+£2EE+EE£+EE£2EE£EEtEEeerxzrxerreeree 64Bang 3.14 Mô tả luồng quản lí gÓi CƯỚC - 5£ 2 SE+SE+EE£E£2E2E£EeEEerEerxersrree 65Bang 3.15 Mô tả luồng quản lí doanh thu - 2: 2 +52 £2££2££+E££Ee£Ee£xerxerszsez 66Bang 3.16 Mô tả luồng quản lí ALPI - 2 2 SE SE£EE£EE2EE£EE£EZEEEerEerkerxrrsrree 67Bang 3.17 Mô tả luồng quan lí người dùng o.o eeeceeeecec cess essessessessesseseesessessessesseaee 68Bảng 3.18 Mô tả chi tiết thông tin người dùng -2¿- 5: ©2+25z2cxcezxcrxesree 69Bảng 3.19 Mô tả chỉ tiết thông tin gói dịch VU -¿ -¿2s¿©cs+2szecxcsrxerxesree 69
Bang 3.17 Mô tả thông tin mã sử dụng øói(fOK€h)) -. -« «+ s+++sexsseeeeers 70
Bang 3.21 Mô tả thông tin chi tiẾt API 2-5: 5c E‡SE‡EE2EE2EE+EZEEEerEerkerxerkrree 70Bang 3.19 Mô tả chỉ tiết thông tin API của gói 2¿©22- + xccx2zs+zxerxcres 70Bang 3.20 Mô tả thông tin chi tiết sử dung token - 2-2 2s se£xe£xsrerszsez 71
Bảng 3.24 Mô tả tài liệu sử dung ALPÌ G5 1 21191119111 111 11H ng ng Hy 71
Bang 0201/5860 72
Trang 12Bảng 3.23 Mô tả chỉ tiết hóa đơn 2¿- 5:52 S222x2EE22E122122212112211221 21121 crkv 72
Bang 3.27 Mô tả phương thức thanh toán - - 5 + + sEeEseeesereeesessee 73
;Ÿ228)/L0ãr.8i10:150e 0 077 73
Bảng 3.29 Mô tả câu hỏi và trả ÏỒI - - 5 c5 31 9319911 1 vn ng ghng g g gưkp 74 Bang 3.30 M6 ta gia0 dich 0107 74 Bang 4.1 Bang mô ta các màn hình đặc trưng cua website quan li API cho người dùng
¬— 81
Bang 4.2 Bang mô tả các màn hình đặc trưng của website quản lí cho quản tri viên 83
Bảng 4.3 Giải thích về trang Đăng kí 2: 522522 2E 2EE2EE2EEE2EESEEErkrrkrsree 84
Bảng 4.4 Giải thích trang bảng điều khiển -2- 25s £+S£+E£+E££EerEerxerxersree 85
Bang 4.5 Giải thích trang gói cước - thanh toán - «+ +- «+ +++++eexseeseeers 86 Bang 4.6 Giải thích trang hoạt động - - 5 + kg rưkt 89 Bang 4.7 Giải thích trang hóa don 5 5 191g ng ng ng rưệt 90 Bảng 4.8 Giải thích trang hóa đơn c2 1323131191111 1EEEEkrrkrrrkrre 91 Bảng 4.9 Giải thích Trang hóa đơn - - c2 1322131331 E51EEEEEErrrrrkrrre 92
Bang 4.10 Giải thích trang quan lí APÌ < 13+ * + E+EESeekeseeeeeerersere 92
Bảng 4.11 Giải thích trang quan li ðÓI CƯỚC - 55 3+ ‡+*E+veeEeeeeeeeereeeers 93 Bang 4.12 Giải thích trang quản lí người dùng - 5 5s £sscssceseesesseesee 94 Bang 4.13 Giải thích trang quản lí lịch sử g1ao dịch « «<< <<s<+se+sesses 95 Bảng 4.14 Giải thích trang quản lí hóa đơn - 25 3c * + +tvseereeereerererrre 95 Bảng 4.15 Giải thích trang quan lí phương thức thanh toán : ++ + 96 Bảng 4.16 Giải thích trang quản lí phương thức thanh toán - «+<s« 97
Bảng 4.17 Bảng kiểm thử luồng xử lí phía người dùng .2- ¿555552 98Bảng 4.18 Bảng kiểm thử luồng xử lí phía quản lí -:-2 5¿-s+55s55++¿ 100
Trang 13DANH MỤC TỪ VIET TAT
Từ viết Nội dung
7 RDMS _ Relational Database Management System
8 VPS Virtual private server
Trang 14TÓM TẮT KHÓA LUẬN
Hiện nay, các lĩnh vực về thị giác máy tính nói riêng và trí tuệ nhân tạo nói chungđang phát triển với một tốc độ vũ bão Từ những thiết bị đơn giản như bóng đèn, điệnthoại cho tới những chiếc xe ô tô tự hành cũng được tích hợp những hệ thống thôngminh Việc tích hợp này sẽ góp phân tăng hiệu suất làm việc và trải nghiệm của người
dùng lên rât nhiêu.
Việc xây dựng một hệ thống API cung cấp những giải pháp về lĩnh vực thị giácmáy tính, trí tuệ nhân tạo sẽ góp phần giải quyết rất nhiều bài toàn cho các doanh
nghiệp hiện nay.
Qua quá trình nghiên cứu và tìm hiểu, nhóm đã xây dựng hệ thống được xây dựng
trên công nghệ MicroServices giúp chia nhỏ hệ thống thành những phần riêng biệt và
có thé hoạt động một cách độc lập mới nhau Những thuật toán sẽ được đóng góithành những API cùng với ngôn ngữ lập Python — ngôn ngữ lập trình hỗ trợ đầy đủ
và phù hợp cho lĩnh vực khoa học máy tính này Hệ thống NodeJS với kha năng phanhồi nhanh chóng đóng vai trỏ quan lí và phân bố việc sử dụng các thuật toán trên tới
người dùng Cùng với đó là một website quan lí cho phép người dùng có thé đăng ki,
tra cứu sử dụng hệ thống
Mặc dù hệ thống đã có thể đi vào hoạt động nhưng vẫn còn những hạn chế nhất
định và những điều cản trở sự phát trién cho hệ thống Qua đó, nhóm dé xuất ra nhữnggiải pháp giúp cho hệ thống có thê phát triền tốt hơn
14
Trang 15Chương 1 TONG QUAN ĐÈ TÀI
1.1 Lý do chọn đề tài
Theo Công thông tin điện thử của Bộ Giáo Dục và Đào tạo! vào ngày
13/03/3019 năm học 2017-2018, 2018-2019 mỗi năm có đến gần nửa triệu sinh viên
được tuyến vào đại học và hàng triệu sinh viên, nghiên cứu sinh, giảng viên dang theo
học và làm việc ở các trường.
Số liệu chung Giáo dục Đại học
Năm học 2817-2018 Năm hoe2018-2019
Chia rũ Chia ra Tổng sử Cũng lập 3= Téng sử Cũng lập a
- Nghiên cửu sink 1074 2639 435 1.496 1282 24
4 Quy mô sinh viên đại học 7871024 1499495 14743106 I516111 «1261529 264.581
- Nữ 706.849 772.987 133.892 Tạ 289 641.744 13 $45
- Đâa tộc thiểu số 107.816 96,607 1.209 89.078 764i 10937
(Chia thea Ninh thức đảo tựa
- Chính Quy 1.420.509 1.166.285 294324 1.346.545 |090547 255998
- Vừa lim vừa học 221.774 209.801 11.973 M4211 136.315 7.86
- Đảo tạo tir xa 4.742 3.409 1333 35.355 34.667 658
5 Quy mô đào tạo thục sĩ, tiển sĩ, 121.253 106.983 6
~ Hoe viên cao học 106.567 93 586 13.981 7134 S4 7Uó 12.4248
~ Nghiên cứu sinh 14.686 14.397 289 11,000 10.758 242
6 Sinh viên tắt nghiệp đại hoe JAl4JÓ3 M2 34956 319! 2164439270 446139
Trinh độ khác 32 16 16 iP 10 2
Ghi chủ: Sẻ liễu không bao gốm các rường DH hoc viễn thuộc khỏi An ninh, Quốc phòng
! Số liệu thống kê giáo dục dai hoc năm học 2017 - 2018 (moet.gov.vn)
15
Trang 16Hình 1.1 Bang thống kê giáo dục dai học năm 2018 -2019Hàng năm với số lượng sinh viên đông đảo như trên thì sẽ có rất nhiều các đồ ánmôn học, các bài báo nghiên cứu đề tài, các bằng sáng chế được được làm ra Đây cóthé xem nguồn tài san trí tuệ vô cùng to lớn sẽ đóng góp vào các kết quả nghiên cứu,phát triển cho sản xuất, kinh tế cho đất nước ta Có thể góp một phần nhỏ thúc đây
việc thực tiễn hóa các sản phâm tri thức, trí tuệ của sinh viên Việt Nam.
Hiện nay, thị trường về lĩnh vực thị giác máy tính đang phát triển một cách nhanhchóng và rất nhiều các công ty công nghệ hàng đầu hiện nay như Google, Amazon,Mircosoft đã có những hệ thống cung cấp dịch vụ về thị giác máy tính nói riêng vàtrí tuệ nhân tạo nói chung Không những vậy còn rất nhiều công ty từ nhiều lĩnh vựcnhư công nghệ, y tế, nông nghiệp đã và đang nghiên cứu về lĩnh vực này nhưng chỉ
sử dụng cho nội bộ công ty.
12 Đối tượng nghiên cứu
Các cá nhân, tô chức cho nhu cầu sử dung API để tối ưu hóa các quy trình trong
doanh nghiệp
Các cá nhân tô chức có nhu cầu sử dụng API trong nghiên cứu và học tập
1.3 Mục tiêu dé tài
Nghiên cứu các thuật toán hiện có về thị giác máy tính hiện tại Trường Đại Học Công
nghệ thông tin và các phương pháp thương mại hóa các thuật toán nay.
Nghiên cứu các mô hình kinh doanh hiện có trên thị trường (Google Vision, Azure, Amazon, ), nghiên cứu cách vận hành và đóng gói của các hệ thông này.
Nghiên cứu về hệ thống Thuong mại điện tử kinh doanh các sản pham về thị giác
Trang 17- _ Nhận diện và trích xuất thông tin từ hình ảnh, giấy tờ
- _ Nhận diện, trích xuất thông tin của biến số xe
Xây dựng các ứng dụng tích hợp các API đã cung cấp
Xây dựng website quản lí cung cấp cho người dùng các tính năng:
- Quan lý thời gian sử dung API.
- Quan lí chi phí và các gói dịch vu đã va đang sử dụng sử dụng
- Quan lí thông tin khách hàng.
Thống kê số liệu các số liệu của khách hàng theo tháng, quý, năm
Mô tả và hướng dẫn sử dụng API
Triển khai hệ thống trên máy chủ của khách hàng
1.4 Pham vi đề tài
Nghiên cứu thuật toán hiện có về thị giác máy tính và các thuật toán hiện có ở trường
đại học Công nghệ thông tin.
Nghiên cứu các mô hình kinh doanh hiện có về thị giác máy tính trên thị trường
Xây dựng hệ thống API dựng trên kiến trúc mô hình MicroServices
1.5 Phương pháp thực hiện
Khảo sát:
- Tham khảo các website có cùng ý tưởng đã được triển khai
- Đọc tìm hiểu các bài báo khoa học với từ khóa “Thị giác máy tính (Computer
Vision)”
Nghiên cứu và lập trình:
- Tim hiểu thuật toán về thị giác máy tính hiện đang có ở trường đại học Công nghệ
thông tin, cách đóng gói các thuật toán này thành API.
- Tim hiểu công nghệ và cách xây dựng website quản lí với NodeJS và ReactJS
- _ Nghiên cứu công nghệ liên quan.
Đánh giá:
17
Trang 18Kết quả mong đợi: Xây dựng hệ thống với đầy đủ các chức năng đã đề xuất
Chương2 CƠ SỞ LÝ THUYET
2.1 Khảo sát hiện trạng
2.1.1 Hiện trạng
Computer vision (Thị giác máy tinh) đang phát triển nhanh chóng với những tiến
bộ về mặt kĩ thuật, công nghệ Các kĩ thuật deep learning ra đời là tiền đề cho việc
các hệ thống thị giác máy tính có thể mô phỏng, tái tạo chính xác hơn tương tự với
những gì con người có thể nhìn thấy
Theo Grandviewresearch? công bố vào thang 9 năm 2020, quy mô thị trường thịgiác máy tính toàn cầu được định giá 10,6 tỷ USD vào năm 2019 và dự kiến sẽ tăng
với tốc độ tăng trưởng kép hàng năm là 7,6% từ 2020 đến năm 2027
'‹ Asia Pacific computer vision market size, by component, 2016 - 2027 (USD Million)
2016 2017 2018 2018 2020 2021 2022 2023 2024 2025 2026 2027
@ Hardware © Software
Source: www.grandviewresearch.com
Hình 2.1 Biểu dé quy mô thị trường thị giác máy tính Chau A
Hệ thống thị giác máy tính đang được sử dụng dé cải thiện tinh bảo mật cho các
tai sản có giá tri cao bằng cách triển khai hệ thong quét sinh trac hoc va nhan dién
khuôn mặt Trường hợp phổ biến nhất có thé thay là hệ thống Face ID của nhữngdòng IPhone X trở về sau với tốc độ nhận diện nhanh, phản hồi chính xác và rất tiện
lợi cho người dùng.
? Computer Vision Market Size & Share Report, 2020-2027 (grandviewresearch.com) (7/7/2021)
18
Trang 19Bên cạnh đó, các trường hợp sử dụng nâng cao hơn của nhận dạng khuôn mặt là
các doanh nghiệp hoặc hệ thống an ninh khu dân cư sử dụng các đặc điểm sinh lý của
cá nhân đê xác minh danh tính.
Ngành công nghiệp ô tô cũng đang chứng kiến sự thay đổi từ mô hình tư các
phương tiện do con người tự điều khiển như thông thường sang ô tô tự lái hoặc chạy
bằng AI Việc áp dụng thị giác máy tính vào ô tô tự lái được kì vọng sẽ thúc đây sựphát triển cho cả hai
Ngành công nghiệp sản xuất đang ở giai đoạn sử dụng rộng rãi nhất tự động hóa
và người máy Khi các cơ sở sản xuất chuyền đổi hoàn toàn sang tự động hóa, yêu
cầu về hệ thống thông minh hơn dé có thé giám sát các quy trình Thị giác máy tính
được sử dụng dé đánh giá kiểm tra chất lượng của các sản phẩm nhằm phát hiện sựsai xót và sản phẩm lỗi
Rat nhiều lĩnh vực từ sản xuất, giao thông, y tế, đã, dang và sẽ được tích hợp hệ
thống thị giác máy tính nhằm nâng cao chất lượng, năng suất và đem tới giá trị sửdụng tốt nhất cho con người
2.1.2 Các mô hình đang được triển khai
Hiện nay có rất nhiều mô hình cung cấp API về thị giác máy tính đang được triển
khai trên thị trường tiêu biểu là Google, Amazon, Microsoft, IBM
aws © Google Cloud œ CloudSight
<= clarifai Œ) KAIROSCLCYfl|IS
Hình 2.2 Top những công ty về lĩnh vực thị giác máy tính theo Rakuten RapidAPI°
3 Rakuten RapidAPI: nền tảng trung gian cung cấp các API cho người dùng
19
Trang 20Google Cloud Platform‘: API Vision của Google Cloud cung cap các mô hình học
máy mạnh mẽ được dao tạo trước thông qua các API REST và RPC Gan nhãn cho hình ảnh và nhanh chóng phân loại chúng thành hàng triệu danh mục được xác định
trước Phát hiện các đối tượng và khuôn mặt, đọc văn bản in và viết tay cũng như
xây dựng siêu dữ liệu có giá trị vào danh mục hình ảnh của bạn.
- Uudiém:
o Không ràng buộc gói cô định mà cung cấp cho người dùng giải pháp
“Day as you go” - dùng bao nhiêu trả bấy nhiêuo_ Khả năng bảo mật cao và quyền riêng tự chặt chẽo_ Có thé phát hiện mọi vật thé bằng Google Image Search và tìm kiếm
bất kì bằng Google Analytics mạnh mẽ
o Nhiều thông số điều kiện lọc hình ảnh được áp dụng cho hình ảnh
- Nhược điểm:
o_ Could Datastore bị giới hạn và khó chuyên đôi
o Google CDN không hoạt động với source tùy chỉnh
o StackDriver (GCP logs) cảm giác bi tách rời
o Khong hỗ trợ so sánh khuôn mặt
Amazon Rekonition*: Amazon không chỉ dang là sàn thương mại điện tử lớn
mạnh nhất thế giới mà còn cung cấp những tiện ích khác như dịch vụ đám mây, thị
giác máy tính, Amazon Rekonition có thé dễ dàng thêm phân tích hình ảnh vàvideo vào ứng dụng và có thé bắt đầu ngay mà không cần phải biết về deep learning
o_ Kích thước hình anh tối đa có thé lưu trữ Amazon S3 bị giới hạn 15MB
4 Google Cloud Computing Service - hệ théng dich vụ đám mây của Google (7/7/2021)
5 Amazon Rekognition - hệ thống cung cấp API về thị giác máy tính của Amazon (7/7/2021)
20
Trang 21o Chiều cao chiều rộng tối thiêu của hình là 80 pixel
o_ Chỉ hỗ trợ hình ở định dang JPEG va PNG, video mã hóa codec H.264
và định dạng tệp là MPEG-4 và MOV
o Hình có kích thước 1920*1080 thì gương mặt phải lớn hơn 40*40
pIxels và tỉ lệ này sẽ tăng lên khi kích thước hình tăng.
IBM Visual Recognition: sử dụng các thuật toán học sâu để xác định các cảnh
và đối tượng trong hình ảnh mà bạn tải lên dịch vụ IBM tự tin với công nghệ củahãng sẽ cho ra kết quả chính xác cao với các lớp như động vật, con người, đồ ăn, cây
côi, thê thao, mà không cân phải huân luyện trước.
o Chi phí bảo trì cao
o Không xử lí trực tiếp dữ liệu có cấu trúco_ Kích thước hình tối đa là I0MB và mật độ điểm ảnh
Azure Computer Vision’: tăng khả năng khám phá nội dung, tự động nhận diện
chữ, phân tích video theo thời gian thực Đơn giản hóa giúp cho người sử dụng dễ
dàng hiểu và sử dung được những dữ liệu trả về mà không yêu cầu kiến thức chuyênmôn về máy học
- Uudiém:
o Dễ dàng dé bắt đầu triển khai
o_ Hỗ trợ tải hình và cả thông qua URL
o Thời gian phản hồi tốt
©_ Tích hợp chặt chẽ với Microsoft Azure, lưu trữ blog, cơ sở dữ liệu SQL
và máy ảo dé có thé được đóng gói như một giải pháp kết thúc
6 Cloud IBM - Hệ thông các dịch vụ đám mây do IBM cung cấp (7/72021) „
7 Azure computer vision - Hệ thông về thị giác máy tinh do Microsoft cung cap (7/7/2021)
21
Trang 22- Nhược điểm:
o_ Nếu bạn vượt quá số lượng giao dịch được đề cập mỗi giây, thời gian
phản hồi của ban sẽ được điều chỉnh dé nam trong giới hạn đã thỏa
thuận, vì vậy nếu bạn nhận được nhiều cuộc gọi - bạn sẽ gặp van đề
o_ Mô hình định giá dựa trên cách sử dụng có thé khó hiểu và thực hiện
các biện pháp kiểm soát chi phí hiệu quả
2.1.3 Thị trường Việt Nam
Hiện nay, thị trường Thị giác máy tính nói riêng và AI nói chung của Việt Nam đang
phát triển một cách nhanh chóng Các công ty trong nước như Zalo, FPT đã xây dựng
hệ thống cung cấp các giải pháp về AI thông qua API
- Zalo AI: là nền tảng AI được Zalo xây dựng nhằm cung cấp cho người dùng
những giải pháp như nhận diện nội dung người lớn, nhận diện đường lưỡi bò,
phân lớp hình ảnh Cùng với đó là các hệ thống nhận diện giọng nói cho phép
chuyền đổi qua lại văn ban và giọng nói, hệ thống AI trả lời các câu hỏi
ZdIoAl tere ecg eminem nang
@——-Technologies
- 4Í la oO}
Computer Vision Speech Processing
Experiments @
Hình 2.3 Giao diện quan lí của Zalo AI
- FPT AI: là nền tang AI được FPT cung cấp với các tính năng về thị giác máy
tính và trí tuệ nhân tạo Các giải pháp FPT cung cấp như chuyên đổi văn bảngiọng nói, trích xuất thông tin căn cước, passport, nhận diện gương mặt
22
Trang 23Hình 2.5 Mối liên hệ giữa các tác vụ trong thị giác máy tính
2.2.1 Phan lớp hình anh (Image classification)
23
Trang 24Phân lớp hình ảnh là được biết đến một trong những khả năng sinh học của conngười và nó được xem là mục tiêu hàng đầu trong lĩnh vực thị giác máy tính với mục
đích tự động phân lớp hình ảnh vào các lớp định nghĩa trước [6].
Trước đây các mô hình phân lớp chỉ hoạt động thật sự tốt trên những bộ dữ liệu
như GIFA và MNIST Tuy nhiên một bước tiễn vĩ đại đã xảy ra khi có sự ra đời của
bộ dit liệu “ImageNet” Nó dường như đã làm thúc đây các công nghệ học sâu (“Deeplearning”) tăng hiệu suất và phát triển hơn trong lĩnh vực thị giác máy tính [6]
2.2.1.1 Thuật toán mạng tích hợp chập (CNN)
Tích chập là biến đồi thông tin đầu vào thông qua một phép tích chập với bộ lọc
dé trả về đầu ra là một tín hiệu mới Tín hiệu này sẽ làm giảm những đặc trưng ma
bộ lọc không quan tâm và chỉ giữ những đặc trưng chính [6].
Trong mạng neural tích chập, các lớp liền sau lấy đầu vào từ các lớp liền trước do
đó dé thiết kế mạng tích chập cần phải xác định được các tín hiệu đầu vào và đầu ra
ở mỗi lớp.
Mang CNN thông qua các phép tích chập các đặc trưng chính từ ảnh được trích
xuất và truyền vào các lớp tích chập Mỗi lớp tích chập sẽ bao gồm nhiều đơn vị màkết quả của mỗi đơn vị là phép biến đổi tích chập từ lớp trước đó thông qua phép
nhân tích chập với bộ lọc [6].
Các quá trình cơ bản của thuật toán CNN
o Chiết xuất đặc trưng: Thông qua phép tích chập giữa ma trận đầu vào va
bộ lọc dé tạo ra thành các lớp mới [6]
o_ Quá trình tông hợp: Các lớp sau khi trích xuất đặc trưng sẽ có kích thướt
lớn vì thế sẽ làm tăng số lượng phép tính trong mạng Đề hạn chế tính toáncần phải cắt giảm chiều của ma trận hoặc số đơn vị của lớp Quá trình nàygọi là quá trình tổng hợp [6]
© Quá trình kết nối hoàn toàn: Sau khi cắt giảm số lượng tham số, ma trận
cần tạo thành vector dé kết nối giữa các lớp Quá trình này sử dụng hàm
24
Trang 25relu đê kích hoạt Cuôi cùng sẽ tao ra các đơn vi đại diện cho moi lớp với
Nhận diện đối tượng là thuật ngữ mô tả tập hợp các nhiệm vụ của thị giác máy tính
liên quan đến đối tượng trong kĩ thuật xử lí hình ảnh Các nhiệm vụ chính bao gồm:
- Phan loại hình anh: Dự đoán nhãn của một đối tượng trong hình anh
- Xác định vị trí của đối tượng trong hình ảnh và cho biết vị trí của chúng bang
bounding box [6].
- Phat hién đối tượng: Xác định vị trí hiện diện của các đối tượng trong bounding
box và nhãn của các đối tượng nằm trong một hình anh [6]
- Các mô hình R-CNN (regions with CNN features): là lớp các mô hình xác
định vùng đặc trưng dựa trên các mạng CNN được phát triển bởi RossGirshick và các cộng sự Lớp các mô hình này gồm 3 mô hình chính là R-CNN, Fast R-CNN và Faster-RCNN được thiết kế cho các nhiệm vụ định vivật thé và nhận diện vật thé [6]
2.3 Tổng quan về Python
2.3.1 Giới thiệu
25
Trang 26Là ngôn ngữ lập trình bậc cao cho mục địch lập trình đa năng, do Guido van
RossunŠ tạo ra và ra mắt lần đầu năm 1991
Python là ngôn ngữ lập trình thông dịch, hướng đối tượng
Hỗ trợ các module và gói (package) khuyến khích chương trình module hóa
và tái sử dụng mã.
Trình thông dich python và thư viện chuẩn mở rộng có sẵn ở dang mã nguồn
miễn phí, hồ trợ cho các ứng dụng đa nên tang
Language Rank Types Spectrum Ranking
- Cu pháp đơn giản, dễ tiếp cận
- _ Ngôn ngữ theo hướng thủ tục và hướng đối tượng
- _ Hỗ trợ nhiều thư viện đáp ứng các nhu cầu lập trình
- _ Có khả năng tương tác cao với các module khác viêt băng các ngôn ngữ khác
như (Java, C++, NET).
8 Guido van Rossum: sinh ngay 31/1/1956 là người tạo ra ngôn ngữ Python
3 Xếp hạng ngôn ngữ lập trình — 2017, nguồn http://spectrum.ieee.org/
Trang 27- _ Ngôn ngữ chạy đa nền tang,
- Khoa học máy tính (AI, Computer Vision)
2.3.4 Giới thiệu một số thư viện Python
2.3.4.1.Open CV
- Open CV (Open Computer Vision) là thư viện mã nguồn mở hỗ trợ xử lí hình
ảnh trong lĩnh vực thị giác máy tính và khoa học máy tính Được viết bằngngôn ngữ C/C++ nên có tốc độ tính toán nhanh, được sử dụng trong các ứngdụng liên quan đến thời gian thực [7]
- Là thư viện mã nguồn mở và chạy được trên các nền tảng và ứng dụng của
Window, Linux, MacOS [7].
- Open CV được ứng dụng dé nhận dạng ảnh, xử lí hình ảnh, phục hồi hình ảnh
hoặc video, các ứng dụng khác [7].
- Cai đặt: Open CV với Python3:
pip3 install python-opencv 2.3.4.2 TensorFlow
TensorFlow La một thu viện mã nguồn mở được tạo bởi nhóm Google Brain,TensorFlow kết hợp với ngôn ngữ lập trình mã nguồn mở Python đề hỗ trợ các nhà
nghiên cứu tính toán trong lĩnh vực Machine learning dễ dàng và nhanh hơn!9,
!0 Theo https://www.tensorflow.org/learn ngày 6/7/2021
27
Trang 28TensorFlow cho phép các nhà phát triển tạo các biểu đồ Dataflow, các cấu trúc
mô tả cách thức dữ liệu di chuyên qua biểu đồ hoặc một loạt các node xử lý Mỗi
node trong biểu dé đại điện cho một hoạt động toán học và mỗi kết nối giữa các node
là một mảng dữ liệu đa chiều hoặc tenxor [8]
Ngoài ra TensorFlow còn cung cấp một số công cụ khác như: TensorBoard (giúp
minh hoa các đồ thị tính toán dưới dạng biểu đồ), TensorFlow Serving (Giúp triển
khai các mô hình Machine learning), API, [8].
Cai đặt với Python3:
pip3 install tensorflow
TensorFlow có thé chạy trên hầu hết mọi mục tiêu như là mạng Lan, nhóm kết nối
trong cloud, thiết bị iOS, Android, CPU hoặc GPU Nếu chúng ta sử dụng cloud củaGoogle, chúng ta có thể chạy TensorFlow trên silicon của đơn vị xử lý TensorFlow(TPU) tùy chỉnh của Google đề tăng tốc hơn nữa Tuy nhiên, các mô hình kết quảđược tạo bởi TensorFlow có thể triển khai trên hầu hết mọi thiết bị nơi chúng được
- _ Hỗ trợ nhiều thư viện đáp ứng nhu cầu lập trình
- _ Mã nguồn mở, ứng dụng chạy được trên nhiều nền tang
Nhược điểm
- _ Tốc độ chậm hơn các ngôn ngữ khác như Java, C#
- Không hỗ trợ các thuộc tính như private, protected, public
28
Trang 29Không có các vòng lặp do while, switch case
2.4 Tổng quan về NodeJS
2.4.1 Khái niệm
NodeJS là một nền tảng được xây dựng dựa trên V8 Javascript Engine củaGoogle, giúp cho Javascript một ngôn ngữ chủ yếu chỉ được sử dụng dé viếtcho phía người dùng nay có thé dùng dé tạo ra những hệ thống phía máy chủ.NodeJS là một mã nguồn mở được phát triển bởi Ryan Dahl!! vào năm 2009
và có thé chạy trên bất cứ nền tảng nào hiện nay như: Windows, MacOS,
Linux, Unbuntu [3].
2.4.2 Các đặc tinh của NodeJS
Lập trình I/O bất đồng bộ với event-loop
Hỗ trợ database (NoSQL, SQL)
Kết nỗi đồng thời, hỗ trợ tốt cho việc xử lí realime
Cộng đồng hỗ trợ đông đảo
Dé dàng làm việc với data dạng JSON
Viết unit test dễ dàng hơn
2.4.3 Ung dụng của NodeJS
Nhờ vào tính cơ động và dễ dàng phát triển của mình nên NodeJS được ứngdụng vào các hệ thống cần xử lí nhanh, real-time như thương mại điện tử, nhắn
tin, hội thoại !2
Các dịch vụ đám mây Xây dựng RestFull API
Các hệ thống notification
Hệ thống upload file đòi hỏi tốc độ nhanhỨng dụng CLI
Ryan Dahl (1981) là nhà phát triển ban đầu của Nodejs (theo wikipedia 7/2021)
12 Theo https://www.tutorialspoint.com/nodejs/nodejs_introduction.html năm 2021
29
Trang 302.4.4 Ưu nhược điểm của NodeJS
Ưu điểm
- Hiệu suất cao cho các ứng dụng thời gian thực
- Kha năng mở rộng dé dàng với việc có thé tách ứng dụng thành nhiều
MircoServices.
- _ Cộng động hỗ tro NodeJS lớn mạnh
- Dễ học và thích ứng nhanh
- Cải thiện thời gian phản hồi của ứng dụng và tăng hiệu suất
- Giam thời gian tải bằng cách lưu vào bộ nhớ đệm nhanh
- Giúp xây dung các ứng dụng đa nền tang
Nhược điểm
- Khong thích hợp cho các tác vu đòi hỏi xử lí nặng, tính toán nhiều
- Khó khăn cho việc bảo trì do tính bất đồng bộ gây ra hiện tương callback-hell.
-_ Bên cạnh những thư viện hỗ trợ tốt cũng có rất nhiều thư viện kém chat lượng
2.5 Kiến trúc MieroServices
2.5.1 Kiến trúc monolithic
30
Trang 31Data Base
Hình 2.8 Mô tả kiến trúc monolithicMonolithic là kiến trúc xây dựng ứng dụng phần mềm đơn cấp mà trong đó giaodiện người dùng và mã truy cập dữ liệu kết hợp thành một nền tảng duy nhất
Monolithic sử dụng tốt với những ứng dụng nhỏ và chức năng của ứng dụng ít
Nếu các chức năng của ứng dụng ngày còn tăng thì kiến trúc Monolithic sẽ không
còn phù hợp [4].
2.5.2 Kiến trúc MicroServices
Với kiến trúc Microservices thì mỗi dịch vụ sẽ được chia nhỏ thành nhiều thành
phần khác nhau, mỗi thành phần sẽ hoạt động độc lập và chỉ xử lý các nghiệp vụ chứcnăng riêng của nó Mỗi thành phần cũng sẽ không lệ thuộc vào công nghệ phát triểnvới các thành phần khác [5]
Kiến trúc microservices giúp dé dàng mở rộng và phát triển ứng dụng Ngoài raứng dụng dễ dàng bảo hành và tiết kiệm thời gian khi phát triển các chức năng mới
[5].
31
Trang 322.5.3 Mô hình
User interface
|
Microservices Microservices Microservices
(Python services) (Python services) (NodeJS services)
Database’ Database? Database3
Hình 2.9 Mô tả mô hình MicroServices
Hệ thống chia thành nhiều dịch vụ nhỏ, các dịch vụ nhỏ này được xử lí nhữngdatabase độc lập với nhau Khi một trong những dịch vụ này gặp sự có thì đảm bảo
hệ thống vẫn hoạt động bình thường Đồng thời khi ứng dụng cần phát triển các tínhnăng mới thì dễ dàng xây dựng và tiết kiệm thời gian
2.5.4 Ưu điểm và nhược điểm của kiến trúc MicroServices:
Uu điểm:
- Kiến trúc phù hợp cho các dịch vụ lớn Chia nhỏ các chức năng thành các
thành phần, lập trình viên thuận lợi hơn trong việc phát triển, vận hành mỗithành phần độc lập với nhau [5]
- Thuan lợi trong việc phat triển lâu dài cho dịch vụ Vì mỗi thành phần chỉ thực
hiện đúng một chức năng, nên việc cải tiến sẽ dễ dàng thực hiện và không gâygián đoạn tới các thành phần khác Mỗi thành phan sẽ giao tiếp với nhau qua
giao diện riêng [5].
32
Trang 33- - Việc phát triển mỗi thành phần của dịch vụ cũng được chia nhỏ, và đưa tới các
nhóm phát triển, khối lượng việc xử lý của mỗi nhóm sẽ nhỏ và nhanh chóng
hơn.
-_ Mỗi thành phần sẽ không phụ thuộc vào công nghệ với các thành phần khác
- _ Với kiến trúc Monolithic khi một chức năng trong dịch vụ gặp lỗi, sẽ dẫn đến
toàn bộ dịch vụ bị gián đoạn Với kiến trúc MicroServices, khi một thành phầngặp lỗi, các thành phần khác sẽ không bị gián đoạn
Nhược điểm:
- Dich vụ sẽ có nhiều thành phan phải quản lý
- _ Các yêu cầu về hạ tang dé đáp ứng cho các thành phần của dịch vụ cũng sẽ
phức tạp hơn.
- Dich vụ sẽ được phát triển bởi nhiều công nghệ, ngôn ngữ lập trình
- _ Việc kiểm thử toàn bộ hệ thống sẽ phức tạp hơn
2.6 Hệ quản trị cơ sở dữ liệu MongoDB
2.6.1 Tim hiểu về NoSQL
NoSQL là 1 dang CSDL mã nguồn mở và được viết tắt boi: None-Relational SQLhay có nơi thường gọi là Not-Only SQL NoSQL được phát triển trên JavascriptFramework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value NoSQL
ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của
mô hình dữ liệu quan hệ RDBMS (Relational Database Management System - Hệ
quản tri cơ sở dữ liệu quan hệ) về toc độ, tinh năng, khả năng mở rộng.
Với NoSQL bạn có thé mở rộng dữ liệu mà không lo tới những việc như tạo khóangoại, khóa chính, kiểm tra ràng buộc NoSQL bỏ qua tính toàn ven cua dữ liệu vàtransaction dé đôi lay hiéu suat nhanh va kha năng mở rộng NoSQL được sử dung ởrất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBookphát triển, Google phát triển và sử dụng BigTable
2.6.2 Tổng quan về MongoDB
33
Trang 34MongoDB là một hệ quan tri cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và
được hàng triệu người sử dụng [2] MongoDB là một database hướng tài liệu
(document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng
như CSDL quan hệ nên truy van sẽ rất nhanh [2]
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như
MySQL hay SQL Server ) sử dung các bảng dé lưu đữ liệu thì với MongoDB chúng
ta sẽ dùng khái niệm là collection thay vì bảng [2].
So với RDBMS thì trong MongoDB collection ứng với table, con document sẽ ứng
với row , MongoDB sẽ dùng các document thay cho row trong RDBMS [2].
Cac collection trong MongoDB được cấu trúc rat linh hoạt, cho phép các dữ liệulưu trữ không cần tuân theo một cấu trúc nhất định Thông tin liên quan được lưu 27trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB
Trang 35role VARCHAR (20) NOT NULL,
PRIMARY KEY (id))
INSERT INTO Users (name, password, role) VALUES
SELECT * FROM Users
SELECT * FROM Users WHERE role = ‘admin’
db.Users.find({ “role”: “admin”});
Bang 2.1 Một số câu lệnh giữa MySql và MongoDB
35
Trang 362.6.4 Ưu điểm và nhược điểm của MongoDB
Ưu điểm:
Do MongoDB sử dụng lưu trữ dit liệu dưới dạng Document JSON nên mỗi
một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu [2].
Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như
trong RDBMS nên khi insert, xóa hay update nó không cần phải mat thời giankiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS [2]
MongoDB rat dé mở rộng (Horizontal Scalability) Trong MongoDB có mộtkhái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn
mở rộng hệ thống ta chỉ cần thêm một node với vào cluster [2]
Trường dữ liệu “ id” luôn được tự động đánh index (chỉ mục) dé tốc độ truy
vấn thông tin đạt hiệu suất cao nhất [2]
Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, dé phuc vu
lượt truy van sau diễn ra nhanh hơn ma không cần phải doc từ 6 cứng [2]
Hiệu năng cao: Tốc độ truy van (find, update, insert, delete) cua MongoDBnhanh hon han so với các hệ quản tri cơ sở dt liệu quan hệ (RDBMS) Vớimột lượng dit liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB
có thé nhanh tới gấp 100 lần so với MySQL [2]
Nhược điểm:
Một ưu điểm của MongoDB cũng chính là nhược điểm của nó MongoDB
không có các tính chất ràng buộc như trong RDBMS nên khi thao tác vớiMongoDB thì phải hết sức cần thận [2]
Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về
value do đó key sẽ bị lặp lại Không hỗ trợ Join nên dễ bị dữ thừa dữ liệu [2].
Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống 6
cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ
36
Trang 37RAM xuông ô cứng điêu này sẽ là nhược điêm vì sé có nguy cơ bi mat dữ liệu
khi xảy ra các tình huống như mắt điện [2]
Trang 38lượng lớn bản ghi, Bộ dữ HA (tính sẵn sàng cao)
-liệu tương đối nhỏ Không có quản tri viên cơ
sở đữ liệu (DBA)
Bang 2.2 Bang so sánh giữa MySQL và MongoDB
So sánh hiệu năng MongoDB và MySQL là khó khăn, vì cả hai hệ thống quản
ly déu cuc kỳ hữu ich và sự khác biệt cốt lõi làm nền tảng cho các hoạt động cơ bản
và cách tiếp cận ban đầu của chúng Tuy nhiên, MongoDB và MySQL là một đối số
nóng đang diễn ra trong một thời gian: cơ sở đữ liệu quan hệ trưởng thành chống lạimột hệ thống phi quan hệ trẻ Cả hai đều là nguồn mở và dễ dàng có sẵn, cũng như
cả hai hệ thống cung cấp các phiên bản thương mại với hàng tan các tính năng bổ
- H6 trợ xây dung Single Page Application.
- Duoc phat triển bởi Facebook, được sử dụng bởi nhiều công ty lớn như
Facebook, Instagram
2.7.2 Các thành phần chính
2.7.2.1 Cấu trúc thư mục
38
Trang 39layouts redux
.gitignore
setup lests.js
Hình 2.11 Cay thư mục của dự án React JS
- node_module: Chita các module được cài vào dự án.
- public: chứa file Index.html và các hình ảnh được thêm vào dự án.
- sre: Chứa các component của ứng dụng:
o apis: chứa những file query tới API
© assests: chứa những file về hình anh, font chữ, giao điện
o_ components: chứa những component được viết san, tái sử dungo_ constants: chứa những file hang số
o_ layouts: chưa component bố cục của app
o redux: chứa file quản lí redux
39
Trang 40o router: chứa file quản lí sự phân trang, router của app.
o utils: chứa những ham xử lí dùng chung nhiều lần
© views: chứa những màn hình chính.
- package.json: Chứa tên các thư viện được cài vào dự án.
2.7.2.2 Các thành phan trong ReactJS
- Component: Hién thị giao diện giao diện của ứng dụng, gồm các thẻ HTML
do mình tự định nghĩa.
- Props: là thuộc tính của thẻ Dùng dé truyền dữ liệu từ component cha sang
component con.
- State: Là thuộc tính dé quản lí các trang thái của component trong React
- JSX: Là đoạn mã được trả về trong component, cho phép kết hợp HTML và
JS trong cùng một source code.
Hình 2.12 Nguyên lí hoạt động của ReactJs
- Pau tiên trình duyệt sé đọc file Index.html
40