Bài này tôi ghi chép lại các bước để bạn lập trình CSDL Postgresql với công cụ psql và DBeaver
1. Khởi động Postgresql bằng Docker
Ưu điểm khởi động Postgresql bằng Docker là bạn có thể thử nhiều phiên bản Postgresql khác nhau mà không phải cài đặt vào hệ điều hành, việc bật tắt cũng rất dễ dàng.
Thử chạy phiên bản Postgresql 14 release candidate mới nhất
$ docker run --name postgres14 -e POSTGRES_PASSWORD=123 -p 5432:5432 -d postgres:14rc1
hoặc chạy phiên bản Postgresql đóng gói trong hệ điều hành Alpine
$ docker run --name postalpine -e POSTGRES_PASSWORD=123 -p 5433:5432 -d postgres:alpine
2. Cài đặt thư viện Postgresql client
Để lập trình Postgresql hiện nay nhiều lập trình viên chọn Docker để khởi động CSDL Postgresql. Tuy nhiên bạn vẫn cần một native client psql trong trường hợp cần backup, restore database. Đây là cách để chỉ cài phần mềm psql
trên MacOSX mà không cần phải cài cả Postgresql server
$ brew install libpq
$ brew link --force libpq
Kiểm tra phiên bản psql mới cài đặt
$ psql --version
psql (PostgreSQL) 13.4
3. Restore CSDL dvd_rental
Sau khi đã có server và client, bạn sẽ mua thử nghiệm một CSDL sẵn có một số bảng và dữ liệu để học cách truy vấn. Bạn nên bắt đầu với CSDL mẫu dvd_rental.
Vào https://www.postgresqltutorial.com/wp-content/uploads/2019/05/dvdrental.zip để tải về file dvdrental.zip
Dùng phần mềm Keka để chuyển sang file dvdrental.tar
. Chuyển tới thư mục chứa file dvdrental.tar
thực hiện khôi phục.
$ pg_restore -h 192.168.1.9 -p 5433 -U postgres -d dvdrental dvdrental.tar
Giải thích các tham số:
-h
: host Postgresql đang chạy, có thể dùng địa chỉ IP-p
: port Postgresql đang chạy, mặc định là5432
, trường hợp này tôi đang chạy ở cổng5433
-U
: tên user kết nối vào Postgresql-d
: tên database sẽ khôi phục dữ liệudvdrental.tar
: file tar nén dữ liệu back up
4. Dùng DBeaver để xem CSDL dvd_rental vừa khôi phục
Bản DBeaver community có thể tải về ở đây https://dbeaver.io. DBeaver hay hơn Pgadmin hay Navicat Premium ở chức năng:
- Pgadmin: thiết kế bảng ERD mới ở bản beta, không thể chọn xem từng bảng.
- Navicat Premium: chỉ có thể xem thiết kế ERD cho những bảng thuộc cùng một schema. Với CSDL nhiều schema thì không làm được.
- DBeaver: có thể chọn bảng ở nhiều schema, có thể di chuyển các bảng hoặc chọn Auto Arrange để sắp xếp lại các bảng trên màn hình sao cho các đọna liên kết giữa các bảng là ngắn nhẩt. Bản Community bạn chỉ có thể tạo bảng, tạo quan hệ rồi xem trên ERD chứ không thể thiết kế bảng trực tiếp trên ERD như phần mềm Erwin.
DBeaver cũng hỗ trợ các kiểu cột dữ liệu đặc thù trong Postgresql như array
, json
, jsonb
5. Tóm lại
- Bạn nên dùng Docker để khởi động Postgresql Server trong môi trường lập trình
- Có thể cài đặt
psql
client mà không cần cài cả Postgresql Server - Nên dùng DBeaver thay thế cho Pgadmin vì chức năng xem quan hệ ERD tốt hơn.
Bình luận
Thêm một lựa chọn hiệu quả trên macos https://postgresapp.com/
Có thể tạo nhiều phiển bản postgresql.
Đoạn restore CSDL, có thể dẫn đến thư mục dvdrental được giải nén từ tệp zip mà không cần chuyển qua tar. Em đã làm vậy và thành công.