đồ án 1 xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm dự án

94 0 0
Tài liệu đã được kiểm tra trùng lặp
đồ án 1 xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm dự án

Đ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

Nhận thấy được nhu cầu đó và với những kiến thức được trang bị tại trường đại học Công Nghệ Thông Tin, ĐHQG thành phố Hồ Chí Minh với sự hướng dẫn của thầy Nguyễn Tấn Toàn, nhóm chúng em

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Giáo viên hướng dẫn: ThS Nguyễn Tấn Toàn Nhóm sinh viên thực hiện:

TP HỒ CHÍ MINH, thứ Tư ngày 27 tháng 12 năm 2023

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 3

MỤC LỤC

MỤC LỤC 3

DANH MỤC HÌNH ẢNH 7

DANH MỤC BẢNG 10

LỜI NÓI ĐẦU 12

CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 13

2.2.2 Đặc tính cơ bản của spring boot 19

2.2.3 Ưu – nhược điểm 20

Trang 4

2.3.6 Ưu – nhược điểm 24

4.1.1 Sơ đồ Use-case role Seeker 29

4.1.2 Sơ đồ Use-case role Organizer 30

4.1.3 Sơ đồ Use-case role Admin 31

Trang 5

6.1.1 Sơ đồ liên kết màn hình role Seeker 47

6.1.2 Sơ đồ liên kết màn hình role Organizer 48

6.1.3 Sơ đồ liên kết màn hình role Admin 49

Trang 6

6.3.4 Các màn hình Organizer 76

CHƯƠNG 7 CÀI ĐẶT VÀ THỬ NGHIỆM 89

7.1 Môi trường triển khai và phát triển ứng dụng 89

7.1.1 Môi trường phát triển 89

7.1.2 Môi trường triển khai 89

7.2 Nhận xét và kết luận 89

7.2.1 Ưu điểm 90

7.2.2 Khuyết điểm 90

7.3 Hướng phát triển 90

7.4 Tài liệu tham khảo 91

7.5 Bảng phân công công việc 92

Trang 7

DANH MỤC HÌNH ẢNH

Hình 2.1 DOM 16

Hình 2.2 Virtual DOM 16

Hình 2.3 Spring Framework Runtime 19

Hình 2.4 Các breakpoint mặc định trong Tailwind CSS 22

Hình 2.5 Ví dụ về cách sử dụng breakpoint trong Tailiwnd CSS 23

Hình 2.6 Minh họa chỉnh sửa file config Tailwind CSS 24

Hình 3.1 Kiến trúc Microservice 27

Hình 4.1 Sơ đồ Use-case role Seeker 29

Hình 4.2 Sơ đồ Use-case role Organizer 30

Hình 4.3 Sơ đồ Use-case role Admin 31

Hình 5.1 Mô hình quan hệ của hệ thống 35

Hình 6.1 Sơ đồ liên kết màn hình role Seeker 47

Hình 6.2 Sơ đồ liên kết màn hình role Organizer 48

Hình 6.3 Sơ đồ liên kết màn hình role Admin 49

Trang 10

DANH MỤC BẢNG

Bảng 4.1 Danh sách vai trò của hệ thống 31

Bảng 4.2 Danh sách chức năng của hệ thống 32

Trang 11

Bảng 6.3 Danh sách các màn hình Seeker 51 Bảng 6.4 Danh sách các màn hình Organizer 53 Bảng 7.1 Bảng phân công công việc 92

Trang 12

LỜI NÓI ĐẦU

Những năm gần đây, vai trò của công nghệ thông tin trong đời sống con người đã ngày càng trở nên quan trọng Thực tế đã cho thấy, việc ứng dụng thành tựu công nghệ thông tin vào các công đoạn như sản xuất, quản lý,… đã tạo nên một lợi ích to lớn, dẫn đến cuộc cách mạng số hóa bùng nổ trong thời đại hiện nay Trong đó thị trường phát triển website là một thị trường có nhu cầu lớn ở Việt Nam và vẫn còn sẽ phát triển mạnh trong tương lai Bắt kịp với xu hướng thị trường đó kết hợp với kiến thức đang được học tại trường Nhóm chúng em quyết định xây dựng một website dễ sử dụng, thân thiện với những người không có kiến thức công nghệ thông tin và vẫn đảm bảo tính hiệu quả, đúng đắn của nó

