Bài trước: Web back-end (19) - Thiết kế cơ sở dữ liệu
-----
20 Làm việc với Postgresql
Ở bài học trước, chúng ta đã phân tích và thiết kế được cơ sở dữ liệu cho ứng dụng.
Kết quả của bước thiết kế là “Tài liệu thiết kế cơ sở dữ liệu”, gồm:
- Danh sách các bảng
- Các thuộc tính của mỗi bảng (các cột)
- Kiểu dữ liệu của các thuộc tính
- Xác định các thuộc tính là khóa chính, khóa ngoại
- Xác định mối quan hệ giữa các bảng, các ràng buộc dữ liệu
Dựa trên “Tài liệu thiết kế cơ sở dữ liệu”, chúng ta sẽ sử dụng một Hệ quản trị cơ sở dữ liệu để cài đặt (hiện thực hóa) bản Thiết kế cơ sở dữ liệu.
Với cơ sở dữ liệu quan hệ, bạn có thể sử dụng nhiều Hệ quản trị cơ sở dữ liệu khác nhau. Ví dụ: Microsoft SQL Server, Mysql, Postgresql.
Với dự án của cá nhân, các bạn có thể sử dụng Hệ quản trị cơ sở dữ liệu bất kỳ để cài đặt, không nhất thiết phải sử dụng Postgresql.
20.1 Tải và cài đặt Postgresql
Postgresql là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, mạnh mẽ, và đáng tin cậy, được phát triển từ năm 1986 tại Đại học California, Berkeley.
Postgresql nổi bật với tính linh hoạt, tuân thủ chuẩn SQL, và hỗ trợ nhiều tính năng nâng cao, phù hợp cho các ứng dụng với quy mô từ nhỏ đến lớn.
Đặc điểm nổi bật:
- Mã nguồn mở: miễn phí, cộng đồng phát triển tích cực, có thể tùy chỉnh.
- Tuân thủ chuẩn SQL: hỗ trợ đầy đủ các truy vấn SQL phức tạp và chuẩn ACID (atomicity - tính nguyên tử, consistency - tính nhất quán, isolation - tính độc lập, durability - tính bền vững).
- Hỗ trợ dữ liệu đa dạng: ngoài các kiểu dữ liệu cơ bản (INTEGER, VARCHAR, TIMESTAMP), Postgresql còn hỗ trợ JSON/JSONB, ARRAY, UUID, và dữ liệu địa lý (PostGIS).
- Tính năng nâng cao: hỗ trợ múi giờ (TIMESTAMP WITH TIME ZONE); truy vấn phức tạp (window functions, common table expressions, full-text search); khả năng mở rộng (hỗ trợ replication, sharding, và xử lý khối lượng dữ liệu lớn).
- Độ tin cậy: được sử dụng bởi các công ty lớn như Apple, Instagram, và Spotify nhờ khả năng xử lý ổn định và bảo mật cao.
- Đa nền tảng: chạy trên Windows, Linux, macOS, và các hệ thống đám mây như AWS, Google Cloud.
Postgresql phù hợp cho:
- Ứng dụng web (ví dụ: dùng với Django, Node.js).
- Kho dữ liệu (data warehouse) và phân tích dữ liệu.
- Ứng dụng cần xử lý dữ liệu JSON hoặc dữ liệu địa lý.
Tải Postgresql
Bạn vào trang https://www.postgresql.org/ để tải Postgresql về máy tính. Ví dụ: chọn bản postgresql-17.4-1-windows-x64.
Cài đặt Postgresql
Thực hiện cài đặt như các chương trình thông thường.
Lưu ý: bạn có thể cài đặt theo đường dẫn mặc định, vào ổ đĩa C:\Program files\PostgreSQL\17. Hoặc có thể cài vào ổ đĩa khác, trong trường hợp này, cần tạo thư mục theo cấu trúc …\PostgreSQL\17. Ví dụ: D:\PostgreSQL\17.
Trong quá trình cài đặt:
- Có yêu cầu đặt mật khẩu cho tài khoản kiểu superuser (tên tài khoản này là postgres), ví dụ: p@ssword1.
- Cổng mặc định của Postgresql là 5432
Khởi chạy Postgresql
Trên hệ thống Windows, sau khi được cài đặt, Postgresql sẽ tự chạy dưới dạng một dịch vụ (services), chứ không phải chạy như một chương trình có giao diện (như Microsoft Word). Điều này có nghĩa là nó hoạt động liên tục trong nền (background) để xử lý các yêu cầu truy vấn cơ sở dữ liệu mà không cần giao diện người dùng.
Bạn mở Task manager > vào tab services hoặc vào cửa sổ Run > chạy lệnh services.msc để kiểm tra/chạy/dừng/khởi động lại dịch vụ Postgresql (ví dụ: dịch vụ có tên postgresql-x64-17).
Trong cửa sổ services > chuột phải vào dịch vụ postgresql > chọn Properties để xem tập tin thực thi (Path to executable), và kiểu khởi chạy (Startup type).
Đảm bảo là dịch vụ postgresql ở trạng thái running, trước khi bạn thực hiện các thao tác liên quan đến hệ quản trị cơ sở dữ liệu Postgresql.
Postgresql chạy dưới dạng một hoặc nhiều tiến trình (processes) trên hệ thống, ví dụ: tiến trình chính postgres và các tiến trình con để xử lý kết nối từ client.
20.2 Làm việc với Postgresql
Cũng như các hệ quản trị cơ sở dữ liệu khác (Mysql, SQL server), bạn cũng có 3 cách để kết nối và làm việc với Postgresql:
- Dùng công cụ dòng lệnh: psql.
- Dùng công cụ GUI: pgAdmin hoặc DBeaver.
- API/Thư viện (gắn với một ngôn ngữ lập trình): JDBC hoặc Sequelize.
Dùng công cụ dòng lệnh
Khi bạn cài đặt Postgresql, công cụ psql cũng được cài đặt kèm theo. Vì vậy, bạn có thể sử dụng psql mà không cần phải cài đặt.
Tuy nhiên, do psql chưa được thiết lập biến môi trường trong Windows (environment variable), nên bạn phải vào thư mục có chứa tập tin psql.exe để chạy.
Mở cửa sổ dòng lệnh (ví dụ CMD), di chuyển dấu nhắc lệnh tới vị trí của tập tin psql.exe (ví dụ: E:\running_softs\PostgreSQL\17\bin).
Gõ lệnh psql -U postgres
E:\running_softs\PostgreSQL\17\bin>psql -U postgres
Password for user postgres:
Nhập mật khẩu cho user postgres (đây là user thuộc kiểu superuser, mật khẩu này bạn đã thiết lập trong quá trình cài đặt Postgresql ở phần trước, ví dụ: p@ssword1).
Nếu đăng nhập thành công, dấu nhắc lệnh sẽ chuyển từ > thành #:
psql (17.4)
WARNING: Console code page (437)
differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=#
Ví dụ: sử dụng lệnh \list để xem các cơ sở dữ liệu đang có trong Postgresql.
postgres=# \list
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype |
Locale | ICU Rules | Access privileges
-----------+----------+----------+-----------------+---------+-------+--------+-----------+-----------------------
postgres | postgres | UTF8 | libc | en-US | en-US | | | template0 | postgres | UTF8
| libc | en-US | en-US | | |
=c/postgres +
| | | | |
| | | postgres=CTc/postgres
template1 | postgres | UTF8 | libc | en-US |
en-US | | | =c/postgres +
| | |
| | | |
| postgres=CTc/postgres
(3 rows)
Ví dụ: tạo cơ sở dữ liệu có tên là testdb.
postgres=# create database testdb;
CREATE DATABASE
postgres=#
- Kiểm tra xem cơ sở dữ liệu đã tạo được chưa?
postgres=# \l
- Bạn sẽ thấy cơ sở dữ liệu testdb đã được tạo.
Muốn ngắt kết nối tới Postgresql, sử dụng lệnh exit.
Dùng công cụ GUI: pgAdmin
Cũng như psql, công cụ pgAdmin cũng được cài đặt cùng với quá trình cài Postgresql.
Bạn vào menu Start của Windows để tìm và khởi chạy pgAdmin..
Xem hình giao diện của pgAdmin.
Kết nối tới
Postgresql:
- Vào menu Object > chọn Connect Server.
- Nhập mật khẩu cho user (postgres), ví dụ: p@ssword1
Vậy là bạn đã có
thể sử dụng pgAdmin để tạo cơ sở dữ liệu, tạo bảng, chèn dữ liệu, truy vấn dữ
liệu với Postgresql.
Để kết thúc phiên làm việc, bạn vào menu Object > chọn Disconnect from server để ngắt kết nối tới Postgresql.
20.3 Bài tập
Câu hỏi 20.1 Postgresql là gì? Phát biểu nào sau đây không đúng?
A. Postgresql là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, mạnh mẽ và đáng tin cậy.
B. Postgresql là một cơ sở dữ liệu mã nguồn mở.
C. Postgresql tuân thủ chuẩn SQL và hỗ trợ đầy đủ các thuộc tính ACID cho giao dịch.
D. Postgresql hỗ trợ nhiều kiểu dữ liệu đa dạng, bao gồm JSON/JSONB, ARRAY và dữ liệu địa lý (PostGIS).
Câu hỏi 20.2 Bạn có thể sử dụng các công nào để kết nối và làm việc với Postgresql? Phát biểu nào không đúng?
A. Dùng công cụ dòng lệnh: psql.
B. Dùng giao thức ping
C. Dùng công cụ GUI: pgAdmin hoặc DBeaver.
D. API/Thư viện (gắn với một ngôn ngữ lập trình): JDBC hoặc Sequelize.
Bài tập 20.3 Tải, cài đặt Postgresql. Sử dụng psql và pgAdmin để kết nối tới Postgresql.
-----
Cập nhật: 23/4/2025
Bài sau: