Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp kỹ sư ngành Hệ thống Thông tin với đề tài "Xây dựng website diễn đàn chia sẻ bài viết và sử dụng kỹ thuật tìm kiếm toàn văn (Full-Text Search)" được thực hiện bởi sinh viên Nguyễn Duy Hiệu (MSSV: 18520746) và Trịnh Ngọc Vĩnh (MSSV: 18521660), dưới sự hướng dẫn của ThS. Mai Xuân Hùng tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (năm 2022).

1. Lý do chọn đề tài và bối cảnh thực tiễn

Sự phát triển mạnh mẽ của mạng xã hội và các cộng đồng trực tuyến đã định hình nhu cầu chia sẻ kiến thức, trao đổi kinh nghiệm thực tế trong đời sống và kỹ thuật. Đối với lĩnh vực công nghệ thông tin (CNTT), việc tìm kiếm các giải pháp kỹ thuật, lỗi lập trình và tài liệu chuyên môn diễn ra liên tục. Tuy nhiên, các giải pháp tìm kiếm dữ liệu văn bản truyền thống thường bộc lộ hạn chế về tốc độ và độ chính xác khi khối lượng bài viết tăng cao. Do đó, nhóm tác giả đặt vấn đề xây dựng một nền tảng diễn đàn chuyên ngành CNTT, kết hợp cơ chế kiểm duyệt nội dung, phân quyền quản trị chặt chẽ và ứng dụng kỹ thuật tìm kiếm toàn văn (Full-Text Search - FTS) trên cơ sở dữ liệu quan hệ mã nguồn mở.

2. Mục tiêu và nhiệm vụ nghiên cứu

Văn bản xác định các mục tiêu và nhiệm vụ cụ thể được đánh số triển khai bao gồm:

  1. Khảo sát và phân tích nhu cầu thực tế: Khảo sát hành vi người dùng và tính năng quản trị từ các diễn đàn kỹ thuật quốc tế và trong nước nhằm xác định tập tính năng cốt lõi, loại bỏ các yêu cầu kết nối dư thừa không phù hợp với diễn đàn chuyên môn.
  2. Thiết kế kiến trúc hệ thống: Xây dựng mô hình ứng dụng web hiện đại tách biệt giữa tầng giao diện người dùng (Front-end) và tầng máy chủ (Back-end) thông qua RESTful APIs.
  3. Mô hình hóa và thiết kế cơ sở dữ liệu: Thiết kế hệ thống bảng dữ liệu chi tiết, phân tách rõ ràng giữa phân hệ người dùng thông thường và phân hệ quản trị; tích hợp nhật ký thay đổi (audit log) và cơ chế lưu trữ dữ liệu phi cấu trúc/bán cấu trúc.
  4. Hiện thực hóa kỹ thuật tìm kiếm toàn văn (FTS): Tích hợp và cấu hình FTS trên PostgreSQL sử dụng các cấu trúc tsvector, tsquery và chỉ mục GIN, GiST; áp dụng vào tìm kiếm bài viết, gợi ý nội dung và truy vấn lịch sử hoạt động.
  5. Xây dựng giao diện và triển khai thực nghiệm: Hiện thực hóa toàn bộ giao diện cho người dùng thường và người quản trị; đóng gói và triển khai ứng dụng lên hạ tầng điện toán đám mây.

3. Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình vận hành của một diễn đàn trực tuyến (tạo, duyệt, tương tác bài viết, quản trị vai trò, phân quyền) và cơ chế chỉ mục tìm kiếm toàn văn bản (Full-Text Search Indexing).
  • Phạm vi không gian và công nghệ: Nghiên cứu và hiện thực hóa trong môi trường hệ thống phần mềm phân tán; máy chủ web chạy trên nền tảng .NET Core, cơ sở dữ liệu PostgreSQL và hạ tầng đám mây Amazon Elastic Compute Cloud (Amazon EC2).
  • Phạm vi thời gian và ngữ cảnh dữ liệu: Dữ liệu thử nghiệm và khảo sát được tiến hành trong năm 2022; tập trung vào cộng đồng người dùng chia sẻ kinh nghiệm kỹ thuật CNTT tại Việt Nam, xử lý ngữ liệu tiếng Anh (tích hợp sẵn của PostgreSQL) kết hợp tiền xử lý chuỗi văn bản cho tiếng Việt.