Sau khi được học tập và rèn luyện dưới sự hướng dẫn của thầy Nguyễn Tấn Toàn, trường Đại học Công nghệ thông tin – ĐHQGHCM, nhóm sinh viên chúng em đã được trang bị những kiến thức để có thể phát triển một hệ thống website Vì vậy, chúng em lựa chọn thực hiện đồ án “Xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm, dự án” để có thêm kinh nghiệm và cái nhìn sâu hơn về quy trình phát triển một website thực tế Chúng em xin chân thành cảm ơn thầy Nguyễn Tấn Toàn đã tận tình truyền dạy những kiến thức cần thiết và hướng dẫn chúng em hoàn thành đồ án này Trong quá trình thực hiện đồ án, không thể tránh khỏi những sai sót, chúng em mong được nhận sự phản hồi góp ý của thầy và mọi người để chúng em rút kinh nghiệm và hoàn thiện hơn

Trân trọng cảm ơn thầy!

Trang 13

CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN

Chương 1, nhóm sẽ giới thiệu về đề tài “Xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm, dự án”, các mục tiêu, đối tượng ứng dụng hướng tới Cũng như là các công nghệ mà nhóm đã sử dụng

1.1 Lý do chọn đề tài

Trong thời đại của sự hợp tác mạnh mẽ, việc tìm kiếm đội nhóm phù hợp trở thành một thách thức đối với nhiều người tìm kiếm hay tổ chức và doanh nghiệp Dự án ngày càng trở nên phức tạp, đòi hỏi sự đa dạng trong đội nhóm với các kỹ năng và chuyên môn khác nhau Tuy nhiên, quá trình tìm kiếm đội nhóm vẫn gặp khó khăn do sự phân tán của nguồn lực và thông tin Nhìn chung, đề tài có một cơ hội lớn để phát triển một giải pháp đáp ứng những thách thức và nhu cầu đang tồn tại trong môi trường làm việc và quản lý dự án ngày nay

Nhận thấy được nhu cầu đó và với những kiến thức được trang bị tại trường đại học Công Nghệ Thông Tin, ĐHQG thành phố Hồ Chí Minh với sự hướng dẫn

của thầy Nguyễn Tấn Toàn, nhóm chúng em quyết định xây dựng “Hệ thống hỗ trợ tìm kiếm đội nhóm, dự án” nhằm đáp ứng những nhu cầu của người dùng và

phục vụ cho đồ án môn học lần này tại trường Thông qua đồ án lần này, nhóm chúng em mong rằng sẽ được học hỏi và trao dồi thêm được nhiều kinh nghiệm và kiến thức thực tế trong quá trình xây dựng một website thực tế, biết được thêm nhiều kiến thức mới về ngôn ngữ lập trình, công nghệ, cơ sở dữ liệu, quy trình triển khai một dự án website v.v

1.2 Mục tiêu của đề tài

Mục tiêu của đề tài là xây dựng và phát triển một hệ thống tự động và hiệu quả, hỗ trợ quá trình tìm kiếm đội nhóm, dự án, thỏa mãn các yếu tố:

- Xây dựng website hỗ trợ tìm kiếm đội nhóm, dự án Đồng thời, cho phép các tổ chức tạo và đăng tải những dự án, vị trí nhằm thu hút người dùng đăng ký tham gia

Trang 14

- Giao diện thân thiện, trực quan, dễ sử dụng tối ưu trải nghiệm người dùng - Độ tin cậy, bảo mật cao

- Đưa ra báo cáo, thống kê, cập nhật dữ liệu nhanh chóng, chính xác

Chúng em hy vọng đề tài sẽ không chỉ giải quyết một vấn đề thực tế mà còn tạo ra một giải pháp linh hoạt và hiệu quả cho môi trường làm việc và quản lý dự án hiện đại Đồng thời, nghiên cứu sâu hơn các công nghệ được sử dụng trong đề tài, qua đó làm hành trang phục vụ cho việc thực hiện các đồ án môn học khác và cho công việc trong tương lai sau này

1.3 Đối tượng

Hệ thống được xây dựng hướng đến nhiều đối tượng người dùng tùy thuộc vào mục đích của người dùng, chủ yếu hướng đến hai loại người dùng chính, Dưới đây là mô tả chi tiết về đối tượng của đề tài:

- Người tìm kiếm dự án, đội nhóm: Những người đang tìm kiếm dự án để tham

gia, bao gồm freelancer, nhà phân tích, chuyên gia trong các lĩnh vực khác nhau Họ sẽ sử dụng hệ thống để tìm kiếm và đăng ký tham gia vào các dự án phù hợp với kỹ năng và mong muốn của họ

- Các tổ chức muốn tìm kiếm thành viên: Những tổ chức muốn tìm kiếm thành

