it-swarm-id.com

Bagaimana perubahan skema basis data grup trek?

Metodologi kontrol versi apa yang membantu tim orang melacak perubahan skema database?

68
Toby

hanya beberapa menit yang lalu saya memeriksa ini: 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 nilai schema_version (key, extra) ('001', 'versi skema');

Apakah Anda menambahkan tabel ini dari 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).

...

45
eiefai

Saya pikir metode terbaik adalah memiliki database dihasilkan sebagai bagian dari proses build Anda . Simpan semua skrip di kontrol sumber dengan sisa kode, dan semua orang bertanggung jawab atas lingkungan mereka sendiri.

Kegagalan itu, RedGate memiliki alat untuk mengintegrasikan kontrol sumber ke dalam SSMS dan Bandingkan SQL berguna untuk membandingkan/menyinkronkan skema MS SQL Server. Visual Studio Database Edition juga memiliki alat perbandingan skema bawaan .

Lain 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.

23
Larry Smithmier

eiefai sudah disebutkan Tabel yang seharusnya 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:

12
TML

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, tetapi saya tidak yakin bahwa ini adalah solusi yang bagus untuk MySQL. Saya juga mengenal 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 meskipun ada banyak hal untuk diperdebatkan, itu adalah tempat yang cukup baik 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 layak untuk ditautkan di "jawaban lawas" dari stackoverflow .

8
D. Lambert

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 database 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.

5
Sualeh Fatehi