Cơ sở lý thuyết và phương pháp

1. Khung lý thuyết và công nghệ sử dụng

Khóa luận xây dựng trên các nền tảng công nghệ và lý thuyết phần mềm xác định:

  • Kiến trúc Single-Page Application (SPA): Mô hình ứng dụng trang đơn giúp tải toàn bộ mã nguồn HTML, JS, CSS trong lần truy cập đầu tiên và cập nhật dữ liệu linh hoạt qua API mà không cần tải lại toàn bộ trang, tối ưu hóa trải nghiệm trên thiết bị di động và máy tính để bàn.
  • ASP.NET Core API & Entity Framework (EF): Nền tảng Back-end mã nguồn mở đa nền tảng từ Microsoft, cung cấp tầng dịch vụ RESTful API. Entity Framework đóng vai trò Object-Relational Mapping (ORM), trừu tượng hóa các bảng dữ liệu thành các đối tượng C#, kết hợp công cụ truy vấn tích hợp Language-Integrated Query (LINQ) giúp kiểm tra kiểu tĩnh ở thời điểm biên dịch và tương thích đa phiên bản CSDL.
  • Hệ quản trị cơ sở dữ liệu PostgreSQL: Hệ CSDL quan hệ tuân thủ chặt chẽ tiêu chuẩn ACID, hỗ trợ mạnh mẽ kiểu dữ liệu phức tạp (JSON, JSONB) và công cụ tìm kiếm toàn văn bản chuyên sâu.
  • Kỹ thuật Tìm kiếm toàn văn (Full-Text Search - FTS): Khắc phục nhược điểm của các toán tử đối sánh chuỗi thông thường (LIKE, ILIKE, ~), FTS hoạt động dựa trên ba giai đoạn: phân tích cú pháp chuỗi thành các mã thông báo (tokens), chuẩn hóa mã thông báo thành từ gốc (lexemes) thông qua từ điển (dictionaries), và lưu trữ mảng lexemes kèm thông tin vị trí nhằm phục vụ xếp hạng độ liên quan (ranking).

2. Phương pháp nghiên cứu thực tế

  • Phương pháp khảo sát trải nghiệm thực tế (Benchmarking/Empirical Survey): Nhóm tác giả trực tiếp khảo sát và trải nghiệm các hệ thống diễn đàn kỹ thuật lớn trên thế giới gồm Stack Overflow, Database Administrators Stack Exchange, Unix & Linux Stack Exchange, Stack Exchange Network; các trang diễn đàn công nghệ nhiều lượt truy cập tại Việt Nam như How Kteam, Tôi đi code dạo, Tinh tế, TECHRUM; cùng các nền tảng cộng đồng đa lĩnh vực như Cookpad, Reddit. Qua đó, nhóm chắt lọc các yêu cầu thiết thực: tìm kiếm với bộ lọc, gợi ý bài viết liên quan, tối ưu trải nghiệm đọc, tinh giản các tính năng kết nối mạng xã hội không cần thiết.
  • Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Xây dựng sơ đồ ca sử dụng (Use Case Diagram), mô hình hóa các quy trình nghiệp vụ (State Diagram cho vòng đời bài viết), thiết kế sơ đồ quan hệ thực thể (ERD).
  • Phương pháp thực nghiệm công nghệ: Đánh giá hiệu năng và lựa chọn giữa các loại chỉ mục trong PostgreSQL (so sánh chỉ mục GIN cho dữ liệu tĩnh/ít biến động và GiST cho dữ liệu biến động thường xuyên); thử nghiệm tích hợp kiểu dữ liệu JSONB trong việc lưu vết hành vi người dùng.

3. Nguồn dữ liệu

Dữ liệu sử dụng trong khóa luận bao gồm lược đồ dữ liệu tự định nghĩa phục vụ diễn đàn (bài viết, bình luận, người dùng, cấu hình hệ thống) và tập nhật ký hoạt động (audit logs) được mô phỏng trong quá trình vận hành thử nghiệm.


