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

Manajemen perubahan data yang efektif

Sepertinya Anda mencoba menerapkan Temporal Database . Dukungan temporal adalah salah satu tambahan utama pada standar ANSI/ISO SQL:2011. MySQL (seperti kebanyakan RDBMS) tertinggal dari standar. Pikirkan Database Temporal sebagai DBMS yang setara dengan CVS/SVN/Git.

Sebaliknya, database tradisional yang kami gunakan tanpa fitur temporal dapat disebut Database Saat Ini .

Dalam Database Saat Ini , jika Anda mencoba menerapkan dukungan temporal, Anda bisa gagal dalam banyak hal dengan pendekatan yang berbeda:

  • Pendekatan satu meja. Saat Anda perlu melakukan modifikasi, lakukan UPDATEs pada catatan asli Anda, dan kecuali Anda memiliki semacam logika pemicu/audit buatan sendiri, jejak riwayat tidak ada. Bahkan jika Anda memiliki log audit/perubahan, Anda harus melakukan penggalian yang buruk untuk merekonstruksi riwayat perubahan.

  • Pendekatan dua meja. Alih-alih membuat modifikasi di tempat, Anda membagi data menjadi dua tabel, satu dengan catatan dasar/asli (misalnya pemesanan), dan tabel lain untuk perubahan/modifikasi/delta Anda. Maka setidaknya Anda menyimpan data asli Anda, tetapi sekali lagi Anda harus menulis logika kompleks untuk melihat data asli dengan modifikasi berlapis. Lebih buruk lagi jika Anda hanya menginginkan beberapa dari modifikasi yang diterapkan.

  • Pendekatan tabel resultan yang dihitung sebelumnya . Anda menyimpan 3 atau lebih tabel:catatan dasar, modifikasi, dan juga tabel yang mencoba untuk selalu memiliki hasil (terus memperbarui basis + modifikasi). Semoga berhasil menulis pemicu dan prosedur untuk melakukan perhitungan ini setiap kali Anda melakukan INSERTs , dan Surga membantu Anda jika UPDATEs atau DELETE dibutuhkan. Penyiapannya rapuh dan bisa tidak sinkron, seperti deadlock &rollback. Jika Anda tidak melakukan ini di dalam DB dengan pemicu/prosedur, Anda dapat mencoba menerapkan perhitungan yang dihasilkan dalam kode aplikasi, tetapi semoga berhasil -- dan itu bisa menjadi jelek dengan konsumen multi-utas. Dan tetap saja, Anda tidak memiliki akses mudah ke hasil hanya dengan beberapa modifikasi diterapkan.

Kesimpulan: Jika Anda tidak terbatas pada MySQL, Anda harus benar-benar mempertimbangkan untuk menggunakan DB yang memiliki dukungan temporal bawaan. Jika tidak, Anda akan menerapkan kembali roda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data Varchar menunjukkan hasil secara selektif

  2. MySQL menunjukkan jumlah selisih dua nilai

  3. Mengamankan php api untuk digunakan dalam aplikasi android

  4. Menentukan bidang tertentu dengan Sequelize (NodeJS) alih-alih *

  5. MySql Tambahkan Indeks :0 Baris Terpengaruh