Khi sản xuất, cơ sở dữ liệu của chúng tôi có kích thước vài trăm gigabyte. Để phát triển và thử nghiệm, chúng tôi cần tạo ảnh chụp nhanh của cơ sở dữ liệu này tương đương về mặt chức năng, nhưng chỉ có kích thước 10 hoặc 20 hợp đồng biểu diễn.
Thách thức là dữ liệu cho các thực thể kinh doanh của chúng tôi nằm rải rác trên nhiều bảng. Chúng tôi muốn tạo một số loại ảnh chụp nhanh đã lọc để chỉ một số thực thể được đưa vào kết xuất. Bằng cách đó, chúng tôi có thể nhận được các ảnh chụp nhanh mới hàng tháng hoặc lâu hơn cho nhà phát triển và thử nghiệm.
Ví dụ: giả sử chúng ta có các thực thể có mối quan hệ nhiều-nhiều sau:
- Công ty có N Phòng
- Bộ phận có N nhân viên
- Nhân viên có N Hồ sơ chuyên cần
Có thể có 1000 công ty, 2500 bộ phận, 175000 nhân viên và hàng chục triệu hồ sơ tham dự. Chúng tôi muốn một cách có thể nhân rộng để kéo, chẳng hạn như 100 công ty đầu tiên và tất cả các bộ phận cấu thành, nhân viên và hồ sơ tham dự .
Chúng tôi hiện đang sử dụng pg_dump cho lược đồ, sau đó chạy pg_dump với --disable-trigger và --data-only để lấy tất cả dữ liệu ra khỏi các bảng nhỏ hơn. Chúng tôi không muốn phải viết các tập lệnh tùy chỉnh để lấy ra một phần dữ liệu vì chúng tôi có chu kỳ phát triển nhanh và lo ngại rằng các tập lệnh tùy chỉnh sẽ mỏng manh và có khả năng bị lỗi thời.
Làm thế nào chúng ta có thể làm điều này? Có các công cụ của bên thứ ba có thể giúp lấy ra các phân vùng hợp lý từ cơ sở dữ liệu không? Những công cụ này được gọi là gì?
Bất kỳ lời khuyên chung cũng đánh giá cao!