PostgreSQL của lập trình viên AI tại Silicon Valley xử lý 2,000++ tỷ bản ghi dữ liệu
Vượt ra khỏi việc sử dụng cơ sở dữ liệu ở mức CRUD đơn thuần, đây là khóa học giúp bạn trau dồi năng lực ứng dụng PostgreSQL cần thiết trong kỷ nguyên AI từ góc độ thực tiễn. Dựa trên kinh nghiệm phát triển AI tại Thung lũng Silicon, khóa học sẽ hướng dẫn bạn từng bước cách thiết kế và vận hành JSON, chỉ mục, giao dịch và pgvector trong các dịch vụ thực tế, từ đó nắm vững phương pháp giải quyết các bài toán phức tạp về cấu trúc dữ liệu và tối ưu hiệu suất.
Tôi nghĩ đây thực sự là một bài giảng ở đẳng cấp rất hiếm thấy.. Tôi mới chỉ từng sử dụng MySQL thôi, nhưng qua đây tôi đã hiểu rõ hơn về sức hấp dẫn của PostgreSQL.
Cảm ơn bạn vì nội dung tuyệt vời này.
5.0
02년생 개발자
95% đã tham gia
Đây là người chia sẻ kiến thức duy nhất trên Inflearn mà tôi luôn bật thông báo và theo dõi sát sao...
Thầy luôn giảng giải lý thuyết thông qua nhiều hình ảnh minh họa đa dạng, và đúng như phần giới thiệu, 90% khóa học là thực hành. Chính vì vậy mà tôi thấy nó càng hữu ích và thú vị hơn.
Thay vì những bài giảng rập khuôn, thầy luôn dạy một cách thực tế nên rất hợp với phong cách của tôi. (Dù thỉnh thoảng thầy có mắc lỗi ㅋㅋㅋ nhưng thầy cũng thừa nhận một cách rất ngầu).
Tôi cũng đang tham gia cộng đồng, thầy luôn chia sẻ những thông tin hữu ích và trả lời mọi thắc mắc một cách rất thân thiện, thực sự tôi đã học hỏi được rất nhiều.
Luôn cảm ơn thầy rất nhiều. Tôi cũng hay viết đánh giá khóa học nhưng đây là lần đầu tiên tôi viết dài như thế này!!
5.0
junki
64% đã tham gia
Tôi đã xem kỹ bài giảng rồi.
Tôi mua khóa học này vì có việc cần tối ưu hóa (tuning) PostgreSQL, nhưng có vẻ nội dung về phần tuning không được đi sâu như tôi mong đợi.
Cá nhân tôi nghĩ khóa học này sẽ phù hợp với những ai muốn tìm hiểu về PostgreSQL một cách bao quát và rộng rãi.
Bạn sẽ nhận được điều này sau khi học.
Khả năng thiết kế cơ sở dữ liệu và cấu trúc bảng trên nền tảng PostgreSQL.
Khả năng viết SQL thực tiễn và vận dụng các mẫu truy xuất, cập nhật và xóa dữ liệu.
Năng lực tối ưu hóa hiệu suất thông qua chỉ mục, JOIN và truy vấn tổng hợp.
Khả năng xử lý dữ liệu trong kỷ nguyên AI thông qua JSONB, các phần mở rộng và pgvector
Nắm vững mô hình hóa dữ liệu thực chiến và góc nhìn vận hành trên nền tảng PostgreSQL
Các plugin đa dạng trong hệ sinh thái PostgreSQL
Phát triển · Lập trình · Cơ sở dữ liệu
Từ SQL cơ bản đến tối ưu hóa chỉ mục, giao dịch, pgvector khóa học bao quát mọi thứ chỉ với một PostgreSQL
Đây là khóa học PostgreSQL dành cho người mới bắt đầu, giúp bạn nắm vững PostgreSQL qua thực hành, từ SQL cơ bản đến tinh chỉnh chỉ mục, giao dịch, JSONB và pgvector. Khóa học giúp bạn chấm dứt quy trình rườm rà khi phải mở rộng thêm dung lượng cho log, thêm engine cho tìm kiếm, hay tích hợp thêm vector DB cho AI, bằng cách xử lý tất cả chỉ trong một cơ sở dữ liệu duy nhất.
Độ khó: Nhập môn
9 giờ 26 phút
39 bài giảng
Chú trọng thực hành
Môi trường Docker
Thời hạn học không giới hạn
Cơ bản → Phân tánMột lộ trình liền mạch từ khái niệm quan hệ đến môi trường phân tán
39 bài giảng · 9 giờ 26 phút9 phần, từ cơ bản đến phân tán
pgvector · JSONBtrong một DB duy nhất mà không cần phụ thuộc bên ngoài
Lộ trình học được đồng xây dựng bởi các lập trình viên server hiện đang làm việc tại các startup AI ở Thung lũng Silicon, những người đã xử lý khối lượng dữ liệu lên tới 2,000++ tỷ bản ghi Môi trường thực hành chỉ cần macOS (Apple M3) và Docker là đủ.
PostgreSQL · Cơ sở dữ liệu quan hệ-đối tượngCREATE TABLE · Ràng buộcINSERT / SELECT / UPDATE / DELETEMẫu truy vấn UPSERTSắp xếp · Tổng hợp · Thiết kế JOINChỉ mục B-Tree · GIN · GiSTGiao dịch · MVCC · Snapshot mức cô lậpDữ liệu phi cấu trúc JSONBTìm kiếm tương tự embedding pgvectorTiện ích mở rộng Tìm kiếm Tokenizercron · Thực hành tổng hợp Sharding phân tán39 bài giảng · 9 giờ 26 phút · Thực hành DockerPostgreSQL · Cơ sở dữ liệu quan hệ-đối tượngCREATE TABLE · Ràng buộcINSERT / SELECT / UPDATE / DELETEMẫu truy vấn UPSERTSắp xếp · Tổng hợp · Thiết kế JOINChỉ mục B-Tree · GIN · GiSTGiao dịch · MVCC · Snapshot mức cô lậpDữ liệu phi cấu trúc JSONBTìm kiếm tương tự embedding pgvectorTiện ích mở rộng Tìm kiếm Tokenizercron · Thực hành tổng hợp Sharding phân tán39 bài giảng · 9 giờ 26 phút · Thực hành Docker
Lý do khóa học này ra đời
Chính nhà phát triển từ Thung lũng Silicon đã đề xuất trước.
Dưới đây là nội dung cuộc hội thoại thực tế. Vị lập trình viên đến từ Silicon Valley đã gia nhập nhóm đã đề xuất PostgreSQL làm chủ đề mà chính mình muốn thảo luận.
Lập trình viên xuất thân từ Thung lũng SiliconKhông biết... em gia nhập cũng được một thời gian, dành thời gian quan sát mọi thứ và em có một chủ đề muốn thảo luận... liệu có ổn không ạ??
Lập trình viên TossAnh thì lúc nào cũng ok hết á hahaha Hong ơi làm việc thôi
Người phỏng vấn KakaoỒ!! Tôi cũng đang rất mong chờ xem anh sẽ chia sẻ về chủ đề gì!! Anh định chia sẻ về chủ đề gì vậy??
Lập trình viên xuất thân từ Silicon ValleyMình định bàn về DB haha, tính sẽ nói về PostgreSQL!! Vì bên mình có cung cấp pgvector nên trong kỷ nguyên AI này, nó có thể được ứng dụng cực kỳ hiệu quả mà không cần phụ thuộc quá nhiều
Người phỏng vấn KakaoỒ, tôi cũng chỉ mới nghe qua chứ chưa dùng bao giờ.. Để tôi cũng thử thanh toán xem sao haha
Lập trình viên Tosshahaha cứ tin tưởng anh ấy là được, ông anh đó code đỉnh thật, tư duy cũng rất bao quát
HongA... các anh lại giao cho em thử thách này nữa rồi... Em chỉ biết tin tưởng các anh rồi làm theo thôi haha Các anh cứ tổng hợp lại rồi gửi cho em, chúng ta cùng xem xét rồi triển khai nhé!!
Chính vì vậy mà khóa học này đã ra đời. Đây là những nội dung được một lập trình viên đang trực tiếp sử dụng PostgreSQL tại Thung lũng Silicon đề xuất ngay từ đầu: "Đây là phần nhất định phải đề cập đến".
Những gì bạn đang trải qua lúc này
Chúng tôi không chỉ phát triển tính năng, mà đang bảo trì hệ thống.
Ban đầu, chúng ta bắt đầu thật đơn giản. Chỉ cần một MySQL là đủ và CRUD hoạt động trơn tru thì không có vấn đề gì. Thế nhưng chỉ cần dịch vụ mở rộng dù chỉ một chút, tình hình sẽ hoàn toàn khác.
Khi bắt đầu thu thập log, chúng ta lại phải cân nhắc việc sử dụng một kho lưu trữ riêng,
Khi tích hợp thêm tính năng tìm kiếm, ta lại phải gắn thêm Elasticsearch
thêm Redis để xử lý thời gian thực và
Khi định tích hợp thêm tính năng AI, tôi lại nhận ra mình phải gắn thêm cả Vector DB.
"Hóa ra tôi không chỉ đang xây dựng các tính năng, mà đang bảo trì cả một hệ thống."
Cơ sở dữ liệu trong kỷ nguyên AI
Vì sao PostgreSQL lại được săn đón trong kỷ nguyên AI?
Trước đây, các cơ sở dữ liệu chủ yếu tập trung vào vai trò lưu trữ và truy vấn dữ liệu có cấu trúc. Giờ đây mọi chuyện đã khác. Với sự xuất hiện của các dịch vụ AI, chúng ta không chỉ còn xử lý mỗi dữ liệu dạng bảng đơn thuần nữa.
Dữ liệu phi cấu trúc dưới dạng JSON
Dữ liệu log tích lũy liên tục
Dữ liệu vector dựa trên embedding
Môi trường đòi hỏi xử lý cùng lúc cả ba loại dữ liệu này đã hiện hữu. PostgreSQL xây dựng lược đồ linh hoạt nhờ JSONB, duy trì hiệu suất ngay cả trên các tập dữ liệu lớn thông qua cơ chế lập chỉ mục, và xử lý cả tác vụ tìm kiếm tương đồng dựa trên AI nhờ các tiện ích mở rộng như pgvector. Tất cả chỉ với một PostgreSQL duy nhất mà không cần thêm bất kỳ phần phụ thuộc nào.
Không cần triển khai nhiều hệ thống riêng biệt, chỉ với một PostgreSQL, bạn có thể đáp ứng mọi yêu cầu xử lý dữ liệu thiết yếu trong kỷ nguyên AI.
Bản đồ chỉ mục
Khi nào và nên sử dụng loại chỉ mục PostgreSQL nào?
Lý do PostgreSQL cung cấp nhiều loại chỉ mục khác nhau là do đặc điểm dữ liệu ở mỗi trường hợp đều khác biệt. Trong Phần 6, Chỉ mục và Tối ưu hóa Hiệu năng, các tiêu chí lựa chọn này sẽ được đi sâu qua các bài thực hành.
Cây B
Đây là chỉ mục mặc định của PostgreSQL. Được dùng cho các điều kiện xét thứ tự giá trị như so sánh bằng và bất đẳng thức, truy vấn phạm vi hay sắp xếp. Chỉ mục này là đủ cho hầu hết các cột.
GIN
Được dùng cho các cột chứa nhiều phần tử trong một giá trị. Nó phù hợp với các điều kiện truy vấn kiểu "bên trong chứa những gì", như tìm kiếm khóa-giá trị JSONB, mảng hay tìm kiếm toàn văn.
GiST
Được dùng cho các điều kiện cần xét xem các giá trị có chồng lấn hay bao hàm nhau hay không, như dữ liệu hình học hoặc kiểu phạm vi. Thường xuất hiện khi xử lý dữ liệu dựa trên vị trí.
Xem trước nội dung bài giảng thực tế
Chúng ta sẽ đề cập đến những tình huống này.
Màn hình chạy nhanh hơn lời giải thích. Đây là một đoạn được cắt nguyên vẹn từ bài giảng thực tế.
Tokenizer sử dụng Search ExtensionQuá trình phân tách văn bản thành các token thông qua Search Extension
Thực hành tổng hợp sử dụng cron & phân mảnh phân tánBài thực hành tổng kết kết hợp lập lịch và cấu hình phân tán
Phân tích truy vấn trong môi trường phân tánKiểm tra cách truy vấn hoạt động khi các node được phân chia
Thực hành snapshot theo từng phiên dựa trên mức cô lậpPhân chia các phiên để trực tiếp quan sát sự khác biệt do các mức cô lập tạo ra
Thay vì ghép nối, lựa chọn đi sâu vào một thứ.
Bài 39, 9 giờ 26 phút. Nội dung được trình bày tuần tự, bắt đầu từ SQL cơ bản đến môi trường phân tán.
PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ (DBMS/RDBMS) được sử dụng rộng rãi cùng với MySQL và Oracle. Tuy cùng là cơ sở dữ liệu quan hệ, nhưng những đặc điểm dưới đây chính là lý do để chọn PostgreSQL.
ACID
PostgreSQL hỗ trợ giao dịch ACID, đảm bảo tính nhất quán của dữ liệu. Nó cũng được ứng dụng ổn định trong các hệ thống đòi hỏi độ chính xác cao như tài chính và thanh toán.
MVCC
MVCC (Kiểm soát đồng thời đa phiên bản) của PostgreSQL giúp các thao tác đọc và ghi không chặn lẫn nhau, từ đó đảm bảo tính đồng thời và hiệu suất cao.
Chỉ mục
PostgreSQL hỗ trợ nhiều loại chỉ mục khác nhau như B-Tree, GIN, GiST, giúp xử lý hiệu quả các truy vấn phức tạp. Đối với các cột phi cấu trúc như JSONB, bạn có thể tạo chỉ mục GIN để tăng tốc độ tìm kiếm khóa-giá trị.
Khả năng mở rộng
PostgreSQL cho phép mở rộng linh hoạt chính cơ sở dữ liệu thông qua các hàm, kiểu dữ liệu và mô-đun mở rộng do người dùng tự định nghĩa.
SQL chuẩn
PostgreSQL tuân thủ chặt chẽ chuẩn SQL, đồng thời cung cấp đa dạng các tính năng cần thiết trong thực tiễn.
JSONB · GIS
PostgreSQL không chỉ xử lý dữ liệu quan hệ mà còn xử lý cả dữ liệu bán cấu trúc như JSONB và dữ liệu vị trí (GIS) trong cùng một cơ sở dữ liệu.
Hệ sinh thái
PostgreSQL sở hữu hệ sinh thái mở rộng, cho phép linh hoạt tích hợp các extension như pgvector, PostGIS tùy theo nhu cầu.
Tài liệu chính thức mô tả PostgreSQL như sau.
PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ - đối tượng mã nguồn mở mạnh mẽ, nổi tiếng với độ tin cậy cao, tính năng phong phú và hiệu suất vượt trội.
PostgreSQL là một hệ thống cơ sở dữ liệu quan hệ - đối tượng mã nguồn mở mạnh mẽ, nổi tiếng với độ tin cậy cao, tính năng phong phú và hiệu suất vượt trội.
Ngay cả trên cùng một bảng, phản hồi truy vấn sẽ thay đổi tùy thuộc vào việc bạn tạo chỉ mục nào, và dữ liệu mà các phiên khác nhau nhìn thấy cũng sẽ khác đi chỉ qua một dòng thiết lập mức cô lập. Nắm rõ các tính năng là một chuyện, nhưng biết nên chọn gì trong tình huống thực tế lại là một chuyện hoàn toàn khác.
Lý do khóa học này đặc biệt
Tại sao nên chọn khóa học PostgreSQL này?
Được thiết kế từ góc nhìn của một lập trình viên đang làm việc thực tế tại Thung lũng Silicon.
Khóa học này được xây dựng cùng với một kỹ sư server 13 năm kinh nghiệm, hiện đang phát triển các ứng dụng AI tại Thung lũng Silicon. Khóa học truyền tải trọn vẹn những quan điểm và tiêu chuẩn đánh giá được đúc kết từ kinh nghiệm thực chiến với PostgreSQL.
Hầu hết các bài giảng đều gắn liền với thực hành và truy vấn.
Tất cả các bài giảng đều đi kèm với các truy vấn PostgreSQL thực tế, phần giải thích khái niệm luôn gắn liền với thực hành. Trong số 39 bài giảng, hầu hết đều được tiến hành bằng cách trực tiếp thực thi các truy vấn.
Không chỉ xem đây là một kho lưu trữ đơn thuần, mà còn là trung tâm của hệ thống.
Không chỉ dừng lại ở SQL cơ bản. Nội dung còn trải dài từ chỉ mục và hiệu năng, giao dịch và tính đồng thời, cho đến môi trường phân tán và lập lịch, giúp bạn nhìn nhận cơ sở dữ liệu như một thành phần cốt lõi trong thiết kế dịch vụ.
Trực tiếp khám phá vai trò của PostgreSQL trong kỷ nguyên AI.
Thực hành trực tiếp các truy vấn tìm kiếm vector embedding với pgvector. Bạn có thể tận mắt chứng kiến quá trình tìm kiếm tương đồng diễn ra ngay trong PostgreSQL mà không cần sử dụng bất kỳ cơ sở dữ liệu vector riêng biệt nào.
Dành cho những ai
Khóa học PostgreSQL này dành cho ai?
Lập trình viên sơ cấp và trung cấp muốn củng cố vững chắc nền tảng PostgreSQL từ những điều cơ bảnNhững ai muốn học có hệ thống các mẫu INSERT, UPDATE, DELETE đa dạng vượt ra ngoài CRUD đơn thuần, cũng như tối ưu hóa SELECT và tận dụng chỉ mục.
Các lập trình viên backend muốn tìm hiểu cách ứng dụng PostgreSQLNhững ai muốn hệ thống hóa toàn diện từ các khái niệm cơ bản như DDL, DML cho đến những góc nhìn có thể áp dụng ngay vào thực tế.
Ứng viên Backend và lập trình viên junior cần chuẩn bị phỏng vấn Những ai muốn hệ thống hóa các chủ đề thường gặp như giao dịch, tính toàn vẹn, chỉ mục và FK theo chuẩn thực tiễn
Lập trình viên hướng tới vị trí Senior muốn coi PostgreSQL là cấu trúc cốt lõi của hệ thốngNhững ai muốn hiểu rõ nó không chỉ đơn thuần là kho lưu trữ mà là thành phần trung tâm trong thiết kế dịch vụ, đồng thời quan tâm đến việc tái cấu trúc schema và sự tiến hóa của cấu trúc DB.
Nhà phát triển tò mò về vai trò của cơ sở dữ liệu trong kỷ nguyên AI và những ai muốn trực tiếp chạy thử truy vấn tìm kiếm vector embedding bằng pgvector
Ngược lại, nếu bạn có thể giải thích ngay sự khác biệt trong thiết kế JSONB, lựa chọn chỉ mục và các mức cô lập, thì bạn không cần đến khóa học này.
Chương trình học
Chương trình học khóa PostgreSQL · Tổng 39 bài giảng · 9 giờ 26 phút
Khóa học được thiết kế theo trình tự phù hợp cho các lập trình viên lần đầu tiên học PostgreSQL. Bắt đầu từ nền tảng cơ sở dữ liệu, nội dung lần lượt triển khai qua SQL cơ bản, thiết kế truy vấn, chỉ mục và hiệu năng, giao dịch, Extension, cho đến hệ thống phân tán. Các phần trước được thiết kế làm tiền đề cho các phần sau.
Phần 1. Giới thiệu khóa học
Bài 2 · 7 phút
Cơ sở dữ liệu PostgreSQL đang lên ngôi nhất trong kỷ nguyên AI!!07:09
Cộng đồng KakaoTalk cùng Hong!Tài liệu
Phần 2. Cơ sở dữ liệu cơ bản và Giới thiệu về PostgreSQL
Bài 3 · 20 phút
Cơ sở dữ liệu và khái niệm quan hệ11:10
Đặc điểm PostgreSQL và thiết lập môi trường Docker09:38
Thiết lập kết nối DBTài liệu
Phần 3. Quan hệ bảng và SQL cơ bản
Bài 6 · 1 giờ 27 phút
Kiểu dữ liệu15:00
Tạo bảng và ràng buộc16:21
INSERT và SELECT18:52
UPDATE và DELETE07:38
Các toán tử WHERE16:53
Mẫu truy vấn UPSERT12:31
Phần 4. Sắp xếp · Tổng hợp · Thiết kế JOIN
Bài 6 · 1 giờ 26 phút
Đề cập đến sắp xếp và tổng hợp, cùng thiết kế JOIN liên kết nhiều bảng.1:26:00
Phần 5. Các mẫu truy vấn SQL nâng cao
Bài 4 · 47 phút
Thực hành nắm vững các mẫu truy vấn nâng cao vượt ra ngoài cú pháp cơ bản.47:00
Phần 6. Chỉ mục và Tối ưu hóa hiệu suất
Bài 5 · 1 giờ 41 phút
Đề cập đến các chỉ mục B-Tree, GIN, GiST và góc nhìn tối ưu hóa hiệu năng.1:41:00
Phần 7. Giao dịch · Tính đồng thời · Khả năng mở rộng
4 bài giảng · 1 giờ 14 phút
Trình bày về giao dịch và các mức cô lập, tính đồng thời và khả năng mở rộng dựa trên MVCC.1:14:00
Phần 8. Tính năng Extension
5 bài giảng · 1 giờ 12 phút
Đề cập đến pgvector, tiện ích mở rộng tìm kiếm và các tính năng mở rộng khác trong hệ sinh thái PostgreSQL.1:12:00
Phần 9. Môi trường phân tán và lập lịch
Bài 4 · 1 giờ 9 phút
Kết thúc bằng bài thực hành tổng hợp về thiết lập môi trường phân tán và lập lịch dựa trên cron.1:09:00
Công nghệ được đề cập · Môi trường thực hành
Chúng ta sẽ thực hành với những gì?
PostgreSQL
JSONB
B-Tree · GIN · GiST
MVCC · Mức cô lập
pgvector
Tiện ích mở rộng Tìm kiếm
cron · phân mảnh phân tán
Docker
macOS (Apple M3)
Hệ quản trị cơ sở dữ liệu / Hệ quản trị cơ sở dữ liệu quan hệ
cơ sở dữ liệu
Được triển khai trên môi trường Apple M3 Air, chúng tôi sử dụng Docker để tinh gọn và thiết lập môi trường biệt lập. Chỉ cần khởi chạy một container trên máy local là bạn có thể bắt tay vào thực hành ngay.
Nếu bạn đã xem hết toàn bộ chương trình học
Thời hạn học là vô thời hạn. Bạn có thể xem lại bất cứ khi nào cần.
Lập trình viên Thung lũng Silicon đã cùng chuẩn bị khóa học này
Thung lũng Silicon · Lập trình viên máy chủ Startup AI
Waddy
Là một lập trình viên backend với 13 năm kinh nghiệm, tôi từng làm việc tại nhiều công ty trong nước, gần đây đã chuyển sang Thung lũng Silicon và hiện đang phát triển các dự án liên quan đến AI. Tôi tham gia khóa học này nhờ cơ duyên với một người bạn lập trình viên tại Toss, và tôi sẽ cố gắng truyền đạt những kiến thức mình có một cách dễ hiểu và gần gũi nhất.
[Hiện tại] Lập trình viên Server tại startup AI ở Thung lũng Silicon
[Cựu] Lập trình viên máy chủ tại trụ sở chính Kakao
[Trước đây] Lập trình viên server tại 2-3 startup trong nước
[Cũ] Chuyên ngành Khoa học Máy tính tại nước ngoài
Câu hỏi thường gặp
Câu hỏi thường gặp về khóa học PostgreSQL
PostgreSQL là loại cơ sở dữ liệu nào?
PostgreSQL là hệ quản trị cơ sở dữ liệu đối tượng-quan hệ mã nguồn mở. Vừa xử lý tốt các bảng quan hệ, vừa được trang bị sẵn các giao dịch ACID, cơ chế đồng thời MVCC, các chỉ mục B-Tree, GIN, GiST cùng các hàm, kiểu dữ liệu và mô-đun mở rộng do người dùng tự định nghĩa, cho phép quản lý song song cả dữ liệu có cấu trúc lẫn dữ liệu phi cấu trúc như JSON và vector trong cùng một cơ sở dữ liệu. Khóa học này sẽ hướng dẫn thực hành và nắm vững các tính năng trên theo trình tự: SQL cơ bản → Chỉ mục → Giao dịch → Extension.
Vì sao PostgreSQL lại được chú ý trong kỷ nguyên AI?
Đó là bởi vì dữ liệu cần xử lý không chỉ còn giới hạn ở các bảng có cấu trúc. Chúng ta phải xử lý đồng thời dữ liệu phi cấu trúc dạng JSON, các log liên tục sinh ra và dữ liệu vector dựa trên embedding, nhưng PostgreSQL có thể giải quyết tất cả tại một nơi duy nhất: sử dụng JSONB cho các schema linh hoạt, sử dụng chỉ mục để tối ưu hiệu năng cho các tập dữ liệu lớn, và sử dụng tiện ích mở rộng pgvector để tìm kiếm tương đồng. Điểm mấu chốt là chúng ta không cần phải kết nối nhiều hệ thống lại với nhau.
pgvector là gì?
pgvector là một extension bổ sung kiểu dữ liệu vector và các toán tử khoảng cách tương đồng cho PostgreSQL. Khi lưu trữ các embedding trong cột, bạn có thể tìm ra các mục tương đồng nhất chỉ bằng điều kiện sắp xếp trong câu lệnh SELECT thông thường, nhờ đó có thể tích hợp các tính năng AI mà không cần sử dụng một cơ sở dữ liệu vector riêng biệt. Tại Phần 8 về tính năng Extension, chúng ta sẽ trực tiếp thực thi câu truy vấn này.
Có thể tạo chỉ mục cho cột JSONB trong PostgreSQL không?
Đúng vậy. Bạn có thể tạo chỉ mục GIN trên cột JSONB để khi tìm kiếm theo một khóa hoặc giá trị cụ thể, hệ thống có thể truy vấn mà không cần quét toàn bộ bảng. Điều này có nghĩa là ngay cả khi lưu trữ dữ liệu phi cấu trúc, bạn vẫn có thể tìm kiếm nhanh chóng như đối với bảng quan hệ. Phần 6 Chỉ mục và Tối ưu hóa Hiệu suất sẽ đề cập đến các chỉ mục B-Tree, GIN và GiST.
PostgreSQL có gì khác biệt so với các RDBMS khác như MySQL hay Oracle?
Cả ba đều là Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) nên khung sườn gồm bảng, SQL và giao dịch là như nhau. Điểm làm nên sự khác biệt của PostgreSQL nằm ở cấu trúc chỉ mục và cơ chế phần mở rộng. Ngoài B-Tree, PostgreSQL còn cung cấp sẵn các chỉ mục GIN và GiST, cho phép tạo chỉ mục cho các cột phi cấu trúc như JSONB hay mảng, đồng thời cho phép cài đặt các phần mở rộng như pgvector để tích hợp trực tiếp tính năng tìm kiếm vector ngay trong cơ sở dữ liệu. Nhờ đó, khi dịch vụ mở rộng, bạn có thể hạn chế việc phải tích hợp riêng lẻ từng hệ thống như kho lưu trữ log, công cụ tìm kiếm hay cơ sở dữ liệu vector. Khóa học này sẽ cùng phân tích các tiêu chí lựa chọn và những giới hạn của chúng trong Phần 6 và Phần 8.
Người mới bắt đầu có thể theo học PostgreSQL được không?
Vâng. Đây là khóa học dành cho người mới bắt đầu, khởi đầu từ các khái niệm cơ sở dữ liệu và mô hình quan hệ, sau đó tiếp nối theo trình tự: kiểu dữ liệu, ràng buộc và SQL cơ bản. Chỉ cần có kinh nghiệm sử dụng SQL cơ bản là đủ, và các phần sau về chỉ mục, giao dịch cùng môi trường phân tán sẽ mang đến những nội dung mới mẻ ngay cả đối với những người đã có kinh nghiệm thực tế.
Mức cô lập giao dịch trong PostgreSQL được xử lý như thế nào?
PostgreSQL hỗ trợ các mức cô lập Read Committed, Repeatable Read và Serializable, với mức mặc định là Read Committed. Tại Phần 7 về Giao dịch, Tính đồng thời và Khả năng mở rộng, chúng ta sẽ chia thành các session và thay đổi các mức cô lập để trực tiếp kiểm tra xem các snapshot mà mỗi session nhìn thấy tại cùng một thời điểm khác nhau như thế nào.
Môi trường thực hành được thiết lập như thế nào?
Thực hiện trên môi trường Apple M3 Air, sử dụng Docker nhằm tinh gọn và thiết lập môi trường khép kín. Trong Phần 2, nội dung sẽ bao gồm các đặc điểm của PostgreSQL cùng với cách thiết lập môi trường Docker và cấu hình kết nối DB, do đó bạn chỉ cần làm theo hướng dẫn là được.
Những Extension nào sẽ được đề cập?
Tại Phần 8 về các tính năng Extension (Bài 5, 1 giờ 12 phút), chúng ta sẽ tìm hiểu về tìm kiếm vector embedding sử dụng pgvector và tokenizer sử dụng Search Extension. Tiếp nối ở Phần 9, khóa học sẽ khép lại bằng bài thực hành tổng hợp kết hợp cron và phân mảnh phân tán.
Ngay cả khi bạn đang dùng PostgreSQL trong công việc thực tế, liệu có lý do gì để tham gia khóa học này nữa không?
PostgreSQL hỗ trợ các mức cô lập Read Committed, Repeatable Read và Serializable, trong đó mức mặc định là Read Committed. Tùy theo mức cô lập, thời điểm các thay đổi đã được commit từ các phiên khác hiển thị trong giao dịch của bạn sẽ khác nhau. Viết truy vấn và giải thích sự khác biệt này là hai chuyện hoàn toàn khác nhau. Tại Phần 7, chúng ta sẽ thực hành chia các phiên để xem trực tiếp các snapshot ở từng mức cô lập khác nhau như thế nào, Phần 6 sẽ đề cập đến tiêu chí chọn chỉ mục, và Phần 9 thảo luận về cách các truy vấn vận hành trong môi trường phân tán.
Tự học qua tài liệu chính thức thì không được sao?
Tài liệu chính thức giải thích chính xác chức năng của từng tính năng. Tuy nhiên, tài liệu sẽ không thay bạn quyết định nên tạo chỉ mục nào cho bảng hiện tại, hay điều gì sẽ thay đổi trong dịch vụ của bạn khi điều chỉnh cấp độ cô lập. Khóa học này dành thời gian trực tiếp thực thi các truy vấn để kiểm chứng và đưa ra những đánh giá đó.
Độ khó chỉ ở mức nhập môn, nhưng phạm vi bao quát đến đâu?
Khóa học bắt đầu với các khái niệm về cơ sở dữ liệu và mô hình quan hệ, nhưng sẽ kết thúc với chỉ mục và tối ưu hóa hiệu suất (Phần 6), giao dịch và tính đồng thời (Phần 7), Extension (Phần 8), cùng môi trường phân tán và lập lịch (Phần 9). Toàn bộ 39 bài giảng với tổng thời lượng 9 giờ 26 phút được triển khai theo mạch kiến thức này, cùng thời hạn học không giới hạn, cho phép bạn xem lại bất cứ phần nào mình cần.
Lộ trình khóa học PostgreSQL được sắp xếp theo trình tự nào?
Bắt đầu với các khái niệm về cơ sở dữ liệu và mô hình quan hệ, thiết lập môi trường Docker, tiếp đến là các kiểu dữ liệu và ràng buộc, SQL cơ bản, thiết kế sắp xếp, tổng hợp và JOIN, các mẫu truy vấn nâng cao, chỉ mục và tối ưu hóa hiệu suất, giao dịch, tính đồng thời và khả năng mở rộng, Extension, môi trường phân tán và lập lịch. Toàn bộ khóa học gồm 39 bài giảng với tổng thời lượng 9 giờ 26 phút và thời hạn học là không giới hạn.
Lý do chọn chỉ mục như vậy, và điều gì sẽ thay đổi khi điều chỉnh mức cô lập.
Bắt đầu từ SQL cơ bản, khám phá chỉ mục và hiệu suất, giao dịch, cho đến tìm kiếm vector pgvector qua thực hành xuyên suốt 39 bài giảng.
Chúng tôi đang vận hành phòng chat mở dành cho lập trình viên, nơi mọi người cùng chia sẻ về sự nghiệp, thực tiễn công việc và công nghệ. Trong quá trình theo dõi bài giảng, bạn hãy thoải mái chia sẻ những thắc mắc hay những băn khoăn trong thực tế công việc nhé.
Lập trình viên backend lần đầu tiên học PostgreSQL nhưng mong muốn hiểu sâu và nắm vững theo định hướng thực tiễn.
Lập trình viên muốn tìm hiểu chuyên sâu vượt ra khỏi mức CRUD, đi sâu vào cấu trúc Index, Transaction và JOIN.
Các nhà phát triển muốn xử lý JSON, dữ liệu vector và các tiện ích mở rộng bằng PostgreSQL trong kỷ nguyên AI
Các lập trình viên Junior và trung cấp thường xuyên gặp phải các vấn đề về hiệu suất cơ sở dữ liệu và tối ưu hóa truy vấn.
Các ứng viên đang tìm việc và lập trình viên đang làm việc mong muốn nâng cao năng lực thiết kế cơ sở dữ liệu và kỹ năng vận dụng SQL trong phỏng vấn cũng như thực tiễn công việc.
Dành cho những ai muốn tìm hiểu về hệ sinh thái plugin đa dạng của PostgreSQL
Tôi bắt đầu học lập trình sau một thời gian dài lười biếng ở nhà và cảm thấy hứng thú với nó, hiện tại tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp tôi đã học cũng như những vấn đề và giải pháp khác nhau mà các bạn có thể gặp phải trong thực tế.
Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của những người cộng sự.
Tôi đã xem kỹ bài giảng rồi.
Tôi mua khóa học này vì có việc cần tối ưu hóa (tuning) PostgreSQL, nhưng có vẻ nội dung về phần tuning không được đi sâu như tôi mong đợi.
Cá nhân tôi nghĩ khóa học này sẽ phù hợp với những ai muốn tìm hiểu về PostgreSQL một cách bao quát và rộng rãi.
Chào bạn junki, cảm ơn bạn đã để lại đánh giá. Nếu bạn có thể chia sẻ thêm về những phần mà bạn còn thắc mắc, mình sẽ nhanh chóng giải đáp cho bạn.
Rất mong nhận được câu hỏi của bạn qua Inflearn!! Nếu bạn tham gia cộng đồng của chúng mình và chia sẻ những điều bạn học được trong quá trình thực hiện tuning thì sẽ giúp ích được rất nhiều cho mọi người đấy ạ hehe.
Chúc bạn một ngày tốt lành!
Chào giảng viên.
Trước hết, tôi đã xem kỹ bài giảng và nó đã giúp ích cho tôi rất nhiều. Cảm ơn giảng viên đã dành thời gian phản hồi cho tôi.
Thực tế là các bài giảng tiếng Hàn về PostgreSQL không có nhiều nên tôi đã tìm xem một số bài giảng nước ngoài trên YouTube. Tôi thấy rằng liên quan đến việc tối ưu hóa (tuning), họ không chỉ đề cập đến cách viết câu lệnh truy vấn hay thiết lập index, mà còn nói về cấu trúc bộ nhớ của PostgreSQL và các giá trị thiết lập tương ứng.
Theo ý kiến cá nhân của tôi, sẽ thật tốt nếu những nội dung này cũng được đưa vào giải thích cùng.
(Ngoài ra, đây là mong muốn cá nhân của riêng tôi, tôi hy vọng sẽ có thêm phần giải thích về lệnh EXPLAIN với các trường hợp phức tạp và đa dạng hơn nữa.)
À, ra là vậy ạ ㅠㅠ Vì mình muốn đây là một bài giảng hữu ích cho cả những người mới bắt đầu nên mình đã đi chậm từ những khái niệm cơ bản, rất xin lỗi bạn vì chưa thể khai thác sâu đến khía cạnh tối ưu hóa (tuning) ㅠㅠ Mình sẽ cố gắng khai thác những nội dung chuyên sâu hơn trong tương lai để có thể làm hài lòng cả bạn junki nữa nhé!!
Tôi nghĩ đây thực sự là một bài giảng ở đẳng cấp rất hiếm thấy.. Tôi mới chỉ từng sử dụng MySQL thôi, nhưng qua đây tôi đã hiểu rõ hơn về sức hấp dẫn của PostgreSQL.
Cảm ơn bạn vì nội dung tuyệt vời này.
Đây là người chia sẻ kiến thức duy nhất trên Inflearn mà tôi luôn bật thông báo và theo dõi sát sao...
Thầy luôn giảng giải lý thuyết thông qua nhiều hình ảnh minh họa đa dạng, và đúng như phần giới thiệu, 90% khóa học là thực hành. Chính vì vậy mà tôi thấy nó càng hữu ích và thú vị hơn.
Thay vì những bài giảng rập khuôn, thầy luôn dạy một cách thực tế nên rất hợp với phong cách của tôi. (Dù thỉnh thoảng thầy có mắc lỗi ㅋㅋㅋ nhưng thầy cũng thừa nhận một cách rất ngầu).
Tôi cũng đang tham gia cộng đồng, thầy luôn chia sẻ những thông tin hữu ích và trả lời mọi thắc mắc một cách rất thân thiện, thực sự tôi đã học hỏi được rất nhiều.
Luôn cảm ơn thầy rất nhiều. Tôi cũng hay viết đánh giá khóa học nhưng đây là lần đầu tiên tôi viết dài như thế này!!
Chào bạn nhà phát triển sinh năm 02, cảm ơn bạn đã để lại đánh giá tốt nhé!! Mình sẽ cố gắng cung cấp thêm nhiều nội dung hữu ích hơn nữa trong tương lai!! Chúc bạn một ngày tốt lành nhé!