viên tham gia vào các dự án, hoặc vị trí Họ sẽ sử dụng hệ thống để tạo và đăng

tải những dự án, vị trí họ đang cần với những kỹ năng phù hợp 1.4 Công nghệ sử dụng

- Công cụ thiết kế UI: Figma - Công cụ vẽ sơ đồ: draw.io

- Front-end: framework ReactJs với IDE là Visual Studio Code - CSS framework: Tailwind CSS

- Back-end: framework Spring Boot với IDE là IntelliJ IDEA CE - Cơ sở dữ liệu: MongoDB

- Công cụ quản lý source code: Git, Github

Trang 15

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

Chương 2, nhóm sẽ giới thiệu về các công nghệ và cơ sở lý thuyết mà nhóm đã áp dụng trong dự án này

2.1 ReactJS 2.1.1 Giới thiệu

ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần trên website Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client nữa

Nhìn chung, các tính năng và điểm mạnh của ReactJS thường đến từ việc tập trung vào các phần riêng lẻ Do đó, khi làm việc với web thay vì toàn bộ ứng dụng của một trang web bằng ReactJS, các nhà phát triển tính năng có thể tách rời và chuyển đổi giao diện người dùng từ những cách phức tạp và biến nó thành những phần đơn giản hơn Điều này có nghĩa là kết xuất dữ liệu không chỉ ở phía máy chủ Thực hiện với các vị trí, nhưng bạn cũng có thể thực hiện tại vị trí khách hàng khi sử dụng ReactJS

2.1.2 JSX

Trọng tâm chính của bất kỳ website cơ bản nào đó là những HTML documents Trình duyệt Web đọc những document này để hiển thị nội dung của website trên máy tính, tablet, điện thoại của bạn Trong suốt quá trình đó, trình duyệt sẽ tạo ra một thứ gọi là Document Object Model (DOM) – một tree đại diện cho cấu trúc website được hiển thị như thế nào Lập trình viên có thể thêm bất kỳ dynamic content nào vào những dự án của họ bằng cách sử dụng ngôn ngữ JavaScript để thay đổi cây DOM

Trang 16

Hình 2.1 DOM

JSX (nói ngắn gọn là JavaScript extension) là một React extension giúp chúng ta dễ dàng thay đổi cây DOM bằng các HTML-style code đơn giản Và kể từ lúc ReactJS browser hỗ trợ toàn bộ những trình duyệt Web hiện đại, bạn có thể tự tin sử dụng JSX trên bất kỳ trình duyệt nào mà bạn đang làm việc

2.1.3 Virtual DOM

Nếu không sử dụng ReactJS (và JSX), website sẽ sử dụng HTML để cập nhật lại cây DOM cho chính bản nó (quá trình thay đổi diễn ra tự nhiên trên trang mà người dùng không cần phải tải lại trang), cách làm này sẽ ổn cho các website nhỏ, đơn giản, static website Nhưng đối với các website lớn, đặc biệt là những website thiên về xử lý các tương tác của người dùng nhiều, điều này sẽ làm ảnh hưởng performance website cực kỳ nghiêm trọng bởi vì toàn bộ cây DOM phải reload lại mỗi lần người dùng nhấn vào tính năng yêu cầu phải tải lại trang)

Hình 2.2 Virtual DOM

Trang 17

Tuy nhiên, nếu sử dụng JSX thì bạn sẽ giúp cây DOM cập nhật cho chính DOM đó, ReactJS đã khởi tạo một thứ gọi là Virtual DOM (DOM ảo) Virtual DOM (bản chất của nó theo đúng tên gọi) là bản copy của DOM thật trên trang đó, và ReactJS sử dụng bản copy đó để tìm kiếm đúng phần mà DOM thật cần cập nhật khi bất kỳ một sự kiện nào đó khiến thành phần trong nó thay đổi (chẳng hạn như user nhấn vào một nút bất kỳ)

2.1.4 Ưu – nhược điểm Ưu điểm:

- Reactjs cực kì hiệu quả: Reactjs tạo ra cho chính nó DOM ảo – nơi mà các component thực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều Reactjs cũng tính toán những thay đổi nào cần cập nhật len DOM và chỉ thực hiện chúng Điều này giúp Reactjs tránh những thao tác cần trên DOM mà nhiều chi phí

- Reactjs giúp việc viết các đoạn code JS dễ dàng hơn: Nó dung cú pháp đặc biệt là JSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript Ta có thể them vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là đặc tính thú vị của Reactjs Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX

