1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO cáo môn học các hệ cơ sở dữ LIỆU WEBSITE QUẢN lý NGHỈ PHÉP SINH VIÊN

34 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 0,91 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM Khoa Công nghệ thông tin BÁO CÁO MÔN HỌC CÁC HỆ CƠ SỞ DỮ LIỆU WEBSITE QUẢN LÝ NGHỈ PHÉP SINH VIÊN Ngành: CÔNG NGHỆ THÔNG TIN Giảng viên Giảng dạy : PGS TS Nguyễn Thị Thúy Loan Sinh viên thực : Nguyễn Tiến Thạc Mssv: 2241860014 Nguyễn Hoàng Kỳ Mssv: 2241860005 Nguyễn Hồng Tấn Mssv: 2141860035 TP Hồ Chí Minh, 2022 0 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TP HCM Khoa Cơng nghệ thơng tin BÁO CÁO MÔN HỌC CÁC HỆ CƠ SỞ DỮ LIỆU WEBSITE QUẢN LÝ NGHỈ PHÉP SINH VIÊN Ngành: CÔNG NGHỆ THÔNG TIN Giảng viên Giảng dạy : PGS TS Nguyễn Thị Thúy Loan Sinh viên thực : Nguyễn Tiến Thạc Mssv: 2241860014 Nguyễn Hoàng Kỳ Mssv: 2241860005 Nguyễn Hồng Tấn Mssv: 2141860035 TP Hồ Chí Minh, 2022 0 KHOA CÔNG NGHỆ THÔNG TIN LỜI CẢM ƠN Đầu tiên, nhóm em xin gửi lời cảm ơn đến Trường Đại học Công nghệ TP.HCM đưa môn Các hệ sở liệu vào chương trình giảng dạy Cao học Đặc biệt, em xin chân thành cảm ơn giảng viên môn – Cô Nguyễn Thị Thúy Loan Cơ người tận tình Chia sẻ truyền đạt kiến thức quý báu cho nhóm suốt học kỳ vừa qua Trong thời gian tham dự lớp học Cơ, nhóm tiếp cận với nhiều kiến thức bổ ích cần thiết cho q trình học tập, làm việc sau nhóm Bộ môn Các hệ sở liệu mơn học thú vị vơ bổ ích Tuy nhiên, kiến thức kỹ môn học nhóm cịn nhiều hạn chế Do đó, báo cáo em khó tránh khỏi sai sót Kính mong Cơ xem xét góp ý giúp báo cáo nhóm để hồn thiện Nhóm xin chân thành cảm ơn! 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc -KHOA CÔNG NGHỆ THÔNG TIN NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY I Thơng tin nhóm Nhóm: 02 Thành viên: 1) Nguyễn Tiến Thạc – 2241860014 2) Nguyễn Hoàng Kỳ – 224186005 3) Nguyễn Hoàng Tấn – 2141860035 II Nhận xét chung: III Chấm điểm: Điểm báo cáo Bằng số Bằng chữ Tp Hồ Chí Minh, ngày 14 tháng 09 năm 2022 Giảng viên giảng dạy (Ký, ghi rõ họ tên) PGS TS Nguyễn Thị Thúy Loan MỤC LỤC 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN LỜI CẢM ƠN i NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY .ii DANH MỤC TỪ VIẾT TẮT v DANH MỤC CÁC BẢNG BIỂU, SƠ ĐỒ, HÌNH ẢNH vi LỜI MỞ ĐẦU CHƯƠNG GIỚI THIỆU VỀ NOSQL 1.1 NoSQL gì? 1.1.1 Thuật ngữ 1.1.2 Lịch sử 1.2 Đặc điểm NoSQL .2 1.3 Các dạng NoSQL 1.3.1 Key – value data stores .3 1.3.2 Column-based – Tabular 1.3.3 Document-based .3 1.3.4 Graph-based data-stores CHƯƠNG TỔNG QUAN VỀ MONGODB 2.1 MongoDB gì? .4 2.2 Kiến trúc MongoDB 2.3 Mục đích đối tượng 2.3.1 Tại nên sử dụng MongoDB? 2.3.2 Nên sử dụng MongoDB nảo? .5 2.4 Chỉ mục (Index) 2.4.1 Khái niệm mục (Index) 2.4.2 Chỉ mục MongoDB 2.5 Ưu khuyết điểm MongoDB 2.5.1 Ưu điểm 2.5.2 Khuyết điểm 11 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 2.6 So sánh MongoDB với RDBMS 11 2.6.1 So sánh tổng quan MySQL MongoDB .11 2.6.2 Một số thuật ngữ khái niệm .12 2.6.3 So sánh tính 12 2.6.4 So sánh ngôn ngữ truy vấn .13 2.6.5 So sánh ưu khuyết điểm .13 2.7 Hướng dẫn cài đặt sử dụng MongDB .13 2.7.1 Download MongoDB .13 2.7.2 Cài đặt MongoDB 14 2.7.3 Tạo biến môi trường cho MongoDB .17 CHƯƠNG KẾT QUẢ THỰC NGHIỆM 20 3.1 Kết đạt 20 3.2 Một số hình ảnh giao diện website 20 3.2.1 Giao diện đăng ký tài khoản 20 3.2.2 Giao diện đăng nhập .20 3.2.3 Giao diện trang chủ 21 3.2.4 Giao diện trang thông tin cá nhân 21 3.2.5 Giao diện chỉnh sửa thông tin cá nhân 22 3.2.6 Giao diện xử lý đơn xin nghỉ phép 22 3.2.7 Giao diện danh sách đơn xin nghỉ phép 23 CHƯƠNG KẾT LUẬN 24 TÀI LIỆU THAM KHẢO 25 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN DANH MỤC TỪ VIẾT TẮT STT Ký hiệu viết tắt Chữ viết đầy đủ RDBMS Relational Database Management System NoSQL Not Only SQL CSDL Cơ sở liệu DB Database GPL General Public License AGPL Affero General Public License JSON JavaScript Object Notation HA DBAs High Availability Database Administrators 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN DANH MỤC CÁC BẢNG BI Y Bảng 2.1 So sánh tổng quan MySQL MongoDB .11 Bảng 2.2 Một số thuật ngữ khái niệm MySQL MongoDB .12 Bảng 2.3 So sánh tính MySQL MongoDB 12 Bảng 2.4 So sánh ngôn ngữ truy vấn MySQL MongoDB 13 Bảng 2.5 So sánh ưu, khuyết điểm MySQL MongoDB 13 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN DANH MỤC CÁC HÌNH ẢNH Hình 2.1 mơ tả cấu trúc mục hỗn hợp khóa Hình 2.2 So sánh hiệu suất hoạt động MongoDB SQL Server 2008 (tốc độ insert)9 Hình 2.3 Minh họa khả mở rộng MongoDB 10 Hình 2.4 Download MongoDB 13 Hình 2.5 Cài đặt MongoDB với file download 14 Hình 2.6 Cài đặt MongoDB 14 Hình 2.7 Setup cài đặt MongoDB 14 Hình 2.8 Chọn kiểu thiết lập MongoDB 15 Hình 2.9 Chọn nơi lưu data log MongoDB .15 Hình 2.10 Install MongoDB Compass 15 Hình 2.11 Bắt đầu Install MongoDB 16 Hình 2.12 Kết thúc cài Install MongoDB .16 Hình 2.13 Nơi lưu trữ MongoDB sau cài đặt 16 Hình 2.14 Vào properites máy tính 17 Hình 2.15 Vào Advanced system settings 17 Hình 2.16 Vào Enviroment Variables .18 Hình 2.17 Thêm thư mục bin MongoDB vào path 18 Hình 2.18 Hồn tất thêm thư mục bin vào path 19 Hình 2.19 Kết chạy thử MongoDB cmd 19 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN LỜI MỞ ĐẦU Với phát triển không ngừng ngành công nghê — thông tin Khối liệu cần xử lý ứng dụng lớn Đă —c biê —t bùng nổ công nghê — Web 2.0, nơi mạng dịch vụ liệu cộng đồng cho phép người dùng tự tạo nội dung web, dẫn đến liệu tăng lên nhanh, vượt qua giới hạn xử lý Hệ quản trị sở liệu quan hệ truyền thống Để đáp ứng nhu cầu phát triển xã hội, đòi hỏi sở liệu (CSDL) lưu trữ, xử lý lượng liệu lớn cách nhanh chóng hiệu NoSQL đời, thay hệ quản trị CSDL quan hệ, giải tốn Nhóm viết báo cáo với mục đích giúp người sử dụng bước đầu tiếp cận, có nhìn khái qt CSDL đại NoSQL, hiểu chi tiết hệ sở liệu NoSQL MongoDB đồng thời giúp người đọc thực ứng dụng hệ sở liệu MongoDB 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 2.5.2 Khuyết điểm  MongoDB khơng có tính chất ràng buộc RDBMS dẫn đến dễ bị làm sai liệu  Không hỗ trợ join giống RDBMS nên viết function join code ta phải làm tay khiến cho tốc độ truy vấn bị giảm  Sử dụng nhiều nhớ: liệu lưu dạng key-value, collection khác value key bị lặp lại Không hỗ trợ join nên bị thừa liệu (trong RDBMS ta cần lưu ghi ghi khác tham chiếu tới cịn MongoDB khơng)  Bị giới hạn kích thước ghi: document khơng có kích thước > 16Mb mức độ document document không > 100 2.6 So sánh MongoDB với RDBMS [1] 2.6.1 So sánh tổng quan MySQL MongoDB Bảng 2.1 So sánh tổng quan MySQL MongoDB MySQL Viết ngôn ngữ Kiểu Các điểm MongoDB C++, C C++, C JavaScript RDBMS(Hệ thống quản lý sở liệu Hướng tài liệu quan hệ  Table  Row  Column  Collection  Document  Field License GPL v2 / Giấy phép thương mại có sẵn OD OD GNU AGPL v3.0 / Giấy phép thương mại có sẵn OD Lược đồ Strict Dynamic Scaling Vertically Horizontally Các tính         Tìm kiếm đánh số full text Hỗ trợ nhân rộng tích hợp Trigger SubSELECT Truy vấn nhớ đệm Hỗ trợ SSL Hỗ trợ Unicode Công cụ lưu trữ khác với đặc tính hiệu suất khác 0 Auto-sharding Native replication Hỗ trợ mơ hình liệu nhúng Chỉ số phụ tồn diện Hỗ trợ ngơn ngữ truy vấn phong phú  Hỗ trợ công cụ lưu trữ khác      BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN CHƯƠNG TỔNG QUAN VỀ MONGODB 2.1 MongoDB gì? [6] Hiểu cách nơm na MongoDB mã nguồn mở tập tài liệu dùng chế NoSQL để truy vấn, viết ngơn ngữ C++ Chính viết C++ nên có khả tính tốn với tốc độ cao khơng giống hệ quản trị CSDL Nếu bạn biết sử dụng JSON MongoDB có cấu trúc lưu trữ tương BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN tự, có hiệu suất cao, tác nhanh khả mở rộng tốt, hoạt tương động khái niệm collection document Tới có lẽ bạn thắc mắc collection ế ể ầ ế BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN gì? document gì? phải khơng nào? Nếu ta tìm hiểu phần 2.2 Kiến trúc MongoDB [3] Document MongoDB: có cấu trúc tương tự kiểu liệu JSON, nghĩa có cặp (key => giá trị) nên có tính động lớn Document ta hiểu giống record liệu MYSQL, nhiên có khác biệt cặp (key => value) khơng giống document Collection MongoDB: nhóm tài liệu (document), tương đương với bảng (table) CSDL thông thường nên collection thuộc database Tuy nhiên có sực khác biệt khơng có ràng buộc Relationship hệ quản trị CSDL khác nên việc truy xuất nhanh, collection chứa nhiều thể loại khác không giống table hệ quản trị mysql field cố định Database: Ô chứa liệu mức vật lý (physical), database có nhiều collection thiết lập lưu trữ nơi máy chủ máy tính Một máy chủ MongoDB thường tạo nhiều sở liệu Primary Key: Mặc định primary key MongoDB field _id, lúc insert bạn không rõ trường _id tự động generate giá trị cho _id 2.3 Mục đích đối tượng 2.3.1 Tại nên sử dụng MongoDB? [7]  Kho lưu định hướng Document: Dữ liệu lưu tài liệu kiểu JSON  Lập mục thuộc tính  Replication tính khả dụng cao BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN  Tự động Shard  Các truy vấn đa dạng  Cập nhật nhanh  Sự hỗ trợ chuyên nghiệp MongoDB 2.3.2 Nên sử dụng MongoDB nảo? [3] MongoDB thật hot khơng phải lúc sử dụng tốt, có trường hợp khơng nên sử dụng nên sử dụng Chúng ta nên dùng MongoDB số trường hợp sau:  Nếu website bạn có tính chất INSERT cao, mặc định MongoDB có sẵn chế ghi với tốc độ cao an toàn  Website bạn dạng thời gian thực nhiều, nghĩa nhiều người thao tác với ứng dung Nếu trình load bị lỗi điểm bỏ qua phần nên an tồn  Website bạn có nhiều liệu quá, giả sử web bạn có đến 10 triệu records ác mộng với MYSQL Bởi MongoDB có khả tìm kiếm thơng tin liên quan nhanh nên trường hợp nên dùng  Máy chủ khơng có hệ quản trị CSDL, trường hợp thường bạn sử dụng SQLITE MongoDB BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 2.4 Chỉ mục (Index) [1] ề BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 2.4.1 Khái niệm mục (Index) Chỉ mục cấu trúc liệu lưu trữ ổ cứng tương ứng với table view nhằm mục đích tăng tốc độ việc truy xuất liệu từ table view 2.4.2 Chỉ mục MongoDB a) Chỉ mục đơn  Chỉ mục cấu trúc liệu, thu thập thông tin giá trị trường văn sưu tập Cấu trúc liệu sử dụng tối ưu truy vấn MongoDB để xắp sếp nhanh văn sưu tập  Chúng ta khởi tạo mục cách gọi hàm createIndex() cung cấp văn với nhiều khóa để đánh mục Ví dụ: đánh mục cho trường “name” “user” db.user.createIndex( {name:1} ); BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN  Hàm createIndex() khởi tạo mục chưa tồn tại, Để kiểm tra việc tồn mục collection user hay chưa, ta sử dụng hàm db.user.getIndexes()  Chỉ mục mặc định: Một mục tạo _id Chỉ mục đặc biệt bị xóa, mục _id cho khóa  Các khóa nhúng: Với MongoDB chí đánh mục khóa bên văn nhúng  Trong collection user có cấu trúc như: { _id: ObjectId( ), name: "Vo Van Do", address: { city: "Nam Tu Liem", state: "Ha noi" }, }  Như ta đánh mục từ khóa bên văn câu lệnh sau: db.user.createIndex({"address.city": 1}) b) Chỉ mục hỗn hợp khóa BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN Hình 2.1 mơ tả cấu trúc mục hỗn hợp khóa Sử dụng phương thức MongoDB để đánh mục khóa cách dễ dàng sau: db.collection.createIndex() BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 or db ll t I d ( { fi ld 1 }) BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN db.coll.createIndex( { : < or -1 > } ) Ví dụ: đánh mục hỗn hợp khóa bảng “user” viết sau: db.user.createIndex( { "name": 1, "address.city": -1 } )  Khi khởi tạo mục, số với khóa hướng mục (index) Nếu tăng dần; Nếu -1 giảm dần Hướng khơng ảnh hưởng đến truy cập ngẫu nhiên quan trọng làm truy vấn xếp phân loại mục hỗn hợp  Nếu có mục hỗn hợp nhiều trường sử dụng để truy vấn tập hợp đầu trường Ví dụ: ta có mục (a, b, c), ta sử dụng để truy vấn (a), (a, b) (a, b, c) c) Chỉ mục thưa thớt  Chỉ mục thưa thớt mục mà bao gồm văn có trường đánh mục (index) Bất kể văn bị thiếu trường đánh mục thưa thớt không lưu vào mục  Các mục thưa thớt bị thiếu văn khơng có giá trị trường đánh mục  Chỉ mục thưa thớt theo định nghĩa không đầy đủ hoạt động khác với mục đầy đủ Khi sử dụng mục thưa thớt để xếp vài văn sưu tập không trả Chỉ văn đánh mục trả Xét ví dụ sau: { "_id" : ObjectId(" "), "userid" : "1" } { "_id" : ObjectId(" "), "userid" : "2", "score" : 10 } { "_id" : ObjectId(" "), "userid" : "3", "score" : }  Chúng ta đánh mục câu lệnh sau: db.user.createIndex( { score: 10 } , { sparse: true } )  Và truy vấn kết quả: BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN db.scores.find( { score: { $lt: } } )  Nhưng kết trả là: { "_id" : ObjectId(" "), "userid" : "abby", "score" : 10 } Do đánh mục với ghi d) Chỉ mục  MongoDB hỗ trợ đánh mục nhất, đảm bảo khơng có văn chèm mà giá trị khóa đánh mục lại trùng với văn mà tồn  Để tạo mục đảm bảo khơng có văn có giá trị trường “name” “address” thực hàm sau: db.things.createIndex({name: 1, address: 1}, {unique: true}); BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN  bản0 lưu vào collection việc đánh mục Khóa bị thiếu: Khi văn hay khóa đánh mục bị thiếu chèn vào với giá BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN trị null Vì khơng chèn q nhiều văn bị thiếu khóa đánh mục db.user.createIndex({name: 1}, {unique: true});  Giá trị lập lại: Chỉ mục khơng cho phép khóa có giá trị nhân bản, muốn đánh mục giá phải giữ văn CSDL xóa tất văn có giá trị nhân bản, thêm tuỳ chọn dropDups db.user.createIndex( {name : 1}, {unique : true, dropDups : true} ) e) Xóa mục (index)  Bạn muốn xóa loại bỏ mục bạn chạy cấu trúc lệnh sau:  Đầu tiên phải xem đánh mục getIndexes() [ { "_id" : 1, "key" : { "_id" : }, "ns" : "user.name", "name" : "HoangTan" }, { "_id" : 1, BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN "key" : { "cat" : -1 }, "ns" : "user.address", "name" : "Test" } ]  Tiếp theo xóa mục muốn xóa, ví dụ xóa mục "name": "HoangTan" db.pets.dropIndex( "HoangTan" ) 2.5 Ưu khuyết điểm MongoDB [2] 2.5.1 Ưu điểm  Open Source: MongoDB phần mềm mã nguồn mở miễn phí, có cộng đồng phát triển lớn  Hiệu cao: Tốc độ truy vấn (find, update, insert, delete) MongoDB nhanh hẳn so với hệ quản trị sở liệu quan hệ (RDBMS) Thử nghiệm cho thấy số lượng liệu đủ lớn tốc độ insert MongoDB nhanh tới gấp 100 lần so với MySQL BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN Hình 2.2 So sánh hiệu suất hoạt động MongoDB SQL Server 2008 [4] BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN MongoDB có hiệu cao vì:  MongoDB lưu liệu dạng JSON, insert nhiều đối tượng insert mảng JSON gần với trường hợp insert đối tượng  Dữ liệu MongoDB khơng có ràng buộc lẫn RDBMS, insert, delete hay update khơng cần phải thời gian kiểm tra xem có thỏa mãn bảng liên quan RDBMS  Dữ liệu MongoDB đánh mục (đánh index) nên truy vấn tìm nhanh  Khi thực insert, find,… MongoDB khóa thao tác khác lại, ví dụ thực find(), q trình find() mà có thêm thao tác insert, update dừng hết lại để chờ find() xong thực tiếp thao tác lại  Dữ liệu linh hoạt: MongoDB document database, liệu lưu dạng JSON, khơng bị bó buộc số lượng field, kiểu liệu,… Nên insert thoải mái liệu mà muốn  Rich Query Language: Ngôn ngữ truy vấn MongoDB phong phú có sẵn method để thực lệnh như: create, read, update, delete liệu  Tính sẵn có: MongoDB hỗ trợ replica set nhằm đảm bảo việc lưu khôi phục liệu  Khả mở rộng Horizontal Scalability: Trong MongoDB có khái niệm cluster cụm node chứa liệu giao tiếp với nhau, muốn mở rộng hệ thống ta cần thêm node với vào cluster: BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 0 Hình 2.3 Minh họa khả mở rộng MongoDB BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN 2.5.2 Khuyết điểm  MongoDB khơng có tính chất ràng buộc RDBMS dẫn đến dễ bị làm sai liệu  Không hỗ trợ join giống RDBMS nên viết function join code ta phải làm tay khiến cho tốc độ truy vấn bị giảm  Sử dụng nhiều nhớ: liệu lưu dạng key-value, collection khác BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN lại Không value key bị lặp hỗ trợ join nên bị thừa liệu (trong RDBMS ta cần lưu ghi ghi khác tham chiếu tới BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN BAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIENBAO.cao.mon.hoc.cac.he.co.so.du.LIEU.WEBSITE.QUAN.ly.NGHI.PHEP.SINH.VIEN

Ngày đăng: 24/12/2023, 15:00

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w