Chương 1 CƠ SỞ LÝ THUYẾT 1. Giới thiệu hệ quản trị cơ sở dữ liệu MongoDB 1. Tổng quan về MongoDB MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON.
MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh. MongoDB đã trở thành một trong những NoSQL database nổi trội nhất bấy giờ, được dùng làm backend cho rất nhiều website như eBay, SourceForge và The New York Times. Ưu điểm của MongoDB so với cơ sở dữ liệu quan hệ (RDBMS) Ít Schema hơn: MongoDB là một cơ sở dữ liệu dựa trên Document, trong đó một Collection giữ các Document khác nhau.
Số trường, nội dung và kích cỡ của Document này có thể khác với Document khác. Cấu trúc của một đối tượng là rõ ràng. Không có các Join phức tạp. Khả năng truy vấn sâu hơn.
MongoDB hỗ trợ các truy vấn động trên các Document bởi sử dụng một ngôn ngữ truy vấn dựa trên Document mà mạnh mẽ như SQL. MongoDB dễ dàng để mở rộng. SVTH: Đỗ Ngọc Quang Huy 3 Xây dựng hệ thông website quản lý ký túc xá trường đại học sư phạm kỹ thuật Việc chuyển đổi/ánh xạ của các đối tượng ứng dụng đến các đối tượng cơ sở dữ liệu là không cần thiết. Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ liệu nhanh hơn.
Do MongoDB sử dụng lưu trữ dữ 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, nên bạn muốn gì thì cứ insert vào thoải mái. 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 mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS. MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khá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: Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng. Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ 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. Nhược điểm của MongoDB 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ới mongoDB thì phải hết sức cẩn thận. 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. Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện.
SVTH: Đỗ Ngọc Quang Huy 4 Xây dựng hệ thông website quản lý ký túc xá trường đại học sư phạm kỹ thuật 1. Giới thiệu về Angular 1. Tổng quan về Angular Angular là một javascript framework do google phát triển để xây dựng các Single Page Application (SPA) bằng JavaScript , HTML và TypeScript. Angular cung cấp các tính năng tích hợp cho animation , http service và có các tính năng như auto- complete , navigation , toolbar , menus ,… Code được viết bằng TypeScript , biên dịch thành JavaScript và hiển thị tương tự trong trình duyệt.
Để học được angular thì bạn cần biết các kiển thức cơ bản sau: HTML CSS JavaScript TypeScript Document Object Model (DOM) 1. Lịch sử phát triển Angular js : Phiên bản đầu tiền của angular là AngularJS được bắt đầu từ năm 2009 và đc ra mắt vào 20/10/2010, do lập trình viên Misko Hevery tại Google viết ra như là một dự án kiểu “viết cho vui”. Lúc đó angular js được viết theo mô hình MVC (Model-View-Controller) trong đó : Model là thành phần trung tâm thể hiện hành vi của ứng dụng và quản lí dữ liệu. View được tạo ra dựa trên thông tin của Model.
Controller đóng vai trò trung gian giữa Model và View và để xử lý logic. SVTH: Đỗ Ngọc Quang Huy 5 Xây dựng hệ thông website quản lý ký túc xá trường đại học sư phạm kỹ thuật Angular 2: Sau phiên bản angular js thì vào tháng 3 năm 2015 phiên bản bản angular 2 ra đời nhằm thay thế Angular Js với các khái niệm mới nhằm đơn giản hóa và tối ưu cho quá trình phát triển sử dụng framework này. Angular 2 thay đổi hoàn toàn so với angular js bằng việc thay Controllers và $scope ( Angular js ) bằng components và directives. Components = directives + template , tạo nên view của ứng dụng và xử lí các logic trên view.
Angular 2 hoàn toàn được viết bằng Typescript. Angular 2 nhanh hơn angular js ,hỗ trợ đa nền tảng đa trình duyệt, cấu trúc cdoe được tổ chức đơn giản và dễ sử dụng hơn. Angular 4: Ra mắt vào tháng 3/2017 đây là một phiên bản nâng cấp từ Angular 2 nên kiến trúc không thay đổi nhiều ngoài việc giảm thiểu code được tạo ra từ đó giảm kích thước tệp được đóng gói xuống 60%, đẩy nhanh quá trình phát triển ứng dụng. Angular 5: Đã được phát hành vào ngày 1 tháng 11 năm 2017 với mục tiêu thay đổi về tốc độ và kích thước nên nó nhanh hơn và nhỏ hơn angular 4.
Các tính năng mới so với angular 4: Sử dụng HTTPClient thay vì sử dụng HTTP : bởi vì nó nhanh, an toàn và hiệu quả hơn. Với phiên bản Angular 5 mặc định sử dụng RxJs 5.5 Multiple export aliases : Một component có thể được xuất bằng nhiều bí danh (aliases) để giảm bớt quá trình di chuyển. Internationalized Pipes for Number, Date, and Currency: Các pipe mới được giới thiệu để tiêu chuẩn hóa tốt hơn. Tối ưu hóa build production bằng việc sử dụng công cụ build optimizer được tích hợp sẵn vào trong CLI.
Công cụ này tối ưu tree shark và loại bỏ code dư thừa. Cải thiện tốc độ biên dịch bằng việc dùng TypeScript transforms, giờ đây khi build sẽ sử dụng lệnh “ng serve –aot”. AOT sẽ cải thiện performace khi load page và nó được dùng để deploy app lên production Angular 6: Cập nhật CLI, command line interface: thêm 1 số lệnh mới như ng- update để chuyển từ version trước sang version hiện tại; ng-add để thêm các tính năng của ứng dụng để trở thành một ứng dụng web tiến bộ. Angular Element: Cho phép các component của Angular được triển khai dưới dạng component web, sau đó có thể được sử dụng trong bất kỳ trang HTML nào một cách dễ dàng.
Multiple Validators: cho phép nhiều Validators được áp dụng trên form SVTH: Đỗ Ngọc Quang Huy 6 Xây dựng hệ thông website quản lý ký túc xá trường đại học sư phạm kỹ thuật builder. Tree-shakeable providers: giúp loại bỏ mã code chết. Sử dụng RxJS 6 với syntax thay đổi. Angular 7: Được phát hành vào 18 tháng 10 năm 2018 với những thay đổi như: ScrollingModule : Để scroll load dữ liệu.
Drag and Drop: Chúng ta có thể dễ dàng thêm tính năng kéo và thả vào một mục.0 đã cập nhật RxJS 6.3 Angular 8: Ra mắt 28 tháng 5 năm 2019 với CLI workflow improvements, Dynamic imports for lazy routes …. Angular 9: Ra mắt mới đây 6 tháng 2 năm 2020,Angular 9 di chuyển tất cả các ứng dụng để sử dụng trình biên dịch Ivy và thời gian chạy theo mặc định. Angular đã được cập nhật để hoạt động với TypeScript 3. Lợi ích của Angular Angular được “chống lưng” bởi Google, giúp cho Developer có cảm giác được đảm bảo.
Mặc nhiên, họ sẽ ám thị rằng framework này khó mà bị “khai tử”, vì vậy cứ yên tâm sử dụng. Cộng đồng người dùng lớn nên nếu có thắc mắc gì cũng sẽ nhanh chóng được giải đáp. Giúp phát triển Ứng dụng trang đơn (Single-page Application). Đây là ứng dụng chạy trên browser mà không bắt buộc phải tải lại trang khi sử dụng.
Bootstrap và Responsive 1. Tổng quan về Bootstrap Bootstrap là front-end framework, là một bộ sưu tập miễn phí các công cụ để tạo ra các trang web và các ứng dụng web. Bootstrap bao gồm HTML và CSS dựa trên các mẫu thiết kế cho kiểu chữ, hình thức, các button và các thành phần giao diện khác, cũng như mở rộng tùy chọn JavaScript. Boostrap định nghĩa sẵn các class CSS giúp người thiết kế giao diện website tiết kiệm rất nhiều thời gian.
Các thư viện Bootstrap có những đoạn mã sẵn sàng cho chúng ta áp dùng vào website của mình mà không phải tốn quá nhiều thời gian để tự viết. Với Bootstrap, việc phát triển giao diện website để phù hợp với đa thiết bị trở nên dễ dàng hơn bao giờ hết. Bootstrap cung cấp tính năng responsive và mobile first, nghĩa là làm cho trang web có thể tự co giãn để tương thích với mọi thiết bị khác nhau, từ điện thoại di động đến máy tính bảng, máy tính xách tay, máy tính để bàn,. Một khía cạnh khác là responsive web design làm cho trang web cung cấp được trải nghiệm tuyệt vời cho người dùng trên nhiều thiết bị, kích SVTH: Đỗ Ngọc Quang Huy 7 Xây dựng hệ thông website quản lý ký túc xá trường đại học sư phạm kỹ thuật thước màn hình khác nhau.
Một trang có thể hoạt động tốt bất kể sự biến đổi sẽ cung cấp một trải nghiệm người dùng tốt và nhất quán hơn một trang được thiết kế cho một loại thiết bị và kích thước màn hình cụ thể. Giới thiệu về NodeJS 1. Tổng quan về NodeJS Node.js là một nền tảng JavaScript cực kì mạnh mẽ được sử dụng để phát triển ác ứng dụng chat online, các trang phát video trực tiếp, các ứng dụng một trang, và rất nhiều ứng dụng web khác. Được xây dựng trên JavaScript V8 Engine của Google Chrome, nó được sử dụng rộng rãi bởi cả các công ty lớn và các startup mơi nổi (Netflix, Paypal, NASA, và Walmart).js có mã nguồn mở, hoàn toàn miễn phí và được hàng ngàn lập trình viên trên thế giới sử dụng.