- Nó có nhiều công cụ phát triển: Khi bạn bắt đầu Reactjs, đừng quên cài đặt ứng dụng mở rộng của Chrome dành cho Reactjs Nó giúp bạn debug code dễ dàng hơn Sau khi bạn cài đặt ứng dụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM như thể bạn đang xem cây DOM thông thường

- Render tầng server: Một trong những vấn đề với các ứng dụng đơn trang là tối ưu SEO và thời gian tải trang Nếu tất cả việc xây dựng và hiển thị trang đều thực hiện ở client, thì người dung sẽ phải chờ cho trang được khởi tạo và hiển thị lên Điều này thực tế là chậm Hoặc nếu giả sử người dung vô hiệu hóa Javascript thì sao? Reactjs là một thư viện component, nó có thể vừa render ở ngoài trình duyệt sử dụng DOM và cũng có thể render bằng các chuỗi HTML mà server trả về

Trang 18

- Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vì virtual DOM được cài đặt hoàn toàn bằng JS

- Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi

Nhược điểm:

- Reactjs chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là một MVC framework như những framework khác Đây chỉ là thư viện của Facebook giúp render ra phần view Vì thế React sẽ không có phần Model và Controller, mà phải kết hợp với các thư viện khác React cũng sẽ không có 2-way binding hay là Ajax

- Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại

- React khá nặng nếu so với các framework khác React có kích thước tương tương với Angular (Khoảng 35kb so với 39kb của Angular) Trong khi đó Angular là một framework hoàn chỉnh

- Khó tiếp cận cho người mới học Web 2.2 Spring Boot

2.2.1 Giới thiệu

Spring là một Java framework siêu to và khổng lồ, làm được đủ mọi thứ Nó được chia thành nhiều module, mỗi module làm một chức năng, ví dụ Spring Core, Web, Data access, AOP, Spring được xây dựng dựa trên 2 khái niệm nền tảng là Dependency injection và AOP (Aspect Oriented Programming)

Spring Boot là một dự án phát triển bởi JAV (ngôn ngữ java) trong hệ sinh thái Spring framework Nó giúp cho các lập trình viên chúng ta đơn giản hóa quá trình lập trình một ứng dụng với Spring, chỉ tập trung vào việc phát triển business cho ứng dụng

Spring Boot nổi bật trong số các framework khác vì nó cung cấp cho các kỹ sư phần mềm cấu hình nhanh, xử lý hàng loạt, quy trình làm việc hiệu quả và

Trang 19

nhiều công cụ khác nhau, giúp phát triển các ứng dụng dựa trên Spring mạnh mẽ và có thể mở rộng

Hình 2.3 Spring Framework Runtime

Spring khá mạnh mẽ nhưng việc cấu hình (config) dự án quá phức tạp Do đó Spring boot ra đời Spring boot có nhiều thư viện có sẵn và cấu trúc code cũng thành chuẩn mực, nên không cần quá quan tâm phải viết code thế nào cho tốt nữa, thay vào đó sẽ tập trung vào logic hơn

2.2.2 Đặc tính cơ bản của spring boot

Vì là một framework RAD nên Spring Boot mang trong nó nhiều đặc tính nổi trội phục vụ cho việc phát triển và cài đặt nhanh một ứng dụng chạy trên Java

Đặc tính đầu tiên có thể kể đến đó là Spring Boot cung cấp sẵn cho chúng ta một lớp có chứa hàm main và được hoạch định làm điểm mở đầu cho toàn bộ chương trình Lớp này được đặt tên là Spring Application, nó giúp khởi chạy các ứng dụng từ hàm main, khi chạy nó chúng ta chỉ cần gọi phương thức run

Spring Boot giúp giảm bớt độ phức tạp trong việc cấu hình ứng dụng trong trường hợp chúng ta sử dụng nhiều môi trường Với Profiles, Spring Boot cung

Trang 20

cấp cho người sử dụng một cách phân chia cấu hình cho từng môi trường Các bên thực hiện việc cấu hình ứng dụng hoàn toàn có thể được đánh dấu profiles để giới hạn thời điểm hay môi trường mà nó sẽ được tải các cấu hình lên ứng dụng

Externalized Configurations: Externalized Configuration cho phép bạn có khả năng cấu hình được từ bên ngoài Vì vậy, một ứng dụng được xây dựng có thể được vận hành và hoạt động trên nhiều môi trường khác nhau Để thực hiện Externalized Configuration bạn có thể sử dụng các file properties, YAML, các tham số command line hay các biến môi trường

Đặc tính cuối cùng mà bạn nên biết đó là tất cả các tính năng log nội bộ của Spring Boot đều sử dụng common logging Chúng được quản lý một cách mặc định, vì vậy không nên sửa các dependency logging nếu không được yêu cầu

