Đồ án tốt nghiệp: Tìm hiểu NoSQL và xây dựng website tìm kiếm việc làm

Khóa luận tốt nghiệp ngành Công nghệ thông tin, nghiên cứu về cơ sở dữ liệu NoSQL và ứng dụng vào việc xây dựng website tìm kiếm việc làm chi tiết.

Trường đại học

Trường Đại Học Hải Phòng

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2024

82
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khái niệm và lịch sử phát triển của NoSQL

NoSQL (Not Only SQL) là một hệ quản trị cơ sở dữ liệu hiện đại, được thiết kế để xử lý các dữ liệu có cấu trúc linh hoạt và khối lượng lớn. Khác với các hệ quản trị cơ sở dữ liệu quan hệ truyền thống như MySQL, NoSQL cho phép lưu trữ dữ liệu dưới nhiều định dạng khác nhau mà không cần tuân thủ một lược đồ cố định. Công nghệ này ra đời vào đầu những năm 2000 khi các công ty công nghệ lớn như Google, Amazon và Facebook cần xử lý lượng dữ liệu khổng lồ. NoSQL đã mở ra một hướng đi mới trong phát triển ứng dụng web hiện đại, đặc biệt là các ứng dụng yêu cầu khả năng mở rộng cao và tính sẵn sàng liên tục.

1.1. Định nghĩa và đặc điểm NoSQL

NoSQL là hệ thống cơ sở dữ liệu phi quan hệ, được tối ưu hóa cho các ứng dụng đòi hỏi xử lý dữ liệu lớn, đa dạng và phức tạp. Các đặc điểm chính bao gồm: không yêu cầu lược đồ cố định, hỗ trợ mở rộng ngang (horizontal scaling), tốc độ truy vấn nhanh, và khả năng phục hồi sau sự cố cao. Hệ quản trị NoSQL có thể xử lý dữ liệu bán cấu trúc và không cấu trúc một cách hiệu quả hơn so với các hệ thống quan hệ.

1.2. Sự phát triển và ứng dụng thực tế

Từ khi ra đời, NoSQL đã được áp dụng rộng rãi trong các nền tảng công nghệ hàng đầu. Các ứng dụng như website tìm kiếm việc làm cần quản lý hồ sơ cá nhân, tin tuyển dụng và thông tin ứng viên phức tạp. MongoDB và các công nghệ NoSQL khác giúp các nền tảng này hoạt động mượt mà, xử lý hàng triệu yêu cầu mỗi ngày mà vẫn đảm bảo hiệu suất cao.

II. Các loại cơ sở dữ liệu NoSQL

Thị trường hiện nay cung cấp nhiều loại cơ sở dữ liệu NoSQL khác nhau, mỗi loại được tối ưu hóa cho những trường hợp sử dụng cụ thể. Để xây dựng một website tìm kiếm việc làm hiệu quả, cần lựa chọn loại NoSQL phù hợp với nhu cầu lưu trữ và xử lý dữ liệu. Các loại chính bao gồm cơ sở dữ liệu dạng tài liệu (Document Store), cơ sở dữ liệu khóa-giá trị (Key-Value Store), cơ sở dữ liệu đồ thị (Graph Database), và cơ sở dữ liệu dạng cột (Column Family). Mỗi loại có ưu nhược điểm riêng trong việc xử lý các tình huống khác nhau, từ lưu trữ hồ sơ ứng viên đến quản lý mối quan hệ giữa người tìm việc và nhà tuyển dụng.

2.1. Cơ sở dữ liệu dạng tài liệu Document Store

Document Store như MongoDB lưu trữ dữ liệu dưới dạng tài liệu JSON hoặc BSON. Loại này rất phù hợp cho website tìm kiếm việc làm vì nó cho phép lưu trữ hồ sơ ứng viên với các trường thông tin linh hoạt, từ kỹ năng, kinh nghiệm đến các yêu cầu công việc đa dạng. MongoDB hỗ trợ truy vấn phức tạp và lập chỉ mục, giúp tìm kiếm việc làm nhanh chóng.

2.2. Cơ sở dữ liệu khóa giá trị Key Value Store

