Files
Teedy_custom/implementation_plan.md
T

3.5 KiB

Chuyển đổi Cơ sở Dữ liệu từ H2 (SQLite-like) sang PostgreSQL

Ứng dụng Teedy DMS hiện tại đang sử dụng cơ sở dữ liệu nhúng H2 theo mặc định (lưu trữ dưới dạng file ./teedy-data/db/docs.mv.db, có hành vi tương tự SQLite). Để chuyển đổi sang PostgreSQL cho môi trường sản xuất (production) nhằm đảm bảo hiệu năng và độ tin cậy cao, chúng ta cần bổ sung dịch vụ PostgreSQL vào các file cấu hình Docker Compose và cấu hình các biến môi trường kết nối tương ứng cho Teedy.

User Review Required

Important

Lưu ý về H2 và SQLite: Dự án Teedy hiện tại không dùng SQLite mà dùng H2 làm cơ sở dữ liệu nhúng mặc định (tạo ra file docs.mv.db trong thư mục teedy-data/db). Việc cấu hình PostgreSQL sẽ thay thế hoàn toàn cơ sở dữ liệu nhúng H2 này.

Warning

Không thể tự động di chuyển dữ liệu cũ: Khi chuyển đổi từ cơ sở dữ liệu H2 sang PostgreSQL, các tài liệu và tài khoản đã tạo trước đó trong cơ sở dữ liệu nhúng cũ sẽ không tự động đồng bộ sang database PostgreSQL mới. Bạn sẽ cần cấu hình lại tài khoản admin ban đầu.

Open Questions

Important

Xác nhận về PostgREST / PostgreSQL: Bạn đã yêu cầu dùng "postgrest".

  • PostgREST là một công cụ tạo REST API tự động từ PostgreSQL database.
  • PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mà Teedy hỗ trợ chính thức.

Teedy DMS là ứng dụng Java JPA/Hibernate cần kết nối trực tiếp đến một cơ sở dữ liệu SQL qua JDBC (PostgreSQL). Do đó, phương án đề xuất dưới đây là cấu hình PostgreSQL làm cơ sở dữ liệu lưu trữ cho Teedy. Xin vui lòng xác nhận xem đây có phải là mong muốn của bạn không?

Proposed Changes

Chúng ta sẽ sửa đổi 2 file cấu hình Docker Compose chính trong dự án để tích hợp PostgreSQL:


Docker Compose

[MODIFY] docker-compose.yml

  • Bổ sung service teedy-db sử dụng image postgres:13-alpine.
  • Thêm mạng nội bộ docker-internal và mạng kết nối bên ngoài internet.
  • Khai báo các biến môi trường kết nối database cho teedy-server:
    • DATABASE_URL: "jdbc:postgresql://teedy-db:5432/teedy"
    • DATABASE_USER: "teedy_db_user"
    • DATABASE_PASSWORD: "teedy_db_password" (hoặc sử dụng mật khẩu bảo mật hơn)
    • DATABASE_POOL_SIZE: "10"
  • Thiết lập dependency depends_on: - teedy-db.

[MODIFY] docker-compose-ghcr.yml

  • Áp dụng các thay đổi tương tự như trên cho file sử dụng Custom Image chạy trực tiếp trên server sản xuất.

Verification Plan

Manual Verification

  • Khởi động thử hệ thống bằng lệnh docker-compose -f docker-compose.yml up -d (hoặc phiên bản ghcr).
  • Kiểm tra logs của container bằng lệnh docker-compose logs -f để xác nhận Teedy đã kết nối thành công đến PostgreSQL và thực thi các script khởi tạo bảng.
  • Truy cập vào giao diện web Teedy (port 8080) để kiểm tra tính năng đăng nhập và tạo tài liệu mới.