2.2.3 Ưu – nhược điểm Ưu điểm:

- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng - Tự động cấu hình tất cả các components cho một ứng dụng Spring cấp sản xuất - Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc

triển khai ứng dụng được tăng tốc và hiệu quả hơn

- Điểm cuối HTTP, cho phép nhập các tính năng bên trong ứng dụng như chỉ số, tình trạng sức khỏe, v.v

- Tích hợp trơn tru với hệ sinh thái Spring

- Cộng đồng lớn và rất nhiều hướng dẫn, tạo điều kiện cho giai đoạn làm quen

Trang 21

2.3 Tailwind CSS 2.3.1 Giới thiệu

Tailwind CSS là một CSS framework theo phương hướng utility-first, nghĩa là các class trong framework này thuộc dạng “công cụ”, và ta cần kết hợp nhiều class khác nhau để đạt được thiết kế mong muốn

Nó khác với CSS framework như Bootstrap, chứa các class với thiết kế sẵn có, ta cần phải ghi đè CSS nếu thiết kế sẵn có đó không giống với ý muốn Cách tiếp cận này cho phép ta xây UI mà không cần hoặc động rất ít đến file CSS, ta chỉ cần sử dụng các utility class cung cấp bới Tailwind CSS

Điều này có một nhược điểm là do phải kết hợp nhiều class khác nhau, nó khiến cho thẻ HTML trở nên dài dòng và khó đọc Điều này mặc dù có phần đúng nhưng đối với bản thân em, sau khi đã hiểu cú pháp sử dụng CSS framework này thì việc đọ class HTML trở nên rất dễ đọc hơn là giấu hết mọi thứ trong một class duy nhất, ta có thể hình dung được giao diện sẽ nhìn như thế nào chỉ qua việc đọc các utility class

2.3.2 Pseudo-class ở dạng class

Các utility class trong Tailwind CSS đều có thể được áp dụng ở trạng thái nào đó mà ta muốn, ví dụ nếu ta muốn chữ có màu đỏ khi được hover, ta chỉ cần cho thẻ đó class là “hover:text-red” Các pseudo-class cũng có trong Tailwind CSS như focus, focus-within, group-hover, active, disabled,

Trang 22

Ta còn có thể gắn vào utility class tiền tố “dark:” để áp dụng class đó ở dạng dark mode

2.3.3 Just-in-Time Mode

Tính năng cho phép ta tạo các class tùy ý bằng cách đặt tên mà không cần phải định nghĩa nó trong file CSS hay trong file config của Tailwind CSS Ví dụ, ta muốn có class làm cho width của thẻ HTML có giá trị là 143px, ta có thể ghi tên class “w-[143px]” vào thẻ HTML, class này sẽ tự động được tạo mà không cần ta phải định nghĩa nó

Ngoài ra tính năng này còn giúp cho quá trình code development trở nên nhanh gọn hơn do mọi thứ được chạy ngay mỗi khi có thay đổi, ta không cần phải tự tay chạy lệnh build CSS

2.3.4 Responsive design dễ dàng

Các utility class trong Tailwind CSS đều có thể được áp dụng ở các breakpoint khác nhau bằng cách thêm ký hiệu break point trước utility class, điều này giúp ta xây dựng UI responsive 1 cách dễ dàng mà không cần phải động đến file CSS Mặc định có 5 breakpoint: sm, md, lg, xl, 2xl tương ứng với từng độ lớn khác nhau

Hình 2.4 Các breakpoint mặc định trong Tailwind CSS

Tất nhiên, ta có thể thêm các breakpoint khác mà ta muốn và có thể áp dụng breakpoint tự tạo đó cho các utility class giống như breakpoint mặc định

Trang 23

Hình 2.5 Ví dụ về cách sử dụng breakpoint trong Tailiwnd CSS

2.3.5 Mở rộng và thay đổi

Ta có thể thêm, bớt hoặc thêm các class trong Tailwind CSS, thậm chí ta có thể sửa class sẵn có bằng cách chỉnh sửa file “tailwind.config.js”

Trang 24

Hình 2.6 Minh họa chỉnh sửa file config Tailwind CSS

2.3.6 Ưu – nhược điểm Ưu điểm:

- Xây dựng UI rất tiện do ta không cần phải viết CSS, chỉ cần sử dụng các class

có sẵn trong Tailwind CSS, giúp đẩy nhanh tiến độ xây dựng ứng dụng

- Không phải lo về tính compatibility của class so với các browser khác nhau

Nhược điểm:

- Cách sử dụng Tailwind CSS không tuân theo “best practice” khi viết class CSS, dẫn đến nhiều lập trình viên không đồng tình với cách Tailwind CSS được thiết kế Việc phải gán quá nhiều class khác nhau để thiết kế một UI nào đó làm cho

thẻ nhìn dài dòng, việc đây là lợi thế hay điểm yếu là điều còn nhiều bàn cãi

- Không phù hợp cho project không sử dụng component framework, do sẽ phải

lặp đi lặp lại hàng loạt tên class cho những thẻ có UI giống nhau 2.4 MongoDB

2.4.1 Giới thiệu

MongoDB, được biết đến như cơ sở dữ liệu NoSQL phổ biến nhất, là cơ sở dữ liệu định hướng tài liệu mã nguồn mở Thuật ngữ 'NoSQL' có nghĩa là 'không có mối quan hệ' (Non-relational) Điều đó có nghĩa là MongoDB không dựa trên cấu trúc cơ sở dữ liệu quan hệ giống như bảng mà cung cấp một cơ chế

Trang 25

hoàn toàn khác để lưu trữ và truy xuất dữ liệu Định dạng lưu trữ này được gọi là BSON (tương tự như định dạng JSON)

CSDL SQL sẽ lưu trữ dữ liệu ở định dạng bảng Dữ liệu này được lưu trữ trong một mô hình dữ liệu được xác định trước, điều này sẽ không linh hoạt lắm đối với các ứng dụng đang phát triển nhanh trong thế giới thực ngày nay Các ứng dụng hiện đại cần phải được kết nối với nhau, xã hội hóa và có tính tương tác hơn Các ứng dụng ngày nay đang ngày càng lưu trữ nhiều dữ liệu và các dữ liệu đó đang cần phải được truy cập với tốc độ cao hơn

Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) không phải là lựa chọn chính xác khi xử lý dữ liệu lớn do thiết kế của chúng không thể mở rộng theo quy mô ngang Nếu CSDL chạy trên một máy chủ thì nó sẽ đạt đến giới hạn mở rộng Cơ sở dữ liệu NoSQL có khả năng mở rộng hơn và cung cấp hiệu suất vượt trội MongoDB là một cơ sở dữ liệu NoSQL có thể mở rộng quy mô bằng cách thêm ngày càng nhiều máy chủ và tăng hiệu suất với mô hình tài liệu linh hoạt của nó

2.4.2 Các tính năng chính của MongoDB

- Document Oriented: MongoDB lưu trữ subject chính với số lượng documents

tối thiểu chứ không phải bằng cách chia nó thành nhiều cấu trúc quan hệ như RDBMS

- Indexing: Nếu không lập chỉ mục, CSDL sẽ không truy vấn hiệu quả vì phải

quét mọi tài liệu của tập hợp để chọn những tài liệu phù hợp cho việc truy vấn đó Vì vậy, để tìm kiếm hiệu quả, Indexing là điều bắt buộc và MongoDB sử dụng nó để xử lý khối lượng dữ liệu khổng lồ trong thời gian rất ngắn

- Scalability: MongoDB mở rộng quy mô theo chiều ngang bằng cách sử dụng

sharding (phân vùng dữ liệu trên các máy chủ khác nhau)

- Replication and High Availability: MongoDB tăng tính khả dụng của dữ liệu

với nhiều bản sao dữ liệu trên các máy chủ khác nhau Bằng cách cung cấp bản dự phòng, nó bảo vệ cơ sở dữ liệu khỏi các lỗi phần cứng

- Aggregation: Các hoạt động tổng hợp xử lý các bản ghi dữ liệu và trả về kết

quả tính toán Nó tương tự như mệnh đề GROUPBY trong SQL

Trang 26

2.4.3 Vì sao chọn MongoDB

MongoDB hiện cung cấp hỗ trợ trình điều khiển chính thức cho tất cả các ngôn ngữ lập trình phổ biến như C, C ++, Rust, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go và Erlang

MongoDB đã được sử dụng làm phần mềm phụ trợ bởi một số trang web và dịch vụ lớn bao gồm EA, Cisco, Shutterfly, Adobe, Ericsson, Craigslist, eBay và Foursquare

Trang 27

CHƯƠNG 3 THIẾT KẾ KIẾN TRÚC

Chương 3, nhóm sẽ giới thiệu về thiết kế kiến trúc của hệ thống “Xây dựng hệ thống hỗ trợ tìm kiếm đội nhóm, dự án”

Hình 3.1 Kiến trúc Microservice

Trang 28

