--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Tin học thiếu nhi (6) - Lưu trữ dữ liệu trên đĩa

Bài trước: Tin học thiếu nhi (5) - Cách sử dụng chuột
-----

Bài 6. Lưu trữ dữ liệu trên đĩa

Sau khi bạn gõ chữ vào chương trình Notepad, hoặc vẽ một hình trên Mspaint, nếu bạn không thực hiện lưu trữ (cất giữ), thì chúng sẽ biến mất sau khi tắt máy tính. 

Các chữ trong Notepad hoặc hình vẽ trong Mspaint chính là dữ liệu.

Để giữ lại các kết quả bạn vừa thực hiện, bạn có thể lưu trữ ở 2 nơi:

- Lưu trên đĩa

- Lưu trên mạng (Internet)

Chúng ta cùng tìm hiểu cách để lưu dữ liệu.

6.1 Lưu trên đĩa

Bạn có thể lưu dữ liệu trên nhiều loại đĩa khác nhau, ví dụ:

- Đĩa cứng

- Đĩa USB

- Đĩa DVD

Mỗi loại đĩa sẽ có hình dạng và cấu tạo vật lý khác nhau. Tuy nhiên, chúng đều sử dụng các khái niệm giống nhau để lưu dữ liệu gồm:

- Ổ đĩa

- Thư mục

- Tập tin

Ổ đĩa

Ổ đĩa (drive) là một đơn vị lưu trữ dữ liệu, nó thường là một vùng trên đĩa cứng (hard disk), hoặc một ổ đĩa gắn ngoài (USB, DVD). Ví dụ: trên máy tính của bạn thường có ổ đĩa C, D, E, F, …v.v.

Một ổ đĩa thường có kích thước từ vài GB (gigabyte) đến hàng trăm, hàng ngàn GB.

Có thể tưởng tượng một ổ đĩa giống như một cái tủ đựng sách.

Để thao tác trên ổ đĩa, bạn sử dụng chương trình File Explorer.

Thực hành

Bài tập 6.1: Bạn hãy mở chương trình File Explorer bằng 4 cách khác nhau, ghi lại các bước làm của mỗi cách (viết tay ra giấy hoặc viết vào Notepad)

- Bằng phím tắt

- Bằng menu Start của Windows

- Sử dụng cửa sổ Run

- Sử dụng thanh taskbar

Trả lời các câu hỏi sau:

1. Máy tính của bạn đang có mấy ổ đĩa?

2. Liệt kê tên của các ổ đĩa?

3. Mỗi ổ đĩa được dùng để chứa cái gì?

6.2 Thư mục

Thư mục (folder, directory) là một vùng trên ổ đĩa, dùng để lưu các tập tin và các thư mục con.

Nếu coi ổ đĩa là một cái tủ đựng sách thì thư mục chính là các ngăn tủ.

Thực hành

Bài tập 6.2: Tạo thư mục

- Bạn hãy mở chương trình File Explorer


- Mở một ổ đĩa bất kỳ (ví dụ ổ đĩa C hoặc D)

- Trong cửa sổ của File Explorer > bấm chuột phải vào vùng trồng > chọn New > chọn Folder > đặt tên cho thư mục là Sach (nhớ viết tiếng Việt không dấu) > bấm phím Enter. Vậy là bạn đã tạo ra được thư mục Sach

- Bạn bấm đúp chuột để mở thư mục Sach > trong thư mục Sach, bạn tạo thư mục nữa có tên là VanHoc. Vậy là thư mục VanHoc là con (nằm trong) của thư mục Sach.

- Với cách làm tương tự, bạn hãy tạo ra các thư mục theo hình sau (nhớ để ý thư mục nào nằm trong thư mục nào).

- Yêu cầu: Tên thư mục phải là tiếng Anh hoặc tiếng Việt không dấu, viết liền, viết hoa chữ cái đầu tiên của mỗi từ.

6.3 Tập tin

Tập tin (file) là một tập hợp thông tin được đặt tên.

Ví dụ: Bạn có một danh sách chứa thông tin các bạn trong lớp, vậy bạn sẽ tạo một tập tin có tên là DanhSachLop.xlsx.

Thông tin có thể tồn tại ở nhiều dạng khác nhau, ví dụ: Văn bản, hình ảnh, âm thanh, video, nhị phân.

Bạn sẽ dùng các chương trình để tạo ra các tập tin tương ứng.

Ví dụ:

- Dùng Notepad để tạo ra tập tin dạng văn bản

