PostgreSQL - Overview

Xin chào các nhà thuật toán tương lai! Tôi rất phấn khích được bắt đầu hành trình này cùng các bạn vào thế giới kỳ diệu của PostgreSQL. Là người đã dạy khoa học máy tính trong nhiều năm hơn tôi muốn thừa nhận (hãy chỉ nói rằng tôi nhớ khi các đĩa mềm thực sự柔软), tôi rất vui mừng được chia sẻ kiến thức và niềm đam mê của mình cho hệ thống cơ sở dữ liệu mạnh mẽ này với các bạn.

PostgreSQL - Overview

PostgreSQL là gì?

PostgreSQL, thường được gọi thân mật là "Postgres" bởi những người hâm mộ của nó (vâng, các cơ sở dữ liệu có thể có fan!), giống như chiếc瑞士军刀 của các hệ thống quản lý cơ sở dữ liệu. Nó là một hệ thống cơ sở dữ liệu đối tượng-relational mã nguồn mở đã có từ cuối những năm 1980. Nhưng đừng để tuổi tác của nó đánh lừa bạn - Postgres vẫn rất thời trang và phù hợp như bao giờ hết!

Hãy tưởng tượng bạn đang xây dựng một thư viện số. Bạn cần một nơi để lưu trữ tất cả các cuốn sách, tác giả của chúng, ngày xuất bản, và có lẽ cả đánh giá của độc giả. PostgreSQL giống như một người thủ thư超级有效率的 không chỉ tổ chức tất cả thông tin này mà còn giúp bạn tìm chính xác những gì bạn cần trong tích tắc.

Dưới đây là một ví dụ đơn giản về cách bạn có thể tạo một bảng trong PostgreSQL để lưu trữ thông tin sách:

CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publication_date DATE,
isbn VARCHAR(13) UNIQUE
);

Mã này tạo một bảng叫做 "books" với các cột cho ID (tự động tăng), tiêu đề, tác giả, ngày xuất bản và ISBN. Đừng lo lắng nếu điều này trông như một thứ rối rắm ngay bây giờ - chúng ta sẽ phân tích nó từng phần khi chúng ta tiếp tục.

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

Bây giờ, hãy nói về những gì làm cho PostgreSQL nổi bật trong thế giới ồn ào của các cơ sở dữ liệu. Nó giống như học sinh giỏi nhất lớp trong mọi thứ!

  1. Tuân thủ ACID: Không, chúng ta không đang nói về hóa học ở đây. ACID là viết tắt của Atomicity, Consistency, Isolation, và Durability. Các thuộc tính này đảm bảo rằng các giao dịch cơ sở dữ liệu của bạn được xử lý đáng tin cậy. Nó giống như có một mạng an toàn cho dữ liệu của bạn!

  2. Kiểm soát đồng bộ đa phiên bản (MVCC): Thuật ngữ này có vẻ xa xỉ nhưng có nghĩa là PostgreSQL có thể xử lý nhiều người dùng truy cập cùng một lúc mà không bị khóa. Nó giống như một buổi tiệc potluck được tổ chức tốt mà mọi người có thể tự phục vụ mà không tạo ra tắc nghẽn.

  3. Mở rộng: PostgreSQL rất tùy chỉnh. Bạn có thể thêm các kiểu dữ liệu mới, hàm, và thậm chí là các ngôn ngữ mới. Nó giống như một bộ LEGO mà bạn có thể tạo ra các mảnh độc đáo của riêng mình!

  4. Tìm kiếm văn bản đầy đủ: Cần tìm một từ cụ thể trong một biển văn bản? PostgreSQL có khả năng tìm kiếm văn bản đầy đủ tích hợp sẵn.

  5. Hỗ trợ JSON: PostgreSQL hoạt động tốt với dữ liệu JSON, làm cho nó trở thành một lựa chọn tuyệt vời cho các ứng dụng cần xử lý cả dữ liệu có cấu trúc và không có cấu trúc.

Hãy xem một ví dụ về cách chúng ta có thể sử dụng JSON trong PostgreSQL:

CREATE TABLE book_reviews (
id SERIAL PRIMARY KEY,
book_id INTEGER REFERENCES books(id),
review_data JSONB
);

INSERT INTO book_reviews (book_id, review_data)
VALUES (1, '{"rating": 5, "comment": "Couldn''t put it down!", "reviewer": "Jane Doe"}');

Mã này tạo một bảng cho các đánh giá sách và chèn một đánh giá được lưu trữ dưới dạng JSON. Kiểu dữ liệu JSONB cho phép chúng ta lưu trữ và truy vấn dữ liệu JSON hiệu quả.

Hỗ trợ ngôn ngữ thủ tục

Một trong những siêu năng lực của PostgreSQL là hỗ trợ ngôn ngữ thủ tục. Điều này có nghĩa là bạn có thể viết các hàm và thủ tục trong các ngôn ngữ khác ngoài SQL. Nó giống như việc biết nhiều ngôn ngữ trong thế giới cơ sở dữ liệu!

Dưới đây là bảng các ngôn ngữ thủ tục được PostgreSQL hỗ trợ:

Ngôn ngữ Mô tả
PL/pgSQL Ngôn ngữ thủ tục bản địa của PostgreSQL
PL/Tcl Ngôn ngữ thủ tục Tcl
PL/Perl Ngôn ngữ thủ tục Perl
PL/Python Ngôn ngữ thủ tục Python
PL/Java Ngôn ngữ thủ tục Java
PL/R Ngôn ngữ thủ tục R

Hãy xem một ví dụ đơn giản sử dụng PL/pgSQL, ngôn ngữ thủ tục bản địa của PostgreSQL:

CREATE FUNCTION get_book_count() RETURNS INTEGER AS $$
DECLARE
book_count INTEGER;
BEGIN
SELECT COUNT(*) INTO book_count FROM books;
RETURN book_count;
END;
$$ LANGUAGE plpgsql;

Hàm này đếm số lượng sách trong bảng books của chúng ta. Chúng ta có thể gọi nó như sau:

SELECT get_book_count();

Và voilà! Chúng ta có tổng số sách trong thư viện số của chúng ta.

Nhớ rằng, học PostgreSQL giống như học骑自行车。 Ban đầu có thể trông不稳定, nhưng với sự luyện tập, bạn sẽ nhanh chóng zoom qua không gian. Đừng sợ thử nghiệm và mắc lỗi - đó là cách chúng ta học hỏi!

Trong bài học tiếp theo, chúng ta sẽ sâu hơn vào việc tạo và quản lý cơ sở dữ liệu trong PostgreSQL. Đến那时, chúc các bạn viết mã vui vẻ và hy vọng các truy vấn của bạn luôn trả về kết quả mà bạn mong đợi!

Credits: Image by storyset