3.2 Mục đích lựa chọn kiến trúc

- Hoạt động độc lập, linh hoạt, có tính chuyên biệt cao: Do không bị ràng buộc bởi những yêu cầu chung, nên mỗi service nhỏ có thể tự do lựa chọn công nghệ, nền tảng phù hợp

- Nâng cao khả năng xử lý lỗi: Với mô hình này, một service bất kỳ nào gặp lỗi sẽ không gây ra ảnh hưởng đối với những bộ phận còn lại Việc khắc phục lỗi trên quy mô hẹp cũng sẽ được tiến hành một cách dễ dàng

- Thuận tiện trong nâng cấp, mở rộng: Tương tự như trường hợp xử lý lỗi, việc nâng cấp, bảo trì service hoàn toàn độc lập sẽ không làm gián đoạn quá trình vận hành của cả phần mềm Nhờ vậy, những phiên bản mới có thể được cập nhật thường xuyên

- Đơn giản hóa trong quản lý và kiểm thử: Với từng service nhỏ, các bước quản lý, tính toán và kiểm soát, xử lý lỗi sẽ trở nên đơn giản và nhanh chóng hơn so với cả phần mềm

Trang 29

CHƯƠNG 4 THIẾT KẾ HỆ THỐNG

Chương 4, nhóm sẽ trình bày về các vai trò trong hệ thống và các chức năng tương ứng của chúng

4.1 Sơ đồ Use-case

4.1.1 Sơ đồ Use-case role Seeker

Hình 4.1 Sơ đồ Use-case role Seeker

Trang 30

4.1.2 Sơ đồ Use-case role Organizer

Hình 4.2 Sơ đồ Use-case role Organizer

Trang 31

4.1.3 Sơ đồ Use-case role Admin

Hình 4.3 Sơ đồ Use-case role Admin

4.2 Danh sách vai trò

Bảng 4.1 Danh sách vai trò của hệ thống

theo nhu cầu của bản thân và hỗ trợ ứng tuyển vào các Vacancy Đồng thời quản lý thông tin về hồ sơ, resume cá nhân, các danh mục yêu thích và các Vacancy đã ứng tuyển

Trang 32

2 Organizer Cho phép tạo, đăng tải và quản lý các Dự án, Vacancy đang mong muốn mọi người (Seeker) tham gia vào Đồng thời, quản lý thông tin hồ sơ cá nhân, danh mục yêu thích (Favourite Seeker) và tìm kiếm người ứng tuyển phù hợp (Applicants) 3 Admin Cấp quyền xét duyệt cho các Vacancy, Dự án được tạo bởi

Organizer Đồng thời quản lý, xử lý các báo cáo của Vacancy, quản lý các lĩnh vực của Dự án và theo dõi lịch sử thanh toán

4.3 Danh sách chức năng

Bảng 4.2 Danh sách chức năng của hệ thống

Seeker

1 Đăng nhập

Đăng nhập vào hệ thống / Quên mật khẩu / Xác thực tài khoản / Đăng xuất khỏi tài khoản

3 Quản lý hồ sơ cá nhân

Cập nhật profile cá nhân / Đổi mật khẩu / Cập nhật resume cá nhân / Quản lý CV upload

4 Thống kê

Xem số lượng lượt xem profile / Xem thông báo về trạng thái ứng tuyển / Xem Vaccancy đã ứng tuyển

5 Tìm kiếm đội nhóm, tổ chức, công ty

Xem chi tiết đội nhóm, tổ chức / Cập nhật Tổ chức yêu thích / Liên hệ với Tổ chức / Xem danh mục dự án của Tổ chức

6 Tìm kiếm Dự án

Xêm chi tiết Dự án / Cập nhật Dự án yêu thích / Xem nhân sự dự án / Xem chi tiết nhân sự dự án / Share dự án / Xem danh mục Vacancy của Dự án

7 Tìm kiếm Vacancy Xem chi tiết Vacancy / Share Vacancy / Ứng tuyển vào Vacancy / Báo cáo

Trang 33

Vacancy vi phạm / Cập nhật Vacancy yêu thích /

3 Quản lý hồ sơ cá nhân Cập nhật profile cá nhân / Đổi mật khẩu

4 Thống kê

Xem người ứng tuyển gần đây / Xem số lượng Dự án, Vacancy, số lượt xem profile/ Xem thông báo mới

5 Tạo mới Vacancy Tạo mới Vaccancy để yêu cầu xét duyệt

6 Quản lý Vacancy