- Dùng Mspaint để tạo ra tập tin dạng hình ảnh

- Dùng Scratch để tạo ra tập tin dạng nhị nhân

- Dùng Microsoft Word để tạo ra tập tin dạng văn bản

Tên của tập tin gồm 2 phần: tên và phần mở rộng, ví dụ BaiTap.txt. Xem hình minh họa:



Nếu xem ổ đĩa là tủ đựng sách, thư mục là ngăn tủ, thì tập tin chính là các cuốn sách.

Thực hành

Bài tập 6.3: Sử dụng các phần mềm để tạo tập tin.

a) Tạo tập tin .txt

- Mở Notepad, nhập vào nội dung sau:

Tên thư mục thì không có “đuôi”. Tên tập tin thì có “đuôi”!

- Lưu vào thư mục có tên là TaiLieu (tạo thư mục này nếu chưa có). Đặt tên cho tập tin là BaiHoc1.txt

b) Tạo tập tin .png

- Mở MsPaint, vẽ 3 hình tròn, tô màu cho hình tròn

- Lưu vào thư mục có tên là TaiLieu (tạo thư mục này nếu chưa có). Đặt tên cho tập tin là HinhTron.png

-----
Bài sau:

Nhập môn ngành CNTT (2) - Tổng quan về nghề (2)

Bài trước: Nhập môn ngành CNTT (1) - Tổng quan về nghề (1)
-----

2.1 Kỹ sư CNTT

Ở bài học trước, bạn đã biết được là có 3 hướng có thể theo học là: [1] học để làm việc như một chuyên gia KHMT, hoặc [2] kỹ sư CNTT hoặc [3] trang bị Kỹ năng số và Ứng dụng phổ thông để làm các nghề khác.

Bạn cũng đã tìm hiểu sơ qua về hướng trở thành một chuyên gia KHMT. Hướng này đòi hỏi bạn phải trang bị các kiến thức toán nền tảng, các môn học liên quan đến lập trình, thuật toán; cũng như các lĩnh vực chuyên sâu.

Trong phần này, bạn sẽ tiếp tục tìm hiểu tổng quan về nghề kỹ sư CNTT. Hi vọng, bạn sẽ tìm được các thông tin định hướng có ích.

Câu hỏi đầu tiên là: Học gì để có thể trở thành một kỹ sư CNTT?

Để có thể trở thành một kỹ sư CNTT, bạn cần học các chủ đề chính sau:

- Nền tảng Mạng & Hệ thống: Mạng máy tính, Hệ điều hành, Quản trị hệ thống & Đám mây

- Lập trình & Phát triển phần mềm: Ngôn ngữ lập trình, Lập trình web, Lập trình ứng dụng di động, Lập trình ứng dụng Desktop (tùy chọn)

- Cơ sở dữ liệu & Quản lý dữ liệu: Cơ sở dữ liệu quan hệ, NoSQL, Tối ưu hóa truy vấn, Thiết kế CSDL

- Kỹ thuật phần mềm & Quy trình phát triển: Kiến trúc phần mềm, Design Patterns, Testing, Quy trình Agile/Scrum

- Tự động hóa & Triển khai (DevOps/CI-CD): Docker, Kubernetes, CI/CD Pipeline, Quản lý hạ tầng bằng mã nguồn

- An toàn thông tin cơ bản: Bảo mật ứng dụng, Phân quyền và Quản lý truy cập, Mã hóa dữ liệu

- Lĩnh vực chuyên sâu (chọn 1 hoặc 2 hướng và tập trung sâu)

    + Phát triển phần mềm (Software Engineering - Frontend/Backend/Fullstack)

    + Kỹ sư Hệ thống & Đám mây (System/Cloud Engineer)

    + Kỹ sư DevOps / SRE (DevOps/Site Reliability Engineer)

    + Kỹ sư Mạng & Bảo mật (Network & Security Engineer)

Sau khi ra trường làm được những công việc gì?

- Kỹ sư Phát triển phần mềm (Software Engineer / Web / Mobile Developer): Thiết kế, xây dựng và bảo trì các ứng dụng web, di động hoặc phần mềm doanh nghiệp

- Kỹ sư DevOps / Cloud Engineer: Tự động hóa quy trình triển khai phần mềm, vận hành và tối ưu hạ tầng điện toán đám mây

- Kỹ sư Quản trị Hệ thống & Mạng (System / Network Administrator): Thiết kế, cấu hình và đảm bảo hạ tầng mạng, máy chủ của doanh nghiệp hoạt động liên tục, ổn định