Loại này lưu trữ dữ liệu dưới dạng cặp khóa-giá trị, được sử dụng phổ biến cho bộ nhớ cache. Trong website tìm kiếm việc làm, có thể dùng Key-Value Store để lưu trữ thông tin session người dùng, tin tuyển dụng được xem gần đây, hoặc các tin được yêu thích. Loại này nhanh nhất nhưng kém linh hoạt hơn Document Store.

III. MongoDB và ứng dụng trong website tìm kiếm việc làm

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL dạng tài liệu được lựa chọn phổ biến nhất cho các website tìm kiếm việc làm hiện đại. Nó cung cấp khả năng lưu trữ dữ liệu JSON linh hoạt, hỗ trợ truy vấn mạnh mẽ và tối ưu hóa hiệu suất. Trong đề án xây dựng website tìm kiếm việc làm của trường Đại học Hải Phòng, MongoDB được sử dụng để quản lý dữ liệu hồ sơ cá nhân, tin tuyển dụng, lịch sử ứng tuyển và thông tin nhà tuyển dụng. So với MySQL (cơ sở dữ liệu quan hệ), MongoDB có tốc độ xử lý insert và truy vấn nhanh hơn, đặc biệt khi làm việc với dữ liệu có cấu trúc đa dạng. Khả năng mở rộng ngang của MongoDB cho phép hệ thống xử lý hàng triệu người dùng đồng thời mà không ảnh hưởng đến hiệu suất.

3.1. Các khái niệm cơ bản trong MongoDB

MongoDB sử dụng các khái niệm như Collection (tương tự bảng), Document (tương tự dòng), Field (tương tự cột). Mỗi document có thể có cấu trúc khác nhau, cho phép lưu trữ dữ liệu hồ sơ ứng viên với số lượng kỹ năng khác nhau mà không cần cấu trúc cứng nhắc. MongoDB cung cấp các phương thức truy vấn như find(), insert(), update() và delete() để quản lý dữ liệu website tìm kiếm việc làm hiệu quả.

3.2. So sánh hiệu năng MongoDB với MySQL

Kết quả thử nghiệm so sánh MongoDBMySQL cho thấy: MongoDB nhanh hơn khi insert dữ liệu lớn (dữ liệu không cấu trúc), truy vấn dữ liệu phức tạp; MySQL tốt hơn cho các giao dịch ACID yêu cầu tính toàn vẹn cao. Cho website tìm kiếm việc làm, MongoDB là lựa chọn tốt hơn do tính linh hoạt và tốc độ xử lý cao.

IV. Thiết kế và triển khai hệ thống website tìm kiếm việc làm

Thiết kế website tìm kiếm việc làm sử dụng NoSQL MongoDB đòi hỏi phải xác định rõ mục đích, mục tiêu và kiến trúc hệ thống. Hệ thống bao gồm ba tác nhân chính: Users (người tìm việc), Employers (nhà tuyển dụng), và Admin (quản trị viên). Dựa trên sơ đồ UseCase, mỗi tác nhân có các chức năng riêng biệt: người dùng có thể tìm kiếm việc làm, quản lý hồ sơ cá nhân, ứng tuyển; nhà tuyển dụng đăng tin tuyển dụng, quản lý ứng viên; admin duyệt tin, quản lý người dùng. MongoDB được sử dụng để lưu trữ các collection như users, jobs, applications, messages, reports. Giao diện website được phát triển với công nghệ web hiện đại, bao gồm trang chủ, trang đăng ký, đăng nhập, tìm kiếm nâng cao, quản lý hồ sơ và cài đặt gợi ý cá nhân.

4.1. Kiến trúc hệ thống và các thành phần chính

Hệ thống website tìm kiếm việc làm được chia thành frontend (giao diện người dùng), backend (xử lý logic), và MongoDB (lưu trữ dữ liệu). Frontend cung cấp giao diện tìm kiếm, đăng ký, đăng nhập; Backend xử lý các yêu cầu từ người dùng, thực hiện truy vấn MongoDB, gửi thông báo; MongoDB lưu trữ dữ liệu người dùng, tin tuyển dụng, lịch sử ứng tuyển. Kiến trúc này đảm bảo tính mở rộng, bảo mật và hiệu suất cao cho website.

4.2. Các chức năng chính của nền tảng