Thiết kế và triển khai

1. Kiến trúc hệ thống và ngăn xếp công nghệ (Tech Stack)

Hệ thống được thiết kế phân tầng rõ rệt theo mô hình Client - Server, giao tiếp thông qua giao thức HTTP/HTTPS với định dạng dữ liệu JSON:

Thành phần Công nghệ / Thư viện Vai trò kỹ thuật
Front-End (Client) Angular (TypeScript) Xây dựng giao diện ứng dụng trang đơn (SPA).
PrimeNG, PrimeIcons, PrimeFlex Cung cấp bộ thành phần giao diện (UI components) và hệ thống lưới layout.
Dayjs Tối giản hóa cú pháp và tối ưu hóa xử lý hiển thị thời gian.
Lodash Tiện ích xử lý cấu trúc dữ liệu, mảng và đối tượng tối ưu hiệu năng.
ngx-translate Xử lý đa ngôn ngữ trên giao diện người dùng.
Back-End (Server) ASP.NET Core API (.NET Core) Cung cấp các RESTful APIs xử lý nghiệp vụ, xác thực và phân quyền.
Entity Framework (EF Core) Tầng ORM ánh xạ bảng dữ liệu quan hệ sang đối tượng C#.
LINQ Viết truy vấn cơ sở dữ liệu hướng đối tượng trực tiếp trong mã nguồn C#.
Database PostgreSQL Lưu trữ dữ liệu quan hệ, dữ liệu JSONB và lập chỉ mục tìm kiếm toàn văn.
Deployment Amazon Elastic Compute Cloud (EC2) Hạ tầng máy chủ đám mây triển khai các dịch vụ Back-end và cơ sở dữ liệu.

2. Thiết kế cơ sở dữ liệu chi tiết

Cơ sở dữ liệu của hệ thống được chia làm hai phân hệ chính với hơn 30 bảng vật lý:

  • Phân hệ quản trị (Admin Subsystem): Gồm các bảng admin_user, admin_user_role, admin_user_right, admin_user_role_detail, admin_user_role_of_user, session_admin_user, admin_audit_log, admin_base_config. Phân hệ này sử dụng mô hình kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) kết hợp chi tiết hóa hành động cho phép qua trường actions kiểu JSONB.
  • Phân hệ người dùng tương tác (Social Subsystem): Gồm các bảng social_user, social_post, social_comment, social_category, social_tag, social_notification, social_report, cùng tập hợp các bảng lưu trữ hành vi người dùng (social_user_action_with_post, social_user_action_with_comment, social_user_action_with_user,...).
  • Cơ chế Audit Log và Quản lý phiên: Bảng admin_audit_log, social_audit_log và social_user_audit_log ghi nhận vết thay đổi chi tiết gồm bảng bị tác động (table), khóa bản ghi (table_key), hành động (action), giá trị cũ (old_value), giá trị mới (new_value), thời gian (timestamp) và vector tìm kiếm (search_vector). Quản lý phiên qua session_token, lưu trữ dữ liệu phiên dưới dạng JSONB và ghi nhận last_interaction_time.

3. Thiết kế và ứng dụng Tìm kiếm toàn văn (FTS)

Nhóm nghiên cứu thiết kế cột chuyên dụng search_vector có kiểu dữ liệu tsvector trên các bảng trọng yếu (social_post, social_user, social_category, social_comment, các bảng audit log). Cơ chế này kết hợp chỉ mục GIN (Generalized Inverted Index) để đảm bảo tốc độ phản hồi truy vấn cao:

  • Xử lý tìm kiếm: Áp dụng toán tử @@ giữa cột search_vector và điều kiện to_tsquery trong SQL thông qua hàm mở rộng EF.Functions.Matches của Entity Framework.
  • Gợi ý và lọc nội dung: Hệ thống hỗ trợ tìm kiếm bài viết đã thích, bài xem gần đây, gợi ý bài viết liên quan dựa trên độ tương đồng từ vựng và thẻ danh mục, đồng thời thực hiện các truy vấn thống kê số lượng bài viết nhóm theo các mốc thời gian (ngày, tuần).

Nội dung chính theo từng chương

Chương 1. Tổng quan đề tài

Chương 1 trình bày kết quả phân tích, khảo sát nhu cầu từ các nền tảng thực tế, làm rõ các chức năng cần thiết cho hai nhóm người dùng:

  • Người dùng thường: Hỗ trợ đăng bài viết, bình luận, thể hiện sự yêu thích/đồng tình, truy xuất bài viết đã thích/đã lưu/đã xem, quản lý thông tin cá nhân và báo cáo vi phạm.
  • Người dùng quản trị: Kiểm soát người dùng, phân quyền vai trò, quản lý nội dung công khai, danh mục, thẻ, cấu hình hệ thống (mẫu gửi email, hệ số tính bài viết xu hướng) và tra cứu nhật ký hệ thống.

Chương này cũng chuẩn hóa 4 quy trình nghiệp vụ chính:

  1. Quy trình tạo bài viết: Quản lý thông qua 5 trạng thái gồm Chờ duyệt (Pending), Chấp thuận (Approved), Từ chối (Rejected), Riêng tư (Private), Đã xóa (Deleted). Khi bài viết đã chấp thuận bị sửa đổi nội dung, các chỉnh sửa phải qua phê duyệt lại mới được hiển thị công khai.
  2. Quy trình xác thực tài khoản: Người dùng đăng ký phải kích hoạt tài khoản qua liên kết gửi về email, sau khi xác thực không được đổi email.
  3. Quy trình sửa, đặt lại mật khẩu: Cơ chế đổi mật khẩu định kỳ theo chính sách hệ thống hoặc cấp phát liên kết đặt lại mật khẩu qua email khi quên.
  4. Quy trình báo cáo nội dung và góp ý: Cho phép gửi phản ánh vi phạm về bài viết, bình luận, tài khoản kèm hệ thống thông báo trạng thái xử lý từ quản trị viên.

Cuối chương, tác giả luận giải chi tiết lý do lựa chọn các công nghệ (SPA, Angular, NPM, .NET Core API, EF, LINQ, PostgreSQL, Full-Text Search, JSONB).

Chương 2. Thiết kế hệ thống

Chương 2 mô tả hệ thống thông qua các sơ đồ ca sử dụng (Use Case):

  • Ca sử dụng người dùng khách (Guest): Tìm kiếm nội dung công khai (theo từ khóa, thẻ, danh mục, tác giả), xem chi tiết bài viết, bình luận và đăng ký tài khoản.
  • Ca sử dụng người dùng đã đăng nhập (Member): Quản lý bài đăng cá nhân (tạo mới, sửa đổi, xóa, chuyển trạng thái riêng tư, tải ảnh), tương tác bài viết (thích, lưu, theo dõi), viết và quản lý bình luận, cập nhật hồ sơ, quản lý các phiên đăng nhập, nhận thông báo hệ thống và báo cáo nội dung xấu.
  • Ca sử dụng người dùng quản trị (Administrator): Duyệt/từ chối bài viết mới hoặc bài viết có thay đổi nội dung, quản lý danh mục và thẻ, quản lý người dùng (khóa/mở khóa tài khoản), gán quyền và vai trò, quản lý cấu hình diễn đàn, tra cứu nhật ký và giám sát phiên truy cập.

Chương 3. Cơ sở dữ liệu

Chương 3 là phần trọng tâm về kỹ thuật dữ liệu, tài liệu hóa cấu trúc chi tiết của 30 bảng dữ liệu. Mỗi bảng được định nghĩa rõ tên cột, kiểu dữ liệu và mô tả ngữ nghĩa:

  • Tích hợp kiểu dữ liệu uuid làm khóa chính cho người dùng nhằm nâng cao tính bảo mật.
  • Ứng dụng cấu trúc dữ liệu jsonb trong các trường cấu hình (settings), dữ liệu phiên (data), quyền hạn chi tiết (actions), nội dung đang chờ duyệt (pending_content), và thông tin công khai (publics).
  • Thiết kế trường search_vector (tsvector) trên các bảng: social_post, social_user, social_audit_log, admin_audit_log, social_user_audit_log.
  • Trình bày giải pháp truy vấn FTS trong PostgreSQL kết hợp hàm thư viện của .NET, các câu lệnh truy vấn gợi ý bài viết tương đồng và câu truy vấn thống kê bài viết theo thời gian.