- Kỹ sư An toàn thông tin (Cybersecurity / Security Engineer): Giám sát, phát hiện lỗ hổng và bảo vệ hệ thống thông tin khỏi các cuộc tấn công mạng

- Kỹ sư Dịch vụ CNTT & Hỗ trợ kỹ thuật (IT Helpdesk / IT Support Lead): Quản lý hạ tầng thiết bị, hỗ trợ người dùng và vận hành hệ thống CNTT nội bộ cho doanh nghiệp

Ngoài ra, bạn cũng có thể làm việc ở nhiều vị trí khác như: Database Administrator (DBA), QA/QC Engineer, Business Analyst (BA), Solutions Architect.

Môi trường làm việc?

- Các công ty sản xuất phần mềm: Nơi phát triển các sản phẩm công nghệ phục vụ người dùng hoặc doanh nghiệp

- Các công ty gia công phần mềm (Outsourcing Companies): Nơi nhận các dự án phát triển phần mềm từ đối tác toàn cầu

- Bộ phận IT thuộc các doanh nghiệp / Tập đoàn đa ngành: Ngân hàng, tài chính, bán lẻ, viễn thông, y tế, giáo dục…

- Các cơ quan nhà nước & Tổ chức chính phủ: Nơi triển khai các hệ thống chính phủ điện tử và hạ tầng công nghệ công cộng

- Công ty khởi nghiệp (Startups): Nơi bạn được trải nghiệm nhiều vị trí và xây dựng hệ thống từ con số 0

Mức thu nhập và cơ hội thăng tiến?

Mức thu nhập trong ngành CNTT thay đổi theo thị trường, kinh nghiệm, kỹ năng và quy mô công ty.

Bạn có thể cập nhật mức lương thực tế bằng cách tìm kiếm: tên công việc + “mức lương” trên các trang tuyển dụng, Google hoặc hỏi AI. Ví dụ: “Senior Software Engineer mức lương tại Việt Nam”.

Về cơ hội thăng tiến, trong hầu hết tổ chức bạn có 2 hướng phát triển chính:

- Hướng chuyên môn: Từ Junior Engineer > Senior > Tech Lead / Solutions Architect > Principal Engineer > …

- Hướng quản lý: Từ Team Lead > Engineering Manager > IT Director / CTO > ...

Ngoài ra, bạn cũng có thể chuyển sang hướng tư vấn giải pháp (IT Consultant) hoặc tự thành lập công ty dịch vụ công nghệ. Việc lựa chọn hướng phát triển phụ thuộc vào năng lực, tố chất và định hướng cá nhân của bạn.

AI có thay thế được bạn không?

Bạn sẽ có nguy cơ bị AI thay thế nếu:

- Chỉ biết lập trình theo yêu cầu (thợ lập trình) mà không nắm được tư duy thiết kế hệ thống, tối ưu hiệu năng và khả năng mở rộng

- Ngừng cập nhật công nghệ mới: Công nghệ phần mềm và hệ thống hạ tầng thay đổi liên tục. Nếu bạn không chủ động học để cập nhật các framework mới, công cụ tự động hóa mới, kỹ năng của bạn sẽ nhanh chóng bị lạc hậu

- Thiếu kỹ năng giao tiếp và hiểu bài toán kinh doanh: Không hiểu rõ nhu cầu của khách hàng/doanh nghiệp để biến thành giải pháp kỹ thuật phù hợp

AI là sản phẩm do con người tạo ra. Nó chỉ có khả năng thay thế những công việc mang tính lặp lại hoặc viết các đoạn mã phổ dụng.

Ngược lại, AI đang trở thành công cụ hỗ trợ đắc lực. Những kỹ sư biết tận dụng AI để tăng tốc độ phát triển phần mềm, tự động hóa quy trình và tập trung giải quyết các bài toán hệ thống phức tạp chính là người không thể bị thay thế.

2.2 Sự giao thoa giữa CNTT và KHMT

Để có cái nhìn tổng quan hơn, đồng thời giúp bạn nhận ra sự giao thoa của 2 hướng đi: chuyên gia KHMT và kỹ sư CNTT, chúng ta cùng quan sát bảng so sánh giữa 2 hướng đi này:

Tiêu chí

Chuyên gia KHMT

Kỹ sư CNTT

Bản chất & Trọng tâm

- Tập trung sâu vào lý thuyết, toán học, thuật toán và bản chất của tính toán

