Saat diproduksi, database kami berukuran beberapa ratus gigabyte. Untuk pengembangan dan pengujian, kita perlu membuat snapshot dari database ini yang secara fungsional setara, tetapi hanya berukuran 10 atau 20 gigs.
Tantangannya adalah data entitas bisnis kita tersebar di banyak tabel. Kami ingin membuat semacam snapshot yang difilter sehingga hanya beberapa entitas yang disertakan dalam dump. Dengan begitu kami bisa mendapatkan snapshot baru setiap bulan atau lebih untuk dev dan pengujian.
Misalnya, kita memiliki entitas yang memiliki hubungan banyak ke banyak ini:
- Perusahaan memiliki Divisi N.
- Divisi memiliki N Karyawan
- Karyawan memiliki N Catatan Kehadiran
Mungkin ada 1000 perusahaan, 2500 divisi, 175000 karyawan, dan puluhan juta catatan kehadiran. Kami ingin cara yang dapat direplikasi untuk menarik, katakanlah, 100 perusahaan pertama dan semua divisi, karyawan, dan catatan kehadirannya .
Saat ini kami menggunakan pg_dump untuk skema, lalu menjalankan pg_dump dengan --disable-triggers dan --data-only untuk mengeluarkan semua data dari tabel yang lebih kecil. Kami tidak ingin harus menulis skrip ubahsuaian untuk menarik sebagian data karena kami memiliki siklus pengembangan yang cepat dan khawatir skrip ubahsuaian tersebut akan rapuh dan kemungkinan kedaluwarsa.
Bagaimana kita bisa melakukan ini? Apakah ada alat pihak ketiga yang dapat membantu mengeluarkan partisi logis dari database? Apa alat ini disebut?
Saran umum apa pun juga dihargai!