Chương 4. Giao diện ứng dụng

Chương 4 ghi nhận kết quả hiện thực hóa toàn diện hệ thống với danh mục 46 màn hình người dùng và 36 màn hình quản trị:

  • Giao diện người dùng: Hỗ trợ chế độ sáng (Light mode) và tối (Dark mode), thiết kế đáp ứng (Responsive) linh hoạt trên thiết bị di động. Cung cấp trình soạn thảo bài viết hỗ trợ đồng thời cả định dạng HTML và Markdown; tích hợp cửa sổ tìm kiếm nhanh, trang quản lý bài viết đã lưu, đã thích, lịch sử xem và danh sách người theo dõi.
  • Giao diện quản trị: Bảng điều khiển trực quan với các biểu đồ thống kê số lượng bài viết (dạng cột, dạng đường, nhóm theo tuần); giao diện xem và duyệt nội dung sửa đổi của bài viết theo cơ chế so sánh dữ liệu; quản lý chi tiết ma trận vai trò - quyền hạn cho cả quản trị viên và người dùng thường; quản lý cấu hình tham số ứng dụng.
  • Cài đặt và triển khai: Hướng dẫn cấu hình môi trường và triển khai hệ thống phần mềm lên hạ tầng dịch vụ đám mây Amazon Elastic Compute Cloud (Amazon EC2).

Chương 5. Các hướng phát triển và khả năng mở rộng

Chương 5 đúc kết các kết quả đạt được, đồng thời phân tích những rào cản kỹ thuật gặp phải trong quá trình thực hiện đề tài. Nhóm tác giả đề xuất 3 định hướng hoàn thiện:

  1. Mở rộng hỗ trợ đa ngôn ngữ hoàn chỉnh cho nội dung diễn đàn.
  2. Xây dựng phân hệ thống kê, xếp hạng người dùng tự động dựa trên mức độ đóng góp.
  3. Mở rộng khả năng tùy biến cấu hình hệ thống linh hoạt hơn cho quản trị viên.

Kết quả và đóng góp

1. Kết quả chính đạt được

  • Hiện thực hóa trọn vẹn sản phẩm phần mềm: Xây dựng hoàn chỉnh website diễn đàn chia sẻ bài viết CNTT với 2 phân hệ Front-End (Angular SPA) và Back-End (.NET Core API) hoạt động ổn định.
  • Xây dựng lược đồ dữ liệu chuyên sâu: Hoàn thành cơ sở dữ liệu PostgreSQL gồm 30 bảng có cấu trúc chặt chẽ, tối ưu hóa các mối quan hệ n-n, tích hợp thành công cấu trúc JSONB để lưu trữ dữ liệu tương tác động và cài đặt cơ chế audit log toàn diện.
  • Ứng dụng thực tiễn kỹ thuật FTS: Triển khai thành công search_vector và chỉ mục GIN, đáp ứng việc tìm kiếm bài viết, tác giả, danh mục và lịch sử thao tác với tốc độ cao, hỗ trợ gợi ý bài viết liên quan dựa trên ngữ nghĩa từ vựng.
  • Quy trình kiểm duyệt 5 trạng thái: Xây dựng cơ chế kiểm duyệt chặt chẽ, đảm bảo các bài viết khi chỉnh sửa không làm sai lệch nội dung công khai trước khi được quản trị viên phê duyệt lại.
  • Triển khai thực tế: Vận hành thành công hệ thống trên môi trường máy chủ đám mây Amazon EC2.

2. Giải pháp và kiến nghị của tác giả

  • Ứng dụng mô hình SPA kết hợp RESTful API nhằm giảm tải băng thông cho máy chủ và tăng tốc độ chuyển đổi giao diện cho người dùng.
  • Sử dụng kết hợp các chỉ mục chuyên dụng: GIN cho các bảng dữ liệu ít biến động hoặc lưu trữ nhật ký văn bản, GiST cho các trường dữ liệu cập nhật thường xuyên.
  • Thay thế các bảng quan hệ phức tạp có tần suất ghi cao bằng trường JSONB (như bảng lưu vết hành động của người dùng), giúp tinh gọn số lượng bản ghi trong cơ sở dữ liệu.