- Sáng tạo ra thuật toán mới, mô hình cốt lõi và hệ thống trừu tượng

- Mang tính ứng dụng cao

- Triển khai, quản trị, vận hành hệ thống và phát triển phần mềm để giải quyết bài toán thực tế của doanh nghiệp

Kiến thức cần học

- Nền tảng Toán (Toán rời rạc, Giải tích, Đại số tuyến tính, Xác suất thống kê)

- Cấu trúc dữ liệu và thuật toán nâng cao

- Lý thuyết máy tính, hệ thống lõi, lập trình song song/đồng thời

- Lĩnh vực chuyên sâu: AI/ML, NLP, Thị giác máy tính, Mật mã học, Khoa học dữ liệu

- Nền tảng Mạng & Hệ thống (Mạng, Hệ điều hành, Đám mây)

- Lập trình ứng dụng (Web, Mobile, Desktop)

- Cơ sở dữ liệu và kỹ thuật phần mềm (Design Patterns, Agile/Scrum)

- Tự động hóa & DevOps (Docker, Kubernetes, CI/CD)

Vị trí công việc tiêu biểu

- Kỹ sư AI / Học máy (AI/ML Engineer)

- Nhà khoa học dữ liệu (Data Scientist)

- Nghiên cứu viên (Research Scientist)

- Kỹ sư Thuật toán / Xử lý hình ảnh / NLP

- Kỹ sư Phát triển phần mềm (Software/Web/Mobile Developer)

- Kỹ sư DevOps / Cloud Engineer

- Kỹ sư Quản trị hệ thống & Mạng

- Kỹ sư An toàn thông tin (Cybersecurity)

Môi trường làm việc

- Tập đoàn/công ty công nghệ lớn, phòng R&D

- Viện nghiên cứu, trường đại học

- Công ty khởi nghiệp AI / DeepTech

- Công ty sản xuất phần mềm & công ty gia công phần mềm (Outsourcing)

- Bộ phận IT của các doanh nghiệp đa ngành (Ngân hàng, bán lẻ, y tế...)

- Cơ quan nhà nước, tổ chức chính phủ

Cơ hội thăng tiến

- Chuyên môn: Engineer > Senior > Staff/Principal > Distinguished Engineer

- Quản lý: Team Lead > Manager > Director

- Chuyên môn: Junior Engineer > Senior > Tech Lead / Solutions Architect > Principal Engineer

- Quản lý: Team Lead > Engineering Manager > IT Director / CTO

Nguy cơ bị AI thay thế nếu...

- Chỉ biết “gọi thư viện” (Dùng PyTorch, TensorFlow nhưng thiếu nền tảng toán học và nguyên lý cốt lõi)

- Ngừng cập nhật tri thức hoặc thiếu tư duy chuyển hóa giải pháp thành sản phẩm thực tế

- Chỉ lập trình theo yêu cầu (làm “thợ lập trình”) mà thiếu tư duy thiết kế hệ thống, tối ưu hiệu năng và mở rộng

- Không cập nhật công nghệ/framework mới hoặc thiếu kỹ năng hiểu bài toán kinh doanh

Hiện nay, ranh giới giữa KHMT và CNTT ngày càng mờ nhạt:

- Một kỹ sư CNTT giỏi không thể chỉ làm việc rập khuôn theo yêu cầu mà rất cần tư duy thuật toán và nền tảng của một chuyên gia KHMT để giải quyết các bài toán tối ưu, tích hợp AI vào ứng dụng hoặc tối ưu các hệ thống lớn

- Ngược lại, một chuyên gia KHMT khi phát triển các mô hình hay thuật toán mới cũng bắt buộc phải biết hiện thực hóa chúng thành các ứng dụng và hạ tầng công nghệ thực tế để đưa vào vận hành

Do vậy, không nên tách rời hai hướng đi này một cách cứng nhắc mà cần trang bị hài hòa kiến thức và kỹ năng ở cả 2 lĩnh vực để có thể bổ trợ cho nhau.

2.3 Kỹ năng số và Ứng dụng phổ thông

Đây là hướng đi phù hợp với những bạn muốn sử dụng công nghệ như một công cụ hỗ trợ cho các lĩnh vực khác như Kinh doanh số, Marketing, Quản trị, Sáng tạo nội dung…v.v.

Bạn cần học những gì?

- Tư duy số & Vận hành công cụ: Thành thạo phần mềm văn phòng, hệ thống quản lý dữ liệu trực tuyến (Cloud Storage, Notion, Excel/Google Sheets)