Website tìm kiếm việc làm cung cấp: tìm kiếm nâng cao theo kỹ năng, ngành nghề, vị trí; quản lý hồ sơ cá nhân với CV, kỹ năng; ứng tuyển trực tuyến; nhắn tin với nhà tuyển dụng; lưu tin yêu thích; nhà tuyển dụng đăng tin, xem ứng viên; quản lý báo cáo và phản hồi. Tất cả dữ liệu được lưu trữ an toàn trong MongoDB, cho phép truy vấn nhanh và quản lý hiệu quả.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. GIỚI THIỆU CÁC HỆ QUẢN TRỊ CỞ SỞ DỮ LIỆU NOSQL VÀ CÁC ỨNG DỤNG 1. Khái niệm về hệ quản trị cơ sở dữ liệu nosql Cơ sở dữ liệu quan hệ, đã tồn tại từ lâu và đang có sự ứng dụng rộng rãi trong đa dạng lĩnh vực, tuy nhiên, khi hoạt động, nó tiếp tục tiết lộ nhiều hạn chế. Điều này xuất phát từ nhiều nguyên nhân, như việc tính ACID không được đảm bảo khi dữ liệu được lưu trữ trên nhiều máy chủ vật lý khác nhau, tạo ra những vấn đề khó khăn trong việc triển khai cơ sở dữ liệu quan hệ trên môi trường phân tán.

Khả năng chạy phân tán của CSDL quan hệ gặp khó khăn, đặc biệt là khi cần đảm bảo rằng các dữ liệu trong một giao dịch không bị thay đổi hoặc xóa ngoài tầm kiểm soát. Hệ quản trị CSDL quan hệ gặp hạn chế lớn trong việc mở rộng, và để cải thiện hiệu suất của máy chủ, thường người dùng phải nâng cấp phần cứng thay vì thêm máy chủ chạy song song. NoSQL, xuất phát từ "Non-Relational" (không ràng buộc), nhưng cũng có thể được hiểu theo khía cạnh "Not Only SQL" (Không chỉ SQL). Về cơ bản, cả hai hệ quản trị cơ sở dữ liệu NoSQL và cơ sở dữ liệu quan hệ tồn tại đồng thời và hỗ trợ lẫn nhau từ mặt ý tưởng.

NoSQL đặc trưng là một loại cơ sở dữ liệu mã nguồn mở không sử dụng T-SQL để truy vấn thông tin. Lịch sử ra đời của NoSQL Năm 2009, trong sự kiện hội thảo về cơ sở dữ liệu nguồn mở phân tán do Johan Oskarsson của Last.fm tổ chức, Eric Evans, một nhân viên của Rackspace, giới thiệu thuật ngữ NoSQL. NoSQL đại diện cho một sự tiến bộ mới trong lĩnh vực quản trị cơ sở dữ liệu: đó là một hệ quản trị cơ sở dữ liệu không ràng buộc, dễ dàng phân tán, có khả năng mở rộng theo chiều ngang, mã nguồn mở, có khả năng xử lý và lưu trữ lượng dữ liệu từ nhỏ đến rất lớn (kể cả hàng petabytes) trong các hệ thống chịu tải cao, đồng thời đòi hỏi ít phần cứng. Trong suốt hơn 40 năm, Cơ sở dữ liệu quan hệ đã luôn là lựa chọn ưa thích của các nhà phát triển do độ tin cậy của nó.

Tuy nhiên, vấn đề nảy sinh: tại sao người dùng cần phải áp dụng NoSQL? Mô hình CSDL quan hệ ra đời từ thập kỷ 70 của thế kỷ trước, 1 thời điểm Internet vẫn chỉ là "công nghệ quân sự," và các ứng dụng được xây dựng không đủ linh hoạt để giải quyết các thách thức của môi trường Internet rộng lớn hiện đại. Tính ACID, mặc dù là điểm mạnh của mô hình dữ liệu quan hệ, nhưng lại trở thành nhược điểm lớn khi áp dụng vào môi trường Internet. Hệ quản trị cơ sở dữ liệu quan hệ ngày nay không thể theo kịp sự phát triển mạnh mẽ của Internet, và vì vậy, sự xuất hiện của NoSQL trở nên cần thiết để đáp ứng các yêu cầu và thách thức mới trong việc xử lý dữ liệu trên mạng. “ACID là một từ viết tắt của bốn thuộc tính quan trọng trong hệ quản trị cơ sở dữ liệu, bao gồm atomicity (nguyên tác toàn vẹn), consistency (nhất quán), isolation (độc lập), và durability (bền vững)"[1].