3. Đóng góp khoa học và kỹ thuật tự nêu

Khóa luận đã minh chứng tính khả thi và hiệu quả của việc kết hợp một framework ORM hiện đại (Entity Framework / LINQ trong hệ sinh thái .NET) với các tính năng chuyên biệt của PostgreSQL (kiểu dữ liệu JSONB và bộ công cụ Full-Text Search). Đề tài giải quyết được bài toán xây dựng nền tảng diễn đàn học thuật chuyên ngành có tính năng tìm kiếm văn bản tốc độ cao mà không cần tích hợp thêm các công cụ tìm kiếm độc lập phức tạp bên ngoài như Elasticsearch hay Apache Solr đối với các hệ thống quy mô vừa.


Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế của đề tài

Dựa trên công bố của nhóm tác giả trong văn bản khóa luận:

  • Kênh tương tác trực tiếp: Diễn đàn còn thiếu các phương thức giao tiếp trực tiếp thời gian thực giữa các thành viên (như tính năng nhắn tin riêng tư hoặc trao đổi tức thời).
  • Công cụ phân tích quản trị: Hệ thống còn thiếu các báo cáo trực quan chuyên sâu về phân tích hành vi người dùng (user behavior analytics) nhằm hỗ trợ tối ưu công tác quản trị nội dung.
  • Xử lý ngôn ngữ tự nhiên tiếng Việt trong FTS: Do PostgreSQL chỉ tích hợp sẵn từ điển chuẩn hóa lexeme cho tiếng Anh, việc tiền xử lý văn bản tiếng Việt (tách từ ghép, xử lý dấu thanh) đòi hỏi phải thực hiện thủ công ở tầng logic trước khi lưu trữ vào cột vector tìm kiếm.

2. Hướng nghiên cứu và phát triển tiếp

  • Mở rộng đa ngôn ngữ: Tích hợp bộ từ điển tiếng Việt hoàn chỉnh cho FTS và mở rộng khả năng bản địa hóa giao diện.
  • Thống kê và xếp hạng: Xây dựng giải thuật xếp hạng thành viên (gamification / reputation system) dựa trên số lượng bài viết chất lượng và điểm tương tác từ cộng đồng.
  • Mở rộng cấu hình hệ thống: Tăng cường các tham số cấu hình động cho phép người quản trị can thiệp sâu vào thuật toán gợi ý bài viết và các mẫu thông báo tự động.

Giá trị tham khảo

Báo cáo khóa luận mang lại giá trị tham khảo rõ ràng cho sinh viên và kỹ sư phần mềm thuộc các chuyên ngành Hệ thống Thông tin, Kỹ thuật Phần mềm, Khoa học Máy tính:

  • Tham khảo thiết kế kiến trúc: Tài liệu mẫu chuẩn xác cho việc phân tách rõ ràng giữa Front-end (Angular) và Back-end (ASP.NET Core Web API), tổ chức mã nguồn và giao tiếp qua chuẩn RESTful.
  • Tham khảo thiết kế cơ sở dữ liệu và bảo mật: Mô hình phân quyền đa tầng (RBAC) chi tiết giữa nhóm quản trị và nhóm người dùng thường; cấu trúc bảng lưu trữ nhật ký hệ thống (audit log) có khả năng truy vết dữ liệu cũ/mới (old_value, new_value); cơ chế quản lý phiên đăng nhập (session_token).
  • Tham khảo kỹ thuật FTS trên PostgreSQL: Cách thức tạo cột tsvector, đánh chỉ mục GIN/GiST, và tích hợp câu lệnh truy vấn thông qua LINQ trong C#.
  • Tham khảo thiết kế UI/UX: Hệ thống sơ đồ màn hình phong phú (hơn 80 giao diện) minh họa chi tiết trạng thái sáng/tối, phiên bản di động, và luồng kiểm duyệt nội dung hai bước.

Câu hỏi thường gặp

