it-swarm-id.com

Apakah ada cara untuk mendeteksi perubahan basis data yang dibuat oleh ekstensi pihak ketiga?

Saya bekerja di lingkungan pengembangan/pementasan/produksi dan saya telah mengalami beberapa tantangan untuk mempromosikan kode dari satu lingkungan ke lingkungan lainnya, terutama ketika upgrade ke Joomla dan perangkat lunak pihak ketiga lainnya diperlukan.

Apakah ada cara untuk mengetahui pernyataan sql mana yang telah dijalankan terhadap database sejak tanggal tertentu sehingga saya dapat menerapkannya dalam lingkungan yang berbeda, tanpa harus memutakhirkan setiap lingkungan?

7
ContextSwitch

Jawaban sederhana adalah tidak.

Jawaban diperpanjang adalah mysql dapat mencatat kueri, namun memiliki batasan, dan jika bahkan ada satu perbedaan antara lingkungan itu akan menyebabkan kueri tersebut tidak berfungsi. Bahkan dengan itu satu-satunya cara untuk melakukannya adalah melalui server itu sendiri, karena sejauh yang saya tahu tidak ada logging khusus yang ditambahkan ke JDatabase (Juga jika komponen tidak menggunakan JDatabase maka kontrolnya semakin rendah lagi).

Dengan hal-hal di atas yang dapat Anda lihat di dunia yang sempurna, ada caranya, namun jika Anda berpindah dari dev ke live, Anda saat ini memiliki situs langsung yang melakukan query sendiri dan itu "berbeda" maka dev/staging saat ini versi. Jadi, jika pengguna mendaftar di situs langsung, dan Anda meningkatkan Joomla di dev, maka pembaruan ke tabel pengguna akan menambahkan kebutuhan untuk secara manual menambahkan kembali pengguna itu (mungkin juga ada perubahan pada struktur tabel). Sekarang bayangkan ini bukan satu pengguna, tetapi 10, atau bahkan 100, dan prosesnya tidak bisa otomatis.

Joomla memiliki beberapa fitur pemutakhiran yang bagus, memungkinkan versi untuk pembaruan versi mysql di atas tabel, ini memastikan tabel menjaga struktur yang dibutuhkan permintaan, namun tidak melacak setiap sisipan atau pembaruan di atas tabel, jadi jika Anda memperbarui di lingkungan dev , cara terbaik untuk memperbarui dalam produksi adalah dengan hanya mengikuti langkah yang sama dan memperbarui dalam produksi Anda juga.

Di masa depan mungkin bagi Joomla untuk melacak perubahan basis data pada intinya, memungkinkan Anda untuk menyinkronkan versi produksi ke versi pengembangan, namun jumlah pekerjaan untuk membangun sesuatu seperti itu gila, dan akan berdampak pada kinerja. Saat ini saya tidak percaya ada, atau harus ada rencana untuk itu.

9
Jordan Ramstad

Database cenderung menjadi masalah besar dengan semua pengembangan perangkat lunak. Menyinkronkan segala sesuatu sebagai masalah besar bagi kami juga terutama dengan pementasan dan tempat produksi.

Satu hal yang saya mulai lihat belakangan ini tetapi belum diimplementasikan adalah:

http://phinx.org/

'Cara orang miskin' lainnya adalah mengekspor skema DB (jika Anda khawatir dengan skema, data mungkin adalah hewan yang berbeda) dan kemudian jalankan diff pada skema untuk setiap basis data. Harus mengungkapkan perbedaan antara cukup mudah. Maka Anda hanya perlu melakukan konsolidasi data. Dengan itu saya cenderung mengatakan, idealnya Anda hanya perlu khawatir tentang data pada lingkungan produksi Anda dan tetap disinkronkan dengan lingkungan pementasan. Kemudian Anda dapat sandbox dan bermain-main dalam pengembangan sesuai kebutuhan.

4
Chad Windnagle