Metodologi kontrol versi apa yang membantu tim orang melacak perubahan skema basis data?
Metodologi kontrol versi apa yang membantu tim orang melacak perubahan skema basis data?
Jawaban:
hanya beberapa menit yang lalu saya memeriksa ini: Sebuah tabel yang seharusnya ada di semua proyek dengan database , tampaknya cukup sederhana untuk dipraktekkan, periksa:
Ini disebut schema_version (atau migrasi, atau apa pun yang cocok untuk Anda) dan tujuannya adalah untuk melacak perubahan struktural atau data ke database. Struktur yang mungkin (contoh dalam MySQL) adalah:
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
masukkan ke nilai schema_version (
key
,extra
) ('001', 'versi skema');Apakah Anda menambahkan tabel ini sejak awal proyek atau hanya setelah Anda menyebarkan versi pertama ke server pementasan atau produksi terserah Anda.
Setiap kali Anda perlu menjalankan skrip SQL untuk mengubah struktur database atau melakukan migrasi data, Anda harus menambahkan baris dalam tabel itu juga. Dan lakukan itu melalui pernyataan insert di awal atau akhir skrip itu (yang dikomit ke repositori kode proyek).
...
Saya pikir metode terbaik adalah memiliki database yang dihasilkan sebagai bagian dari proses build Anda . Simpan semua skrip di kontrol sumber dengan sisa kode, dan semua orang bertanggung jawab untuk lingkungan mereka sendiri.
Gagal itu, RedGate memiliki alat untuk mengintegrasikan kontrol sumber ke dalam SSMS dan SQL Compare berguna untuk membandingkan / menyinkronkan skema MS SQL Server. Visual Studio Database Edition juga memiliki alat perbandingan skema bawaan .
Satu lagi pertanyaan SO menuntun saya ke Migrator Dot Net yang akan saya mulai selidiki selama waktu luang saya yang berlimpah. Ini terlihat seperti metode yang baik, tetapi mungkin lebih merupakan investasi waktu / overhead daripada yang bersedia Anda lakukan.
eiefai sudah menyebutkan tabel yang harus ada di semua proyek dengan database . Ini adalah posting blog yang bagus, tetapi IMO hanya menjadi bagian dari solusi solusi untuk kontrol revisi database. Saya pikir setiap upaya untuk "menjawab" pertanyaan ini di dunia nyata perlu mempertimbangkan beberapa informasi lain tentang VCS dan basis data:
Ada beberapa sudut berbeda untuk mendekati pertanyaan ini, saya pikir. Sudut "alat-pertama", saya percaya, akan bervariasi berdasarkan pada platform dan preferensi pribadi. Contoh kasus: Saya menggunakan Proyek Database di MS Visual Studio, tapi saya tidak yakin bahwa ini adalah solusi yang bagus untuk MySQL. Saya juga tahu orang-orang yang cukup dijual dengan alat favorit mereka dari Redgate, Erwin, Embarcadero, dll.
Ada juga sudut "proses-pertama" untuk pertanyaan ini, yang (semoga) akan ditinjau kembali di situs ini pada pertanyaan berikutnya. Kunci dalam proses ini adalah membuat skema Anda di bawah kendali sumber dan mengelola perubahan sedemikian rupa sehingga Anda dapat menerapkan perubahan skema dari versi "x" ke versi "y" cukup banyak sesuai permintaan.
Sebuah jawaban pasti untuk topik ini akan berakhir seperti buku, jadi mungkin layak memulai dengan merujuknya: Redgate baru-baru ini menerbitkan ebook gratis yang disebut " Panduan Gerbang Merah untuk Pengembangan Berbasis Tim SQL Server ", dan sementara ada banyak di sana untuk diperdebatkan, itu adalah tempat yang cukup bagus untuk mulai berdebat, IMO. Berlawanan dengan namanya, banyak materi dalam buku ini cukup umum untuk diterapkan pada DB apa pun (bukan hanya SQL Server) dan seperangkat alat apa pun (bukan hanya Redgate). Jika Anda belum pernah melihat ini, setidaknya patut dilihat sekilas.
Akhirnya, mungkin perlu menautkan "jawaban warisan" dari stackoverflow .
SchemaCrawler adalah alat saya untuk menghasilkan file teks dengan semua objek skema database. Saya merancang output teks ini agar dapat dibaca oleh manusia, serta mampu melawan keluaran serupa dari server lain.
Dalam praktiknya, apa yang saya temukan adalah bahwa menghasilkan file teks dari skema basis data berguna, ketika dilakukan sebagai bagian dari build. Dengan cara ini, Anda dapat memeriksa file teks ke dalam sistem kontrol kode sumber Anda, dan memiliki riwayat versi tentang bagaimana skema Anda telah berkembang dari waktu ke waktu. SchemaCrawler dirancang untuk mengotomatisasi ini juga, dari baris perintah.