Cập nhật Vacancy / Tra cứu Vacancy / Xóa Vacancy / Thanh toán nếu đã được duyệt / Xem chi tiết Vacancy / Quản lý Vacancy đang dang dở / Quản lý nhân sự Vacancy / Mời tham gia lại / Block thành viên / Xóa thành viên

7 Quản lý người ứng tuyển

Từ chối ứng viên / Chấp nhậm ứng viên / Xem danh sách người ứng tuyển / Xem chi tiết ngừơi ứng tuyển

8 Tìm kiếm ứng viên

Xem chi tiết ngừơi ứng tuyển / Gửi mail giới thiệu về Dự án, Vacancy của tổ chức / Cập nhật người ứng tuyển yêu thích / Liên hệ với ứng viên

9 Xem danh mục seeker yêu thích

Xem chi tiết thông tin người ứng tuyển / Cập nhật người ứng tuyển yêu thích

người dùng / Đổi mật khẩu

Trang 34

2 Quản lý ngành nghề

Thêm ngành nghề mới / Cập nhật ngành nghề / Tra cứu ngành nghề / Xóa ngành nghề

3 Thống kê

Xem Project, Vacancy, Tổ chức đăng ký gần đây / Doanh thu tháng / Xem thông báo giao dịch gần đây / Số lượng Dự án, Vacancy

4 Quản lý Tổ chức

Cập nhật trạng thái hoạt động của Tổ chức / Xem chi tiết Tổ chức / Tìm kiếm Tổ chức / Xem danh mục Dự án của Tổ chức

5 Quản lý Dự án được tạo

Xét duyệt Dự án / Xem chi tiết Dự án / Tìm kiếm dự án / Cập nhật trạng thái của dự án / Xem danh mục Vacancy của dự án

6 Quản lý Vacancy được tạo

Tìm kiếm vacancy / Xem chi tiết Vacancy / Xét duyệt vacancy / Cập nhật trạng thái block của vacancy

7 Quản lý báo cáo của Vacancy đã upload

Tìm kiếm Vacancy bị báo cáo / Xem danh sách báo cáo của Vacancy / Cập nhật trạng thái block của vacancy

Trang 35

CHƯƠNG 5 THIẾT KẾ DỮ LIỆU

Chương 5, nhóm tiến hành thiết kế dữ liệu Xây dựng sơ đồ mô hình quan hệ của hệ thống và mô tả chi tiết các bảng dữ liệu trong đó

5.1 Mô hình quan hệ

Hình 5.1 Mô hình quan hệ của hệ thống

Trang 36

5.2 Danh sách các bảng

Bảng 5.1 Danh sách các bảng

một dự án

tìm kiếm dự án

tìm kiếm đội nhóm

tìm kiếm dự án

12 OCCUPATION Thể hiện thông tin về các lĩnh vực trên thực tế

14 SOCIAL NETWORK Thể hiện thông tin về các trang mạng xã hội của người dùng ứng dụng

15 FAVOURITEUSER Thể hiện các thông tin những người yêu thích một người dùng

16 SHORTLISTEDUSER Thể hiện thông tin về những người mà một người dùng quan tâm

17 NOTIFICATION Thể hiện thông tin về các thông báo mà một người dùng nhận được

18 PARTICIPANTS Thể hiện thông tin về những người tham gia vào dự án

Trang 37

19 APPLICANT Thể hiện thông tin về những người ứng tuyển vào dự án

kiếm đội nhóm về dự án

21 PROJECTPAYMENT Thể hiện thông tin thanh toán của một dự án

22 PAYMENTDETAIL Thể hiện thông tin chi tiết thanh toán của một dự án

5.3 Mô tả từng bảng dữ liệu 5.3.1 Bảng PROJECT

Bảng 5.2 Bảng PROJECT

PROJECT

đơn vị thời gian period

Trang 38

5.3.2 Bảng VACANCY

Bảng 5.3 Bảng VACANCY

VACANCY

theo đơn vị salaryUnit

5.3.3 Bảng USER

Bảng 5.4 Bảng USER

USER

người dùng

người dùng

Trang 39

7 phoneNumber string Số điện thoại của người dùng

dùng

5.3.4 Bảng SEEKER

Bảng 5.5 Bảng SEEKER

SEEKER

dùng

5.3.5 Bảng ORGANIZER

Bảng 5.6 Bảng ORGANIZER

ORGANIZER

Trang 40

của file CV

5.3.7 Bảng USERSKILL

Bảng 5.8 Bảng USERSKILL

USERSKILL

5.3.8 Bảng SKILL

Bảng 5.9 Bảng SKILL

SKILL

Ngày đăng: 15/05/2024, 09:30

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan