CHƯƠNG I: GIỚI THIỆU CHUNG I. ĐỀ TÀI: - Công nghệ tìm hiểu: MERN (MongoDB, ExpressJS, ReactJS, NodeJS). - Ứng dụng xây dựng: Website Social Butterfly (Website mạng xã hội). LÝ DO CHỌN ĐỀ TÀI: Những năm gần đây, mạng xã hội (MXH) đã có bước phát triển mạnh mẽ, tác động lớn đến đời sống xã hội ở hầu hết các quốc gia trên thế giới, trong đó có Việt Nam.
MXH đã trở thành một thuật ngữ phổ biến với những tính năng đa dạng cho phép người dùng kết nối, chia sẻ, tiếp nhận thông tin một cách nhanh chóng, hiệu quả. Nói chung, mạng xã hội đã và đang ảnh hưởng rất lớn (cả tích cực và tiêu cực) đến mọi hoạt động và sinh hoạt của con người, nhất là giới trẻ. Với đặc điểm nổi trội là tính kết nối nhanh, chia sẻ rộng, chỉ cần một chiếc điện thoại hay một máy tính kết nối Internet, chúng ta có thể truy cập và tham gia vào rất nhiều trang mạng như: Facebook, Zalo, Youtube, Twitter… trong đó, phổ biến nhất là Facebook. Mặc dù mục đích, cách thức, mức độ tham gia các trang mạng xã hội của mỗi người khác nhau nhưng có một điểm chung đó là xem nó như là một phần không thể thiếu trong đời sống tinh thần của con người.
Đặc biệt, trong giai đoạn phòng và chống dịch Covid-19 vô cùng căng thẳng và khó khăn như hiện nay, dưới sự chỉ đạo của Nhà nước về các quy định giãn cách xã hội, hạn chế tụ tập đông người, cũng như hạn chế các hoạt động giao tiếp hằng ngày giữa người với người với nhau, điều này đã ảnh hưởng rất nhiều đến trải nghiệm của người dùng đối với các nhu cầu hằng ngày, trong đó có nhu cầu giao tiếp với người thân, bạn bè, bạn đồng nghiệp và các mối quan hệ khác. Nhận thấy điều đó, cùng với vị trí và vai trò của thời đại công nghệ 5.0, nhóm chúng em quyết định làm WEBSITE MẠNG XÃ HỘI – SOCIAL BUTTERFLY để trở thành phương tiện kết nối từ xa hỗ trợ quá trình giao tiếp giữa người với người. Ứng dụng này không những có thể đảm bảo an toàn sức khỏe cho người dùng mà còn có thể đáp ứng được các nhu cầu cần thiết về quá trình giao tiếp như trò chuyện, chia sẻ những trải nghiệm cuộc sống thông qua những bài viết, tương tác trực tiếp qua các cuộc gọi. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 9 III.
TÓM TẮT ĐỀ TÀI: Website mạng xã hội là cầu nối hỗ trợ việc giao tiếp giữa người với người dưới nhiều hình thức đa dạng như là nhắn tin, tương tác hay bình luận bài viết, trò chuyện qua cuộc gọi, vv… Trong bối cảnh công nghệ đang ngày càng chiếm ưu thế và đóng vai trò to lớn trong các hoạt động kinh tế lẫn cuộc sống con người hiện nay, đặc biệt là tình hình dịch bệnh Covid, vì chủ trương hạn chế lây lan, bảo vệ sức khỏe và tính mạng con người, khi đó hoạt động giao tiếp hằng ngày không thể nào diễn ra một các trực tiếp với nhau được bởi vì các hoạt động tụ tập thành nhóm bị hạn chế, thậm chí là cấm. Khi đó, một bài toán xã hội được đặt ra là làm thế nào để giữa người với người vẫn có thể giao tiếp được với nhau và vẫn có thể đảm bảo sức khỏe và tuân theo chủ trương phòng chống dịch bệnh của nhà nước. Bên cạnh đó, một số người mắc phải hội chứng ngại giao tiếp mặt đối mặt, đối với các hoạt động giao tiếp trực tiếp họ thường lúng túng và không thể giao tiếp một cách trôi chảy như những người bình thường thường hay làm, ngược lại họ lại cảm thấy dễ dàng giao tiếp, bày tỏ thông qua các phương tiện thứ ba khác. Mặt khác, rào cản về địa lý cũng là một điều gây cản trở quá trình giao tiếp.
Vì vậy, mạng xã hội ra đời với mục tiêu giải quyết được các vấn đề trên. MỤC TIÊU CỦA ĐỀ TÀI: - Xây dựng Website mạng xã hội cung cấp các chức năng cơ bản hỗ trợ trong quá trình giao tiếp từ xa giữa người với người với nhau, cụ thể là việc nhắn tin trao đổi, chia sẽ cuộc sống hằng ngày thông qua các bài đăng, trò chuyện qua cuộc gọi, video call, tương tác bình luận giữa nhiều người dùng với nhau trên một bài viết, vv… - Nghiên cứu các công nghệ liên quan để phát triển ứng dụng. - Đưa ra các báo cáo và tài liệu cho môn học. PHƯƠNG PHÁP NGHIÊN CỨU: - Nghiên cứu các tài liệu về nghiệp vụ liên quan cách xây dựng giao diện và các hoạt động của các trang mạng xã hội.
- Tiến hình khảo sát lấy yêu cầu thực tế từ người dùng. - Tham khảo một số website mạng xã hội như: Facebook, Instagram, Zalo, Twitter, vv… - Nghiên cứu các tài liệu, video hướng dẫn liên quan cách sử dụng các công nghệ mới vào quá trình xây dựng website, cụ thể là cách xây dựng theo MERN. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 10 VI. Ý NGHĨA VÀ KẾT QUẢ CỦA HƯỚNG ĐỀ TÀI: 1.
Về mặt sản phẩm: - Tạo ra được website mạng xã hội, đảm bảo có thể kết nối giữa các người dùng từ xa. - Các chức năng hướng về người dùng. - Cung cấp được các chức năng cơ bản của một website mạng xã hội cần có, đặc biệt là các vấn đề liên quan phản hồi, tương tác theo thời gian thực. Về mặt tài liệu: - Các thông tin được ghi trong tài liệu trở thành nguồn tham khảo, kiến thức cho việc áp dụng các công nghệ đã sử dụng vào các đồ án xây dựng ứng dụng có liên quan như: MongoDB, ExpressJS, ReactJS, NodeJS vv… ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 11 CHƯƠNG II: CÔNG NGHỆ LIÊN QUAN I.
TÌM HIỂU VỀ MONGODB: 1. NoSQL là gì: - NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL. - NoSQL được phát triển trên Javascript Framework 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 trị cơ sở dữ liệu quan hệ) về tốc độ, tính 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óa ngoại, khóa chính, kiểm tra ràng buộc vv… - NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng. - NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable, vv… ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 12 2. MongoDB là gì: - MongoDB là một hệ quản trị 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. - 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 vấn sẽ rất nhanh.
- 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ử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng - So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS. - Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lư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 trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB. Ưu điểm của MongoDB: - 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. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 13 - 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. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 14 II.
TÌM HIỂU VỀ EXPRESSJS: 1. ExpressJS là gì: - ExpressJS hay còn được viết là Express js, Express. Đây là một framework mã nguồn mở miễn phí cho NodeJS.js được sử dụng trong thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng. - Vì ExpressJS chỉ yêu cầu ngôn ngữ lập trình Javascript nên việc xây dựng các ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.