SQL tablolarındaki değişiklikleri nasıl sürümlendirir / izlersiniz?


16

Herkesin yerel tablolarda ve geliştirme tablolarında değişiklik yaptığı bir geliştiriciler ekibinde çalışırken, tüm değişiklikleri senkronize halde nasıl tutarsınız? Herkesin sql değişikliklerini tuttuğu merkezi bir günlük dosyası mı? Değiştirmek tablo ifadeleri izlemek için bir wiki sayfası, tek tek .sql dosyaları yerel db en son sürüme getirmek için çalıştırabilirsiniz? Bu çözümlerden bazılarını kullandım ve işe yarayan iyi bir sağlam çözüm elde etmek için yazıyorum, bu yüzden fikirlerinizi takdir ediyorum.

Yanıtlar:


4

Bir kullanmak kod tabanlı Veritabanı Göç aracı ve kaynak denetiminde geçiş kodunda tutmak.

Sürüm numaralarını sürüm numaraları olarak kullanarak, herhangi bir sayıda geliştirici, istedikleri gibi taşıma eklemek için çoğunlukla ücretsizdir ve Geçiş aracını veritabanımızın herhangi bir kopyasına güvenle çalıştırabiliriz.

SQL Scripts'ı sürüm kontrolü altında kullanıyordum, ancak kod tabanlı yaklaşımı, hepsi tek bir mantıksal "nokta" da olduğundan ve gerekli tüm komut dosyalarını tek bir komutla çalıştırabildiğinden, çok daha kolay bir şekilde buluyorum.


4

Kendim yapmıyorum, ancak bazı geliştiriciler, kaynak denetimi altında SQL komutları koleksiyonunu, yürütüldüğünde, test amacıyla veritabanı tablolarını yeniden oluşturabilecek ve üretim amaçlı boş bir veritabanı oluşturabilecek şekilde saklarlar.

Aynı teknik, alanların veya tabloların eklenmesi veya kaldırılması gerektiğinde veya veri dönüşümlerinin gerçekleştirilmesi gerektiğinde veritabanını müşteri sitesinde sürümlemek için kullanılabilir.


3

Doğrulamak için sürüm kontrolü ve sürekli entegrasyon altında komut dosyaları oluşturun

Benim için çalışan bir yaklaşım, her geliştiricinin kendi şemaları ile çalışmasını sağlamaktı. Şemaları yok edilebilir ve tüm geliştiricilerin katkıda bulunduğu sürüm kontrollü bir komut dizisinden alınan test verileriyle doldurulmuştur.

Her gece sürekli entegrasyon derlemesi, tüm betiklerin en son sürümünü aldı ve bunlardan uyumlu bir test veritabanı oluşturmaya çalıştı. Uygulama daha sonra mevcut şemanın mevcut sürüm adayı ile uyumlu olduğunu doğrulamak için bir dizi entegrasyon ve işlevsel testler yürüttü.

Bu yola başlamadan önce, oldukça sağlam bir veritabanı tasarımı mevcuttu ve bir DBA, geliştiricilerin denormalizasyon ve diğer dehşetlerle delirmesini önlemek için her zaman bir şeyleri izliyordu.

Sürüm kontrolü burada çok yardımcı oldu çünkü komut dosyalarındaki değişiklikler hemen belliydi. Ayrıca, veritabanının VERSIONgenel durumunu tanımlamak için bir veritabanı tablosu kullandık. Bu basit bir tamsayı dizisiydi ve herhangi bir özel uygulamaya bağlı değildi.

Genel olarak, iyi çalıştı ve geliştiricilerin kalıcılık katmanlarını değiştirmekten korkmaktan vazgeçtikleri anlamına geliyordu, çünkü başkalarını etkilemeden her zaman kendi şemalarını geri alabilirlerdi.


2

Bir MS mağazasındaysanız, Visual Studio 2010'un iki veritabanı arasındaki farklara dayalı olarak değişiklik / dağıtım komut dosyaları oluşturabilen bazı güzel veritabanı sürümü kontrol araçları vardır.




1

Kullandığım yaklaşım parametreler için bir tablo sağlamaktır. Bu tabloda, veritabanının bulunduğu sürüm için bir ad / değer çifti bulunur. Bu bana iki fayda sağlar: Ben sadece düzeltme uygulaması aracılığıyla uygulanmış bir veritabanı doğrulamak için bir yol var ve ben SQL komut dosyaları için bu değeri kullanabilirsiniz.

SQL betiği yeni tablolar oluşturur, sütunları değiştirir ve betiği daha önce sürümden yükseltmek için veritabanında gereken her türlü işi yapar. İdeal olarak ben de bir geri alma komut dosyası olurdu, ama çoğu zaman yok.

BTW, tüm bu yaklaşım, geri alma komut dosyalarıyla birlikte Ruby on Rails'in bir parçası olarak otomatikleştirilmiştir. Bunun fikrini seviyorum, ancak tüm çerçeveler bunu yapmıyor. Ruby on Rails kullanmadığımda, yukarıda belirtilen yaklaşımı kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.