Pilihan lain adalah sesuatu yang saya baru-baru ini menemukan (diberikan, saya belum menggunakannya, tapi rencana untuk segera): rdbms-subsetter
.
Ini sedikit lebih sederhana dan lebih ringan dari Jailer, dengan beberapa fitur bagus:
- CLI begitu mudah untuk memasang alat yang ada
- Sumber terbuka
- Akan mengikuti kunci asing untuk mengambil bagian data yang
koheren
- Jika Anda tidak memiliki kunci asing yang didefinisikan dengan baik, hubungan dapat diberikan melalui file konfigurasi JSON. Dalam kasus saya, saya berencana untuk membuat konfigurasi ini dari skema metadata yang disimpan di tempat lain (terima kasih, Rails: \)
- Anda dapat menargetkan baris tertentu dan mendapatkan semua catatan terkait (mis. Pelanggan tertentu mengalami masalah, sehingga Anda dapat menarik semuanya untuk membuat data pekerjaan akun mereka dapat diakses secara lokal)
- Entah dapat mengambil jumlah rekaman konstan per tabel atau mengambil logaritma untuk mendapatkan lebih banyak data dari tabel yang lebih besar tanpa berlebihan.
Perlu disebutkan opsi lain untuk basis data Heroku secara khusus, yang telah saya gunakan banyak (seperti dulu bekerja di sana).
Heroku sebenarnya cukup cepat dalam memunculkan DB snapshotted baru saat menarik log write-ahead terlebih dahulu untuk dipersiapkan, kemudian menghubungkan ke DB utama untuk mengejar ketinggalan, kemudian berhenti mengikutinya. Anda dapat membuat "garpu" ini di seluruh aplikasi untuk menghindari terlalu banyak memengaruhi produksi:
$ heroku addons:create heroku-postgres[:specific-plan] \
--fork your-production-app::DATABASE \
--app some-other-app-to-own-forked-database \
[--as PRODUCTION_SNAPSHOT]
Kemudian, Anda dapat mem-boot aplikasi Anda secara lokal menunjuk ke snapshot itu. Saya sering menggunakan ini untuk menjalankan migrasi data atau skema atau men-debug masalah pelanggan.
Dalam perintah di atas, jika Anda memiliki DB yang dapat diakses dengan DATABASE_URL
on your-production-app
, Anda akan berakhir dengan DB yang dapat diakses dengan PRODUCTION_SNAPSHOT_URL
(jika Anda tentukan --as
) pada aplikasi yang berbeda bernama some-other-app-to-own-forked-database
.