- Kỹ năng Marketing số & Truyền thông: SEO/SEM, quản trị mạng xã hội, chạy quảng cáo, phân tích hành vi khách hàng qua dữ liệu

- Kế toán & Quản trị kinh doanh số: Hệ thống CRM, phần mềm quản lý bán hàng (ERP), vận hành thương mại điện tử (E-commerce)

- Sáng tạo nội dung số cơ bản: Thiết kế đồ họa (Canva, Photoshop), dựng video ngắn (CapCut, Premiere), viết nội dung (Copywriting) và ứng dụng AI hỗ trợ sáng tạo

- Tư duy tự động hóa công việc: Sử dụng công cụ No-code/Low-code (Zapier, Make, Mendix…) để tối ưu quy trình làm việc hàng ngày

Sau khi ra trường làm được những công việc gì?

- Chuyên viên marketing số / Chuyên viên truyền thông mạng xã hội (Social Media Specialist): Lên chiến lược, triển khai và đo lường hiệu quả chiến dịch quảng cáo, truyền thông trên nền tảng số

- Chuyên viên Vận hành kinh doanh số (E-commerce / Digital Operations): Quản lý gian hàng trên sàn thương mại điện tử, vận hành hệ thống bán hàng đa kênh

- Chuyên viên Quản trị & Phân tích dữ liệu kinh doanh (Business Analyst / Data Analyst hỗ trợ kinh doanh): Thu thập, tổng hợp và trực quan hóa dữ liệu để hỗ trợ ra quyết định

- Nhà sáng tạo nội dung / Nhà chiến lược nội dung (Content Strategist): Xây dựng kịch bản, sản xuất và phát triển kênh nội dung trên mạng xã hội hoặc website

- Chuyên viên Chuyển đổi số & Hỗ trợ vận hành: Ứng dụng công cụ phần mềm vào quy trình quản trị, tối ưu công việc văn phòng

Môi trường làm việc ở đâu?

- Doanh nghiệp Thương mại điện tử & Bán lẻ trực tuyến

- Cơ quan, doanh nghiệp đa ngành (Tài chính, Giáo dục, Y tế, Du lịch, Bất động sản…): Bộ phận Marketing, Chăm sóc khách hàng, Vận hành số hoặc Hành chính – Nhân sự

- Công ty Agency (Quảng cáo, Truyền thông, Marketing)

- Doanh nghiệp khởi nghiệp (Startups) & Hộ kinh doanh số

- Làm việc tự do (Freelancer) hoặc tự kinh doanh (Solopreneur)

Mức thu nhập và cơ hội thăng tiến?

Mức thu nhập phụ thuộc vào năng lực thực chiến, hiệu quả công việc (KPI, doanh số) và quy mô công ty.

Bạn nên cập nhật mức lương thực tế bằng cách tìm kiếm: tên công việc + “mức lương” trên các trang tuyển dụng hoặc hỏi AI. Ví dụ: “Digital Marketing Specialist mức lương tại Việt Nam”.

Về cơ hội thăng tiến, bạn có thể phát triển theo hai hướng chính:

- Hướng chuyên môn sâu: Junior > Senior Specialist > Expert / Lead (Growth Lead, Content Director…v.v)

- Hướng quản lý: Team Leader > Marketing Manager / Operations Manager > CMO hoặc Giám đốc vận hành

Ngoài ra, đây là nhóm ngành có tính linh hoạt cao, tạo điều kiện thuận lợi để tự khởi nghiệp hoặc làm việc độc lập. Việc lựa chọn hướng phát triển phụ thuộc vào năng lực, tố chất và định hướng cá nhân.

AI có thay thế được bạn không?

Bạn sẽ có nguy cơ bị AI thay thế nếu:

- Chỉ làm những công việc mang tính lặp lại, đơn giản: Viết nội dung sơ sài, làm báo cáo thủ công hoặc thiết kế rập khuôn thiếu tư duy sáng tạo

- Ngừng cập nhật công cụ mới: Công cụ Marketing, AI tạo sinh và phần mềm quản trị thay đổi rất nhanh. Nếu bạn không học cách sử dụng AI, bạn dễ bị thay thế bởi người biết tận dụng AI

- Thiếu khả năng thấu hiểu con người và tư duy chiến lược: AI có thể viết chữ, tạo ảnh, nhưng không thể thấu cảm sâu sắc khách hàng, đàm phán hay xây dựng mối quan hệ kinh doanh thực tế

