Friday, March 9, 2018

JavaEE: Multi Tenancy Postgresql

Giờ ta muốn viết phần mềm có thể là quản lí phòng trọ, cafe, karaoke hay tiệm thuốc tây trên nền Web thay vì ứng dụng chạy trên Desktop và public cho người dùng có thể tùy theo mục đích kinh doanh của họ.
Nếu như bình thường thì dữ liệu của tất cả user sẽ nằm trong một bảng vấn đề này có thể ảnh hưởng tới performance không ít thì nhiều.
Giải pháp của ta đưa ra là cứ mỗi user đăng ký vào hệ thống ta sẽ tạo cho user một schema chỉ dành riêng cho user và hoàn toàn độc lập về mặt dữ liệu đối với những user khác, như vậy performance sẽ được giải quyết. Nhưng bên cạnh đó ta phải giải quyết các vấn đề phát sinh khi ta tạo hẳn một schema dành riêng cho user.

Những vấn đề đó như là
- Có những dữ liệu được dùng chung cho tất cả user, có dữ liệu riêng.
- Vấn đề thực hiện các migration structure và data cho những dữ liệu dùng chung và dữ liệu riêng thì mà có sai sót.
- Làm sau để mỗi request của user đến thì hệ thống biết được phải kết nối đến schema nào
- Và vấn đề bảo mật dữ liệu của schema của user thì sao.

Bên dưới là code mình học được từ dự án cộng thêm việc search trên mạng nên đơn giản process lại thành 5 phần chính để giải quyết vấn đề này.

1. Migration in public schema
2. Create own schema for user
3. Migration for schema of user
4. Create connection to database for tenant of user
5. Security for resource of user and public resource

Video demo

No comments:

Post a Comment