Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Versi Basis Data / Ubah Kontrol untuk Data bukan Skema?

Saya telah bekerja sebagian besar dalam pengembangan aplikasi bisnis dan manajemen konfigurasi. Pertanyaan Anda mewakili tantangan dalam lingkungan seperti itu; ketika Anda meng-upgrade misalnya Microsoft Word, Anda tidak perlu mengubah semua dokumen langsung dari doc ke docx. Dan dokumen bahkan memiliki struktur yang lebih sederhana dari database relasi penuh.

Tidak demikian untuk aplikasi bisnis; pengguna melewatkan rilis, membuat perubahan tidak sah pada model data dan sistem perlu terus berjalan dan memberikan nomor yang benar...

Kami menggunakan untuk aplikasi kami sendiri (yang terbesar seperti 600 tabel) alat CASE yang dikembangkan sendiri yang mencakup percabangan/penggabungan, tetapi pendekatannya juga dapat dilakukan secara manual.

Versi Model Data

Model data dapat ditulis dengan cara yang terstruktur. Misalnya sebagai isi tabel (CSV untuk dimuat dalam tabel dengan meta data) atau sebagai kode yang mendeteksi versi yang digunakan dan menambahkan kolom dan tabel saat hilang, termasuk migrasi non-sepele.

Ini bahkan memungkinkan beberapa pengguna sekaligus untuk mengubah model data.

Saat Anda menggunakan deteksi otomatis (misalnya, kami menggunakan panggilan bernama "verify_column" alih-alih "add_column"), ini bahkan memungkinkan migrasi yang lancar terlepas dari nomor rilis tempat pelanggan memulai peningkatan. Prosedur tersebut menganalisis tabel yang akan diubah dan mengeluarkan DDL yang benar seperti alter table t1 add col1 number not null ketika kolom hilang atau alter table t1 modify col1 not null ketika kolom sudah ada tetapi tidak dapat dibatalkan.

Untuk Oracle dan SQL Server, saya dapat memberi Anda beberapa contoh prosedur. Di MySQL saya akan mengkodekan ini menggunakan bahasa sisi klien, lebih disukai OS independen untuk memungkinkan instalasi berjalan di Windows dan Linux. Mungkin menggunakan Apache Ant jika Anda memiliki pengalaman dengan itu.

Versi Data

Kami membagi tabel dalam empat kategori:

  • R:data referensial; data yang harus disediakan oleh situs aplikasi sebelum dia benar-benar menggunakan sistem. Misalnya, kode akun buku besar umum. Data referensi jarang berubah setelah ditayangkan dan ukurannya tidak terus bertambah. Isinya mencerminkan model bisnis situs tempat aplikasi digunakan.
  • T:data transaksi; data yang didaftarkan, diubah, dan dihapus oleh situs selama penggunaan aplikasi. Misalnya, entri buku besar umum. Data transaksi mulai dari 0 an terus bertambah. Ketika pendapatan perusahaan berlipat ganda, data transaksi juga berlipat ganda.
  • S:data unggulan; data TIDAK dikelola oleh pengguna di situs tetapi disediakan dan dikelola oleh pihak pengembang. Pada dasarnya ini adalah kode yang diubah menjadi data. Misalnya, 'F' singkatan dari 'Female'. Kesalahan dalam data yang diunggulkan dapat menyebabkan kesalahan sistem.
  • O:sisanya (idealnya tidak diperlukan, karena bersifat teknis, tetapi beberapa sistem memerlukan tabel sementara A atau tabel awal B).

Isi tabel kategori 'S' (data unggulan) ditempatkan di bawah kendali versi. Kami biasanya mendaftarkan ini sebagai metadata di alat kasus kami, lalu bernama 'set data', tetapi Anda juga dapat menggunakan misalnya Microsoft Excel atau bahkan kode.

Misalnya, di Excel Anda akan memiliki daftar baris data unggulan. Di kolom A Anda dapat memasukkan fungsi Excel seperti =B..&"|"&C..& "|" & ... yang menggabungkan semuanya dan membuatnya cocok untuk dimuat oleh alat pemuat.

Misalnya dalam kode, Anda mungkin memiliki panggilan seperti:

verifySeed('TABLE_A', 'CODE', 'VALUE')

Excel agak sulit untuk dibawa di bawah kontrol versi yang memungkinkan banyak pengguna untuk mengubah konten secara bersamaan. Pendekatan dengan kode sangat sederhana.

Harap ingat juga untuk menambahkan fitur untuk menghapus data unggulan yang sudah usang. Misalnya, dengan secara eksplisit mencantumkan data seed yang sudah usang atau dengan otomatis menghapus semua data seed yang ada di tabel tetapi tidak tersentuh oleh penginstalan terakhir.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Penggunaan fungsi grup tidak valid

  2. Penyimpanan MySQL JSON vs Dua Tabel

  3. Java Spring JPA Pagination Tidak berfungsi jika lebih dari satu Halaman

  4. Masukkan teks persia di tabel mysql

  5. Bagaimana cara mereset nomor urut menjadi berurutan?