1. Diễn đàn quản lý vòng đời và trạng thái của bài viết thông qua các bước nào?

Bài viết được quản lý qua 5 trạng thái cố định: Chờ duyệt (Pending), Chấp thuận (Approved), Từ chối (Rejected), Riêng tư (Private), và Đã xóa (Deleted). Người dùng có thể tạo bài ở trạng thái Riêng tư hoặc Chờ duyệt. Bài viết chỉ được công khai sau khi quản trị viên chuyển sang Chấp thuận. Khi người dùng chỉnh sửa bài viết đã được chấp thuận, nội dung mới sẽ được lưu vào trường pending_content ở định dạng JSONB và bài viết phải qua quá trình kiểm duyệt lại trước khi thay đổi được áp dụng chính thức.

2. Kỹ thuật Tìm kiếm toàn văn (FTS) trong khóa luận được hiện thực hóa như thế nào trên PostgreSQL?

Nhóm tác giả tạo cột chuyên biệt search_vector với kiểu dữ liệu tsvector trên các bảng cần tìm kiếm (social_post, social_user, social_category,...). Cột này lưu trữ danh sách các lexemes đã chuẩn hóa kèm chỉ số vị trí. Trên cột search_vector, một chỉ mục đảo GIN (Generalized Inverted Index) được thiết lập để tối ưu hóa tốc độ truy vấn đối với dữ liệu tĩnh. Trong tầng ứng dụng, Entity Framework sử dụng hàm EF.Functions.Matches để biên dịch sang toán tử @@ cùng hàm to_tsquery của PostgreSQL.

3. Kiểu dữ liệu JSON/JSONB được ứng dụng vào mục đích cụ thể nào trong cơ sở dữ liệu?

Kiểu JSONB được ứng dụng để lưu trữ các thuộc tính động và dữ liệu tùy chọn mà không cần tạo thêm nhiều bảng quan hệ phụ, bao gồm: cấu hình giao diện người dùng (settings), thông tin công khai (publics), dữ liệu phiên đăng nhập (data), chi tiết hành động phân quyền (actions), nội dung bài viết chờ duyệt (pending_content), và vết tương tác của người dùng với bài viết/bình luận.

4. Hệ thống sử dụng các thư viện giao diện và công nghệ cốt lõi nào ở tầng Front-End?

Tầng Front-End được xây dựng dưới dạng ứng dụng trang đơn (SPA) bằng framework Angular trên nền tảng ngôn ngữ TypeScript. Các thư viện bổ trợ chính được quản lý qua NPM bao gồm: primeng, primeicons, primeflex (xây dựng các thành phần giao diện và bố cục lưới), dayjs (xử lý ngày tháng), lodash (xử lý logic mảng và đối tượng), và ngx-translate (hỗ trợ chuyển đổi đa ngôn ngữ).

5. Nhóm tác giả đã tiến hành khảo sát các nền tảng thực tế nào trước khi thiết kế hệ thống?

Nhóm đã trải nghiệm và phân tích các diễn đàn kỹ thuật quốc tế gồm Stack Overflow, Database Administrators Stack Exchange, Unix & Linux Stack Exchange, Stack Exchange Network; các trang tin và diễn đàn công nghệ tại Việt Nam gồm How Kteam, Tôi đi code dạo, Tinh tế, TECHRUM; cùng hai nền tảng cộng đồng đa lĩnh vực là Cookpad và Reddit.


Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Duy Hiệu và Trịnh Ngọc Vĩnh đã giải quyết trọn vẹn bài toán xây dựng website diễn đàn chia sẻ bài viết kỹ thuật công nghệ thông tin. Điểm nổi bật của công trình là việc thiết kế hệ thống cơ sở dữ liệu quan hệ hoàn chỉnh trên PostgreSQL, kết hợp kiểm soát quyền truy cập chặt chẽ và ứng dụng hiệu quả kỹ thuật tìm kiếm toàn văn bản (FTS). Kết quả nghiên cứu và toàn bộ quy trình thiết kế, triển khai trên nền tảng đám mây Amazon EC2 là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn cao cho sinh viên ngành Hệ thống Thông tin và Kỹ thuật Phần mềm.