Giao diện
@digiforce-nc/plugin-data-source-external-mysql
Plugin kết nối MySQL bên ngoài làm data source — biến bảng MySQL thành collection để thao tác CRUD trực tiếp từ giao diện.
Plugin này làm gì?
Khi dữ liệu nghiệp vụ nằm trong MySQL, plugin này cho phép kết nối trực tiếp mà không cần import. Nó đăng ký loại data source mysql vào data-source-manager factory, tự động introspect schema, rồi map bảng MySQL thành collection trong hệ thống Digiforce.
Cơ chế hoạt động
Tính năng chính
| # | Tính năng | Mô tả |
|---|---|---|
| 1 | Kết nối MySQL | Cấu hình host, port, user, password, database |
| 2 | Auto-detect tables | Phát hiện bảng, cột, kiểu dữ liệu, primary key tự động |
| 3 | Multi-database | Kết nối nhiều MySQL instance đồng thời |
| 4 | CRUD qua UI | Thao tác dữ liệu MySQL trực tiếp từ giao diện |
| 5 | SSL/TLS | Hỗ trợ kết nối mã hóa cho môi trường production |
| 6 | Charset support | Hỗ trợ utf8mb4 cho dữ liệu tiếng Việt, emoji |
Cấu hình kết nối
| Tham số | Bắt buộc | Mô tả | Ví dụ |
|---|---|---|---|
host | Có | Địa chỉ server MySQL | 192.168.1.100 |
port | Không | Cổng kết nối (mặc định 3306) | 3306 |
database | Có | Tên database | my_erp |
username | Có | Tên đăng nhập | readonly_user |
password | Có | Mật khẩu | *** |
ssl | Không | Bật SSL/TLS | true |
charset | Không | Character set (mặc định utf8mb4) | utf8mb4 |
Kiến trúc nội bộ
| Thành phần | Vai trò |
|---|---|
| Register | Đăng ký mysql type vào factory registry khi plugin load |
| Factory | Tạo kết nối Database instance với dialect MySQL |
| Introspector | Đọc INFORMATION_SCHEMA để map bảng → collection |
| Sync | Đồng bộ metadata vào CollectionManager |
Thành phần client
| Thành phần | Mô tả |
|---|---|
MySQLConnectionForm | Form cấu hình kết nối MySQL |
ConnectionTest | Nút kiểm tra kết nối trước khi lưu |
ExternalCollectionList | Danh sách bảng MySQL được map thành collection |
CharsetSelector | Chọn character set cho kết nối |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/server | Server framework |
@digiforce-nc/database | Database abstraction layer (mysql dialect) |
@digiforce-nc/client | Client UI framework |
@digiforce-nc/data-source-manager | Registry quản lý data source |
mysql2 | MySQL native driver |
Lưu ý triển khai
- MySQL bên ngoài cần mở firewall cho IP server Digiforce
- Nên tạo user read-only nếu chỉ cần đọc dữ liệu
- Hỗ trợ MySQL 5.7 trở lên và MySQL 8.x
- Kết nối mặc định dùng charset
utf8mb4cho hỗ trợ Unicode đầy đủ - Với bảng lớn (triệu dòng), nên có index phù hợp trên MySQL