AI là công cụ hỗ trợ. Nó chỉ thay thế những người làm việc hời hợt, thiếu tư duy phản biện.

Ngược lại, AI chính là “cánh tay nối dài” mạnh mẽ cho nhóm ngành này. Những ai biết dùng AI sẽ viết nội dung nhanh hơn, phân tích dữ liệu sắc bén hơn và tự động hóa công việc sẽ trở thành nhân sự có năng suất vượt trội và khó bị thay thế.

2.4 Xem và đọc thêm

Sử dụng các từ khóa sau, tìm kiếm trên Youtube, Google, hoặc hỏi Chatbot để xem và đọc thêm: Học gì để có thể trở thành một kỹ sư CNTT, Sau khi ra trường làm được những công việc gì? Môi trường làm việc? Mức thu nhập và cơ hội thăng tiến? AI có thay thế được bạn không? Kỹ năng số và Ứng dụng phổ thông.

2.5 Bài tập và câu hỏi

Bài tập

Bài tập 2.1: Bạn có tố chất và năng lực để theo ngành CNTT không? Tại sao?

Bài tập 2.2: Nếu bạn dự định theo ngành CNTT, hãy nhờ Chatbot liệt kê một lộ trình học cho bản thân.

Bài tập 2.3: Bạn có tố chất và năng lực để theo hướng Kỹ năng số và Ứng dụng phổ thông không? Tại sao?

Bài tập 2.4: Nếu bạn dự định theo hướng Kỹ năng số và Ứng dụng phổ thông không, hãy nhờ Chatbot liệt kê một lộ trình học cho bản thân.

Câu hỏi

Câu 2a: Vị trí công việc nào có nhiệm vụ tự động hóa quy trình triển khai phần mềm, vận hành và tối ưu hạ tầng điện toán đám mây?

A. Kỹ sư Quản trị hệ thống & mạng

B. Kỹ sư Dịch vụ CNTT

C. Kỹ sư DevOps / Cloud Engineer

D. Kỹ sư An toàn thông tin

Câu 2b: Tại sao một lập trình viên chỉ biết "lập trình theo yêu cầu" lại có nguy cơ bị AI thay thế?

A. Vì AI không thể tự viết các đoạn mã phổ dụng

B. Vì công việc này thiếu tư duy thiết kế hệ thống, tối ưu hiệu năng và khả năng mở rộng — những công việc mang tính lặp lại mà AI có thể đảm nhận

C. Vì các doanh nghiệp gia công phần mềm (Outsourcing) sẽ dừng tuyển dụng lập trình viên

D. Vì AI có thể tự giao tiếp và thay thế hoàn toàn công việc kinh doanh của khách hàng

Câu 2c: Bạn cần học công cụ nào sau đây để có thể tạo ra được phần mềm mà không cần biết quá nhiều về lập trình?

A. Phần mềm văn phòng nâng cao và hệ điều hành Linux

B. Công cụ No-code / Low-code

C. Ngôn ngữ lập trình Python và C++

D. Hệ thống quản lý cơ sở dữ liệu quan hệ

Câu 2d: Tại sao một nhân sự làm việc trong lĩnh vực Kỹ năng số và Ứng dụng phổ thông lại có nguy cơ bị AI thay thế nếu chỉ làm những công việc lặp lại mang tính máy móc?

A. Vì AI không thể phân tích dữ liệu kinh doanh nhưng lại rất giỏi viết nội dung sơ sài và làm báo cáo thủ công

B. Vì các công cụ AI hiện nay cấm con người sử dụng trong các chiến dịch marketing số

C. Vì những công việc hời hợt, rập khuôn, thiếu tư duy sáng tạo và phản biện là các công việc AI có thể dễ dàng thay thế

D. Vì các doanh nghiệp thương mại điện tử bắt buộc phải tự động hóa 100% nhân sự bằng robot

-----
Bài sau:

Đồ thị tri thức (2) - Lưu trữ KG trên PostgreSQL

Bài trước: Đồ thị tri thức (1) - Tổng quan
-----

2. Lưu trữ KG trên PostgreSQL

Ở phần trước, bạn đã thực hiện cài đặt KG trên Python, trong đó:

- KG là một tập hợp các bộ-3: (Thực thể) -[Mối quan hệ]-> (Thực thể)

- Python sử dụng kiểu dữ liệu tuple để biểu diễn bộ-3

- Python sử dụng kiểu list để chứa toàn bộ KG (toàn bộ các bộ-3)

Với cách làm trên, chúng ta đã thực hiện cài đặt KG trên bộ nhớ máy tính (trên RAM). Cách cài đặt này chủ yếu để bạn tìm hiểu về KG, chứ không dùng trên môi trường thực tế. Vì nó có một số hạn chế sau:

- Khi tắt máy hoặc tắt chương trình thì KG cũng biến mất

- KG có kích thước lớn sẽ làm tràn bộ nhớ

- Không hỗ trợ xử lý đồng thời 

- Thiếu công cụ truy vấn

Trong thực tế, với các hệ thống phần mềm lớn, có một số cách sau để lưu KG:

- Sử dụng Hệ quản trị cơ sở dữ liệu (HQTCSDL) thông thường

- Sử dụng Hệ quản trị cơ sở dữ liệu chuyên cho KG

- Kết hợp trong các hệ thống AI hiện đại

2.1 Sử dụng HQTCSDL thông thường

Cách này tận dụng hệ thống có sẵn của doanh nghiệp, tiện cho việc cài đặt, tiết kiệm chi phí, phù hợp với KG chưa quá lớn và không đòi hỏi hiệu năng xử lý cao.

Bạn có thể sử dụng PostgreSQL, MySQL, SQL Server, MongoDB, Redis.

Thực hành cài đặt

Trên máy tính của bạn đang có HQTCSDL nào thì bạn thực hiện cài đặt KG trên đó.

Ví dụ, tôi sẽ cài đặt trên PostgreSQL.

Để lưu trữ KG lên PostgreSQL, cách hiệu quả nhất là dùng Danh sách kề (Adjacency List), gồm 2 bảng:

- Bảng entities: Lưu các thực thể

- Bảng relationships: Lưu bộ-3, gồm thực thể nguồn (source_id), thực thể địch (target_id) và tên mối quan hệ (relation)

Bước 1: Thiết kế và tạo CSDL trong PostgreSQL

- Mở pgAdmin, tạo một CSDL mới (ví dụ: knowledge_graph_db) và chạy tập lệnh DDL sau:

[SQL]

-- 1. Tạo bảng lưu trữ các thực thể (entities)

CREATE TABLE IF NOT EXISTS entities (

    id SERIAL PRIMARY KEY,

    name VARCHAR(255) UNIQUE NOT NULL

);

-- 2. Tạo bảng lưu trữ các mối quan hệ (Relationships / Edges)

CREATE TABLE IF NOT EXISTS relationships (

    id SERIAL PRIMARY KEY,

    source_id INT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,

    target_id INT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,

    relation VARCHAR(255) NOT NULL,

    CONSTRAINT unique_triple UNIQUE(source_id, target_id, relation)

);

Bước 2: Viết mã Python để chèn dữ liệu vào PostgreSQL

Để làm việc với PostgreSQL từ Python, bạn sử dụng thư viện psycopg2.

Cài đặt thư viện psycopg2 (nếu chưa có):

[CMD]

pip install psycopg2

Viết mã nguồn Python:

[insert_kg.py]

import psycopg2


# 1. Thông tin kết nối CSDL (Hãy thay đổi thông số theo cấu hình của bạn)

DB_CONFIG = {

    "dbname": "knowledge_graph_db",

    "user": "postgres",

    "password": "your_password",  # Thay mật khẩu của bạn vào đây

    "host": "localhost",

    "port": "5432"

}


# Tập bộ-3 (triples) đầu vào

triples = [

    ("RAG", "LLM", "cải thiện"),

    ("RAG", "Knowledge Graph", "kết hợp với"),

    ("Knowledge Graph", "Hiện tượng Hallucination", "giúp giảm thiểu"),

    ("Knowledge Graph", "Ngữ cảnh cấu trúc / Multi-hop Reasoning", "cung cấp"),

    ("LLM", "Thiếu tri thức miền chuyên sâu / Dữ liệu thời gian thực", "gặp hạn chế về")

]


def get_or_create_entity(cursor, entity_name):

    """Thêm thực thể vào bảng entities nếu chưa tồn tại và trả về ID."""

    cursor.execute(

        """

        INSERT INTO entities (name) 

        VALUES (%s) 

        ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name

        RETURNING id;

        """,

        (entity_name,)

    )

    return cursor.fetchone()[0]