Những thuộc tính này được xem là quan trọng khi hệ thống xử lý bất kỳ giao dịch nào. Nếu một trong những thuộc tính này thiếu, tính toàn vẹn của cơ sở dữ liệu sẽ khó có thể đảm bảo. Trong hệ quản trị cơ sở dữ liệu, một giao dịch đại diện cho một đơn vị logic thực hiện thao tác trên dữ liệu, trong đó có thể chứa nhiều thao tác. Ví dụ, trong một giao dịch chuyển tiền giữa hai tài khoản ngân hàng, có thể có hai thao tác: trừ tiền từ tài khoản chuyển tiền và cộng tiền vào tài khoản được chuyển tiền.

Các thuộc tính ACID sẽ đảm bảo rằng cả hai thao tác trong ví dụ được thực hiện một cách đảm bảo. ➢ Tính nhất quán (Consistency): Một giao dịch có thể tạo ra một trạng thái mới và hợp lệ cho dữ liệu, hoặc trong trường hợp có lỗi, nó sẽ hoàn nguyên toàn bộ dữ liệu về trạng thái trước khi thực hiện giao dịch. ➢ Tính tách biệt (Isolation): Một giao dịch đang trong quá trình thực hiện và chưa được xác nhận phải được giữ nguyên tính độc lập với các giao dịch khác. ➢ Tính bền vững (Durability): Dữ liệu đã được xác nhận sẽ được hệ thống lưu trữ sao cho ngay cả khi có sự cố hoặc lỗi trong hệ thống, dữ liệu vẫn được duy trì ở trạng thái chính xác.

Mỗi thuộc tính này đều có các phương pháp đo lường riêng. Thông thường, một chương trình quản lý giao dịch được thiết kế để đảm bảo những tính chất ACID này. Trong một hệ thống phân tán, một cách để đạt được tính chất ACID là sử dụng phương pháp xác nhận hai pha (2PC). Phương pháp này đảm bảo rằng tất cả các thành phần tham gia phải xác nhận hoàn tất đối với giao dịch; nếu không, giao dịch sẽ bị hủy và trở về trạng thái trước đó.

2 Tại sao cần đến NoSQL: Hệ CSDL mới có những đặc điểm nhận dạng độc đáo: không giới hạn lược đồ, khả năng mở rộng linh hoạt, API đơn giản, đồng nhất thực sự và không có hạn chế về không gian dữ liệu. Hiện nay, hầu hết các ứng dụng trên internet đều lưu trữ trên đám mây, sẵn sàng phục vụ người dùng trên khắp thế giới mọi nơi và mọi lúc. Sự phổ biến ngày càng tăng của việc sử dụng internet, cùng với việc thời gian sử dụng ngày càng kéo dài, đã gây ra sự bùng nổ về số lượng người truy cập đồng thời vào một ứng dụng. Việc có một ứng dụng với lượng truy cập lớn (có thể lên đến hàng triệu lượt) mỗi ngày trở nên thông thường.

Với số lượng truy cập đa dạng và lớn, đã xuất hiện nhiều mô hình dữ liệu linh động khác nhau, giúp mở rộng dễ dàng mà vẫn duy trì hiệu suất cao. Hiện nay, có rất nhiều thiết bị có khả năng kết nối internet, từ đó tạo ra sự phát triển và phổ biến của dữ liệu. Những thiết bị này xuất hiện ở khắp mọi nơi, bao gồm máy tính xách tay, máy tính bảng, điện thoại di động, và các thiết bị chuyên dụng khác. Theo thời gian, những thiết bị này được nâng cấp liên tục, tích hợp nhiều tính năng tiện ích, trí tuệ nhân tạo, ví dụ như điện thoại thông minh hiện đại không chỉ dùng để nghe gọi mà còn để giải trí, cài đặt ứng dụng hỗ trợ công việc, và cảm biến giám sát từ xa.

Tuy nhiên, dữ liệu từ xa thường có kích thước nhỏ, có cấu trúc một cách linh hoạt hoặc không có cấu trúc cụ thể và thường xuyên được cập nhật và truyền tải liên tục. Điều này đặt ra một thách thức đáng kể cho các hệ quản trị CSDL quan hệ với lược đồ cố định và dữ liệu có cấu trúc. Vì vậy, doanh nghiệp và nhà phát triển thường lựa chọn NoSQL để đáp ứng nhu cầu truy cập đồng thời từ hàng triệu thiết bị kết nối, lưu trữ tại nhiều điểm dữ liệu, đồng thời đảm bảo hiệu suất cao và hoạt động ổn định. Xu hướng phát triển hiện nay là sử dụng lại nguồn dữ liệu có sẵn để làm phong phú thêm các ứng dụng hiện có hoặc tạo ra những ứng dụng mới trên nền tảng của những nguồn dữ liệu đó.

Một ví dụ điển hình là Facebook, nơi người dùng có thể thu thập nhiều thông tin như dữ liệu cá nhân của người sử dụng, ảnh, video, thông tin định vị, cũng như các dữ liệu mà người dùng tự đăng tải và chia sẻ. Việc lưu trữ các loại CSDL khác nhau tạo ra nhu cầu về một hệ quản trị CSDL có khả năng đáp ứng yêu cầu đa dạng này, đồng thời vẫn đảm bảo hiệu quả sử dụng. Do 3 tính cứng nhắc của hệ quản trị CSDL quan hệ, việc tích hợp nhanh chóng các loại dữ liệu mới thường trở nên khó khăn. Điều này làm cho hệ quản trị CSDL quan hệ trở nên không linh hoạt và không phù hợp với việc xử lý dữ liệu không cấu trúc và bán cấu trúc.

Trước đây, đa số ứng dụng dành cho người dùng được thiết kế theo kiến trúc 2 tầng hoặc máy chủ - máy trạm, giới hạn về số lượng người sử dụng. Sự đổi mới trong thiết kế ứng dụng và phát triển cơ sở lưu trữ đã mang lại sự phát triển không ngừng. Kiến trúc 3 tầng cùng với lưu trữ và thực thi các lệnh trên đám mây hiện nay đang hỗ trợ, đáp ứng đồng thời cho nhiều người sử dụng. Trong quá khứ, CSDL quan hệ thường là sự lựa chọn hàng đầu, nhưng ngày càng bộc lộ nhiều vấn đề như tập trung dữ liệu và khó khăn trong việc mở rộng theo chiều dọc (gây tốn kém).

Ngược lại, NoSQL đã được xây dựng với mục đích phân tán, từ đó phù hợp với bản chất phân tán cao của kiến trúc 3 tầng trên Internet. Công nghệ nền tảng của NoSQL a) JSON JSON (JavaScript Object Notation) là một định dạng dữ liệu linh hoạt. Nó mang lại khả năng đọc và viết dữ liệu một cách dễ dàng, cũng như thuận lợi cho việc phân tích và tạo ra dữ liệu mới. JSON có cơ sở dựa trên tập hợp ngôn ngữ lập trình JavaScript, theo tiêu chuẩn ECMA-262 phiên bản 3, được công bố vào tháng 12 năm 1999.

JSON là một ngôn ngữ có định dạng văn bản, hoàn toàn độc lập với các ngôn ngữ khác. Nó thuộc họ hàng với các ngôn ngữ như C, C++, C#, vì vậy JSON trở thành một ngôn ngữ hoán vị lý tưởng. JSON được xây dựng từ hai cấu trúc: ➢ Là tập hợp của các cặp tên và giá trị (name-value). Chúng có thể là các đối tượng, cấu trúc, từ điển… ở trong các ngôn ngữ khác nhau.

➢ Là một tập hợp các giá trị đã được sắp xếp. Trong hầu hết các ngôn ngữ, JSON được nhận thấy như là một mảng, véc tơ, tập hợp hay là một dãy trình tự. Cấu trúc này trở nên phổ biến trong các ngôn ngữ lập trình hiện đại, được hỗ trợ trong phạm vi nào đó, và tạo nên ý nghĩa của một định dạng hoán vị. Trong JSON, có một số định dạng sau: 4 ➢ Đối tượng: là một hỗn độn của các cặp tên và giá trị.

Một đối tượng bắt đầu bởi dấu ngoặc nhọn trái { và kết thúc với dấu ngoặc nhọn phải }. Từng tên được theo sao bởi dấu hai chấm : và các cặp tên/giá trị được tách ra bởi dấu phẩy ,. ➢ Mảng: là một tập hợp các giá trị đã được sắp xếp.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