CHƯƠNG 1. Đặc trưng của JavaScript JavaScript là một ngôn ngữ lập trình động. Nó nhẹ và được sử dụng phổ biến nhất như một phần của các trang web, mà việc triển khai của chúng cho phép tập lệnh phía máy khách tương tác với người dùng và tạo các trang động. Nó là một ngôn ngữ lập trình thông dịch với khả năng hướng đối tượng.
Ưu điểm - Là một ngôn ngữ thông dịch nên không phần phải biên dịch code làm quá trình phát triển phần mềm rất nhanh. - Gần gũi, dễ học với các ngôn ngữ lập trình thông dụng - Là thành phần không thể thiếu đối với một website động. - Giúp client tương tác với server dễ dàng - Giúp giảm tải trên server vì nó có thể chạy tốt ở phía client - Phổ biến, có nhiều library/framework lớn (như ReactJs, VueJS, React Native, .) và có cộng động lập trình viên lớn - Linh hoạt, có thể dùng để phát triển ứng dụng phía client như ReactJs, server như NodeJs, desktop như Electron, mobile với React Native [4] 1. Nhược điểm - Javascript là một ngôn ngôn ngữ có tính chất “lỏng lẻo” nên nếu xử lý không khéo sẽ gây ra nhiều lỗi - Sự không thống nhất giữa các trình duyệt cũng khiến quá trình phát triển ứng dụng web trở trên khó khăn [4] 1.
Giới thiệu về NodeJs NodeJS là một nền tảng được xây dựng trên V8 JavaScript Engine – trình thông dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng. 14 PHẦN NỘI DUNG - CHƯƠNG 1. CƠ SỞ LÝ THUYẾT NodeJS được phát triển để có thể chạy trên nhiều hệ điều hành khác nhau: OS X, Microsoft Windows, Linux. Ưu điểm - Có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking).
Bạn có thể dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn nhất. - Dễ dàng mở rộng khi có nhu cầu phát triển ứng dụng. - Nhận và xử lý nhiều kết nối chỉ với một single-thread. Nhờ đó, hệ thống xử lý sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử Nodejs lý nhanh hơn rất nhiều.
- Có khả năng xử lý nhiều Request/s cùng một lúc trong thời gian ngắn nhất. - Có khả năng xử lý hàng ngàn Process cho hiệu suất đạt mức tối ưu nhất. - Phù hợp để xây dựng những ứng dụng thời gian thực như các ứng dụng chat, mạng xã hội … [5] 1. Nhược điểm - Nodejs gây hao tốn tài nguyên và thời gian.
Nodejs được viết bằng C++ và JavaScript nên khi xử lý cần phải trải qua một quá trình biên dịch. Nếu cần xử lý những ứng dụng tốn tài nguyên CPU thì không nên sử dụng Nodejs. - Khi xây dựng và triển khai dự án quan trọng thì Nodejs không phải là sự lựa chọn hoàn hảo nhất so với Java, C#, Python, … [5] 1. Lý do chọn NodeJs - NodeJS được viết bằng JavaScript với cộng đồng người dùng lớn mạnh.
Nếu cần hỗ trợ gì về NodeJS, sẽ nhanh chóng có người hỗ trợ. 15 PHẦN NỘI DUNG - CHƯƠNG 1. CƠ SỞ LÝ THUYẾT - Tốc độ xử lý nhanh. Nhờ cơ chế xử lý bất đồng độ (non-blocking), NodeJS có thể xử lý hàng ngàn kết nối cùng lúc mà không gặp bất cứ khó khăn nào.
- Dễ dàng mở rộng. Nếu có nhu cầu phát triển website thì tính năng dễ dàng mở rộng của NodeJS là một lợi thế cực kỳ quan trọng. - Sử dụng kết hợp với ExpressJS viết API cực kì đơn giản, hiệu quả và nhanh chóng với việc hỗ trợ router và middleware. Flutter và Dart 1.
Giới thiệu về Flutter và Dart Flutter là một framework phát triển ứng dụng di động đa nền tảng do Google tạo ra. Nó cho phép xây dựng các ứng dụng di động đẹp và tương tác cho cả Android và iOS, sử dụng cùng một mã nguồn duy nhất. Flutter sử dụng ngôn ngữ Dart làm ngôn ngữ chính. Và Dart là ngôn ngữ có cú pháp dễ đọc, hỗ trợ kiểu dữ liệu tĩnh và có hiệu suất cao.
Ưu điểm Flutter và Dart mang lại nhiều ưu điểm quan trọng khi phát triển ứng dụng di động. Dưới đây là một số ưu điểm của Flutter và Dart: Ưu điểm: Phát triển đa nền tảng: Flutter cho phép bạn phát triển ứng dụng đa nền tảng với một mã nguồn duy nhất. Điều này giúp tiết kiệm thời gian, công sức và nguồn lực phát triển. Giao diện người dùng đẹp mắt và tương tác: Flutter cung cấp một bộ công cụ và thư viện phong phú để xây dựng giao diện người dùng đẹp mắt và tương tác.
Hiệu suất cao: Flutter sử dụng thư viện Skia để vẽ giao diện người dùng, giúp tăng hiệu suất và tốc độ của ứng dụng. Flutter cũng hỗ trợ tính năng "Hot Reload", cho phép bạn thấy kết quả 16 PHẦN NỘI DUNG - CHƯƠNG 1. CƠ SỞ LÝ THUYẾT thay đổi ngay lập tức và nhanh chóng phản hồi trong quá trình phát triển. Cú pháp dễ đọc và dễ học: Dart có cú pháp gần giống với các ngôn ngữ lập trình phổ biến khác như JavaScript và Java.
Hỗ trợ đa luồng: Dart cung cấp cơ chế xử lý bất đồng bộ (asynchronous) và hỗ trợ lập trình đa luồng thông qua việc sử dụng Future và async/await. Điều này cho phép xử lý các tác vụ đồng thời và tối ưu hóa hiệu suất ứng dụng. Nhược điểm Nhược điểm của Flutter: Kích thước file APK: Ứng dụng Flutter có kích thước file APK lớn hơn so với các ứng dụng được viết bằng các công nghệ khác. Độ tin cậy của các giao diện người dùng hệ thống: Mặc dù Flutter cung cấp giao diện người dùng đồng nhất trên các nền tảng, nhưng giao diện người dùng hệ thống có thể cung cấp trải nghiệm tốt hơn đối với người dùng.
Vì vậy, trong một số trường hợp, việc sử dụng giao diện người dùng hệ thống có thể là lựa chọn tốt hơn. Hỗ trợ thư viện bên thứ ba: Hỗ trợ thư viện bên thứ ba có thể không phong phú như các framework khác. Hạn chế đối với ứng dụng phức tạp: Trong một số trường hợp, như ứng dụng yêu cầu xử lý dữ liệu lớn, hoặc tích hợp các thư viện phức tạp, có thể gặp khó khăn hơn so với sử dụng các công nghệ khác. Lý do chọn Flutter Flutter cho phép bạn xây dựng ứng dụng đa nền tảng với một mã nguồn duy nhất giúp tiết kiệm thời gian với giao diện người dùng đẹp và đồng nhất.
Ngoài ra, Flutter còn cho ra một hiệu suất khá tốt so với ứng dung native. 17 PHẦN NỘI DUNG - CHƯƠNG 1. Giới thiệu về MongoDB MongoDB là một dạng phần mềm cơ sở dữ liệu sử dụng mã nguồn mở NoSQL. Nó có thể hỗ trợ trên nhiều nền tảng khác nhau và được thiết kế với mục đích hướng đến đối tượng.
MongoDB hoạt động dựa vào các khái niệm Collection và Document. Đồng thời, nó có hiệu suất cao cùng với tính khả dụng tốt và dễ dàng mở rộng. Các Collection trong MongoDB có cấu trúc cực kỳ linh hoạt. Điều này cho phép dữ liệu không cần thiết phải tuân theo bất kỳ một dạng cấu trúc nào.
Vì thế, MongoDB có thể lưu trữ những dữ liệu có cấu trúc đa dạng và phức tạp. Dữ liệu trong MongoDB được lưu bằng định dạng kiểu JSON. Ưu điểm - Hiệu suất cao: MongoDB lưu trữ dữ liệu hầu hết tại RAM. Vậy tên tốc độ xử lý các câu truy vấn dữ liệu rất nhanh, đảm bảo một hiệu suất cao - Tốc độ cao và tính khả dụng: Vì là một hệ quản trị cơ sở dữ liệu NoSQL nên tốc độ của MongoDB rất nhanh vì không phải kiểm tra các ràng buộc khi thực hiện các thao tác ghi, xóa, sửa - Đơn giản dễ sử dụng và dễ cài đặt: MongoDB cung cấp các câu truy vấn rất dễ làm quen và dễ sử dụng.
Ngoài ra, việc cài đặt và cấu hình MongoDB cũng rất dễ dàng và nhanh chóng. - Tính mềm dẻo: Dữ liệu trong MongoDB không cần định nghĩa trước nên dữ liệu bên trong MongoDB không bị bó buộc có thể biến hóa để phù hợp với yêu cầu. - Khả năng mở rộng: MongoDB sử dụng sharding trong khi xử lý các tập dữ liệu lớn. Sharding là quá trình phân chia dữ liệu từ một tập hợp lớn và phân phối dữ liệu đó cho nhiều máy chủ.[8] 18 PHẦN NỘI DUNG - CHƯƠNG 1.
Nhược điểm - Giao dịch trong MongoDB: Giao dịch trong MongoDB không theo nguyên tắc ACID, MongoDB có thể bị mất, hỏng dữ liệu khi xảy cố diễn ra trong quá trình thực hiện giao dịch. - Truy xuất dữ liệu giữa các bảng: Việc truy xuất dữ liệu dựa trên nhiều bảng khác nhau trong MongoDB khó khăn hơn trong các hệ cơ sở quản trị sử dụng SQL, việc truy xuất này đòi hỏi nhiều câu truy vấn và tiêu tốn nhiều thời gian. - Tốc độ tìm kiếm chậm nếu đánh chỉ mục không đúng: nếu chỉ mục không được đánh một cách chuẩn xác thì MongoDB sẽ quét hết cả tài liệu để tìm, dẫn đến tốc độ tìm kiếm rất chậm. - Trùng lặp dữ liệu: Vì không có các ràng buộc nên việc trùng lặp dữ liệu có thể xảy ra thường xuyên.
Lý do sử dụng MongoDB MongoDB là một lựa chọn rất tốt cho những hệ thống cần tốc độ đọc ghi dữ liệu nhanh và không quá quan trọng tính ràng buộc dữ liệu, rất phù hợp cho một dự án mạng xã hội. MongoDB còn có thể mở rộng rất nhanh và đơn giản, với chi phí thấp. Kết hợp rất tốt với NodeJs, ReactJS và ExpressJS tạo nên công nghệ MERN stack rất mạnh mẽ. Giới thiệu về Redis Redis( Remote Dictionary Server) là một cơ sở dữ liệu hỗ trợ lưu trữ dữ liệu dạng key hay value, cache dữ liệu, hệ thống lưu trữ key/value này rất mạnh và phổ biến hiện nay.
Redis hỗ trợ các kiểu dữ liệu chủ yếu như String, List, Set, Zsets,. lưu trữ key-value trên RAM giúp tối ưu performance. [9] 19 PHẦN NỘI DUNG - CHƯƠNG 2. KHẢO SÁT HIỆN TRẠNG 1.
Ưu điểm - Siêu nhanh. Có thể nhanh hơn bất cơ sở dữ liệu nào. - Dễ cài đặt và sử dụng. - Không có thời gian chết hay ảnh hưởng tới hiệu suất khi mở rộng hoặc thu nhỏ.
Nhược điểm - Khi cache dữ liệu từ server nếu sử lý không khéo thì dễ bị hiện tượng dữ liệu cache và dữ liệu chính không trùng nhau, nhưng trong dự án này nhóm em chỉ sử dụng cho việc quản lý token nên không gặp phải. - Chi phí cao - Yêu cầu một lượng RAM lớn vì Redis lưu dữ liệu tại RAM. Lý do chọn Redis Trong Redis lưu trữ dữ liệu trong bộ nhớ RAM, cấu trúc dữ liệu dạng key – value đơn giản, nhờ vậy nó có tốc độ đọc và ghi cực nhanh.