try:

    # 2. Kết nối tới PostgreSQL

    conn = psycopg2.connect(**DB_CONFIG)

    cursor = conn.cursor()


    # 3. Duyệt từng triple và chèn dữ liệu

    for source, target, relation in triples:

        # Lấy hoặc tạo mới ID cho thực thể nguồn và đích

        source_id = get_or_create_entity(cursor, source)

        target_id = get_or_create_entity(cursor, target)


        # Chèn mối quan hệ (tránh trùng lặp nhờ ON CONFLICT)

        cursor.execute(

            """

            INSERT INTO relationships (source_id, target_id, relation)

            VALUES (%s, %s, %s)

            ON CONFLICT (source_id, target_id, relation) DO NOTHING;

            """,

            (source_id, target_id, relation)

        )


    # 4. Lưu thay đổi vào CSDL

    conn.commit()

    print("-> Đã lưu thành công Knowledge Graph vào PostgreSQL!")


except Exception as e:

    if 'conn' in locals():

        conn.rollback()

    print("Lỗi khi chèn dữ liệu:", e)


finally:

    if 'cursor' in locals():

        cursor.close()

    if 'conn' in locals():

        conn.close()

Bước 3: Chạy đoạn mã Python (insert_kg.py)

Bước 4: Truy vấn kiểm tra dữ liệu từ PostgreSQL

Sau khi chạy đoạn mã Python, bạn có thể mở CSDL knowledge_graph_db trong pgAdmin để xem dữ liệu đã được chèn vào các bảng.

Hoặc có thể sử dụng lệnh SQL sau để kiểm tra và lấy lại các bộ-3 dữ liệu:

[SQL]

SELECT 

    e1.name AS source,

    r.relation,

    e2.name AS target

FROM relationships r

JOIN entities e1 ON r.source_id = e1.id

JOIN entities e2 ON r.target_id = e2.id;

2.2 Xem và đọc thêm

Sử dụng các từ khóa sau, tìm kiếm trong Google, Youtube và Chatbot để đọc và xem thêm: cài đặt KG vào HQTCSDL thông thường và Python.

2.3 Bài tập và câu hỏi

Bài tập 2.1: Thực hiện lại các cài đặt như trong phần lý thuyết của bài học.

Bài tập 2.2: Cho KG gồm các bộ-3 (triple) sau:

(Sinh viên) ──[đang theo học]──> (Ngành Khoa học máy tính)

(Sinh viên) ──[tham gia]──> (Câu lạc bộ lập trình)

(Sinh viên) ──[đăng ký]──> (Môn học OOP )

(Môn học OOP) ──[được giảng dạy bởi]──> (Giảng viên)

(Giảng viên) ──[hướng dẫn]──> (Đồ án tốt nghiệp)

(Sinh viên) ──[thực hiện]──> (Đồ án tốt nghiệp)

Yêu cầu: Cài đặt KG trên vào PostgreSQL, sử dụng ngôn ngữ lập trình Python. Đặt tên CSDL là KG_SinhVien_db.

Câu hỏi

Câu 1a: Trong mô hình Danh sách kề (Adjacency List) để lưu trữ Đồ thị tri thức trên PostgreSQL, bảng relationships thường lưu trữ các thành phần nào của một bộ-3 (triple)?

A. Tên thực thể nguồn và tên thực thể đích (dạng chuỗi văn bản)

B. Khóa ngoại trỏ đến ID của thực thể nguồn (source_id), ID của thực thể đích (target_id) và tên mối quan hệ (relation)

C. Chỉ lưu duy nhất danh sách các mối quan hệ mà không cần liên kết với thực thể

D. Lưu toàn bộ đồ thị dưới dạng tập tin nhị phân trực tiếp trên một hàng duy nhất

Câu 1b: Tại sao đoạn mã Python chèn dữ liệu vào PostgreSQL lại sử dụng câu lệnh ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name (hoặc DO NOTHING) khi làm việc với bảng entities và relationships? 

A. Để tăng tốc độ thực thi câu lệnh SQL gấp nhiều lần so với thông thường

B. Để tự động xóa bỏ toàn bộ dữ liệu cũ trong CSDL trước khi chèn dữ liệu mới vào

C. Để xử lý tình huống trùng lặp dữ liệu (khi thực thể hoặc mối quan hệ đã tồn tại trong CSDL), giúp tránh phát sinh lỗi và đảm bảo tính toàn vẹn

D. Để chuyển đổi cấu trúc đồ thị từ dạng quan hệ sang dạng phi quan hệ (NoSQL) một cách tự động

-----
Bài sau: