Hangi sürüm kontrol metodolojileri, insan ekiplerinin veritabanı şeması değişikliklerini izlemelerine yardımcı olur?
Hangi sürüm kontrol metodolojileri, insan ekiplerinin veritabanı şeması değişikliklerini izlemelerine yardımcı olur?
Yanıtlar:
sadece birkaç dakika önce şunu kontrol ediyordum: Tüm projelerde yer alması gereken bir veri tabanı olan bir masa, uygulamaya koymak, kontrol etmek için yeterince basit görünüyor:
Buna schema_version (veya geçişler veya size ne uygunsa) denir ve amacı veritabanındaki yapısal veya veri değişikliklerini takip etmektir. Olası bir yapı (MySQL'deki örnek):
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
schema_version (
key
,extra
) değerlerine yerleştirin ('001', 'şema sürümü');Bu tabloyu projenin başlangıcından veya ilk sürümü bir aşamalandırma veya üretim sunucusuna dağıttıktan hemen sonra ekleyip eklemeyeceğiniz size kalmış.
Ne zaman veritabanı yapısını değiştirmek ya da veri taşıma işlemini gerçekleştirmek için bir SQL betiğini çalıştırmanız gerektiğinde, o tabloya da bir satır eklemelisiniz. Ve bunu projenin başında veya sonunda (projenin kod deposuna bağlıdır) insert ifadesiyle yapın.
...
Bence en iyi yöntem, derleme işleminizin bir parçası olarak oluşturulan veritabanına sahip olmaktır . Tüm komut dosyalarını kodun geri kalanıyla birlikte kaynak kontrolünde tutun; herkes kendi ortamından sorumludur.
Bunun başarısız olması durumunda RedGate, kaynak kontrolünü SSMS'ye entegre etmek için bir araca sahiptir ve SQL Karşılaştırma , MS SQL Server şemalarını karşılaştırmak / senkronize etmek için kullanışlıdır. Visual Studio Database Edition ayrıca yerleşik bir şema karşılaştırma aracına sahiptir .
Başka SO soru bana yol Yükseltici Dot Net benim bol boş zamanlarında araştırılmaya başlanması için gidiyorum. İyi bir yönteme benziyor, ancak yapmak istediğinizden daha fazla zaman / genel yatırım olabilir.
eiefai zaten bahsetti Bir veritabanında tüm projelerde bulunması gereken bir tablo . Bu harika bir blog yazısıdır, ancak IMO sadece veritabanı revizyon kontrolü için çalışan bir çözüme giden yolun bir parçası. Bence gerçek dünyada bu soruyu "cevaplama" girişimi, VCS ve veri tabanları hakkındaki diğer bazı bilgileri göz önünde bulundurmalı:
Sanırım bu soruya yaklaşmak için birkaç farklı açı var. "İlk araç" açısı, platform ve kişisel tercihlere göre değişeceğine inanıyorum. Örnek olarak: MS Visual Studio'da bir Veritabanı Projesi kullanıyorum, ancak bunun MySQL için mükemmel bir çözüm olduğundan emin değilim. Ayrıca Redgate, Erwin, Embarcadero, vb. Favori araçlarında oldukça satılan insanları tanıyorum.
Ayrıca, bu soru için "ilk önce" bir açı da vardır, ki bu soruya daha sonraki sorularda (bu konuda) tekrar incelenecektir. Bu süreçteki kilit noktalar şemanızı kaynak kontrolü altına almak ve şema değişikliklerini "x" sürümünden "y" sürümüne kadar talep üzerine uygulayabileceğiniz şekilde yönetmektir.
Bu konuya Kesin bir yanıt bir kitap benzeyen sonunda gidiyor, bu yüzden bir tane başvurarak başlayan değer demektir: Redgate geçenlerde "adlı ücretsiz e-kitap yayınladı SQL Server Takım tabanlı Geliştirme Kırmızı Kapısı Kılavuzu varken" ve tartışılacak çok şey var, tartışmaya başlamak için güzel bir yer, IMO. İsmin aksine, bu kitaptaki materyallerin çoğu herhangi bir DB'ye (sadece SQL Server'a değil) ve herhangi bir araç setine (sadece Redgate'e değil) uygulanacak kadar geneldir. Bunu daha önce görmediyseniz, kesinlikle en azından bir yağsıza değer.
Son olarak, muhtemelen stackoverflow'tan gelen "eski cevaba" bağlanmaya değer .
SchemaCrawler , tüm veritabanı şema nesnelerini içeren bir metin dosyası oluşturma aracımdır . Bu metin çıktısının hem insan tarafından okunabilir hem de başka bir sunucudan benzer çıktılara karşı farklı olacak şekilde tasarladım.
Uygulamada, bulduğum şey, veritabanı şemasının bir metin dosyasının çıktısının, derlemenin bir parçası olarak yapılması yararlı olduğu yönünde. Bu şekilde, metin dosyasını kaynak kod kontrol sisteminize göre kontrol edebilir ve şemanızın zaman içinde nasıl geliştiğine dair bir sürüm geçmişi olabilir. SchemaCrawler, bunu komut satırından da otomatikleştirmek için tasarlanmıştır.