Yorumlarla PostgreSQL şemasını nasıl kontrol edebilirim?


9

Git ile yaptığım işlerin çoğunu kontrol ediyorum : kod, dokümantasyon, sistem yapılandırması. Tüm değerli işlerim metin dosyaları olarak saklandığından bunu yapabilirim.

Ayrıca Postgres veritabanımız için SQL şeması yazıyor ve uğraşıyorum. Şema görünümleri, SQL işlevlerini içerir ve Postgres işlevlerini R programlama dilinde yazacağız ( PL / R aracılığıyla ).

Ben ve işbirlikçilerimin yazdığı parçalar şemasını kopyalayıp geçmeye çalışıyordum ama bunu yapmayı unutuyorum. Kopyalama ve geçmişteki eylemler tekrarlayıcı ve hataya açıktır.

Pg_dump / pg_restore yöntemi, yorumları kaybettiği için çalışmaz.

İdeal olarak, mevcut şememi bir dosyaya veya dosyalara ayıklamak ve yorumları korumak için yorumları korumak için bir yol istiyorum.

Yorumlar içeren sürüm kontrol şemasına yönelik en iyi uygulama nedir?


2
Sorunun psql'ye özgü olduğunu düşünmüyorum. SO stackoverflow.com/… adresindeki bazı cevapları okudunuz mu? Senin için bir şey olabilir.
DrColossos

@DrColossos - bu sorulardan bazıları iyi göçmen adaylarıdır.
CoderHawk

@DrColossos COMMENT ONpostgres olmayan bir ortamda kullanılabilir mi? Ben yok düşünüyorum standart bir SQL bu. yani bu postgres'e özgü olabilir .
xenoterracide

@xenoterracide Haklısın, ben daha çok bir veritabanının sürüm oluşturma sorunu hakkında konuşuyordum
DrColossos

Yanıtlar:


9

Neden COMMENT ONçeşitli SCHEMAbileşenleri kullanmıyorsunuz, bu şekilde yorumlarınız şemada ve dökülecek.

COMMENT, bir veritabanı nesnesi hakkında yorum saklar.
Bir açıklamayı değiştirmek için aynı nesne için yeni bir COMMENT komutu verin. Her nesne için yalnızca bir yorum dizesi saklanır. Bir yorumu kaldırmak için metin dizesinin yerine NULL yazın. Nesne bırakıldığında yorumlar otomatik olarak bırakılır.


Gerçekten yararlı, ama henüz en iyi uygulamalar cevabı almayı umduğum için bunu henüz Cevap olarak işaretlemek istemiyorum.
Aleksandr Levchuk

2

Sürüm kontrol şemaları benim için her zaman sorunlu olmuştur. Genelde kullandığım veri modelleme aracı tarafından oluşturulan şemayı sürüm kontrolü yapıyorum. Model aynı zamanda versiyon kontrollüdür. Şemayı güncelleştirmek için gereken düzeltme ekini oluşturmak için geçerli ve önceki şema arasındaki farkları kullanıyorum. Bazı modelleme araçları kullanılabilir şema güncelleme komut dosyaları oluşturur. Güncelleme komut dosyaları da sürüm kontrollüdür.

Bazen şemayı, şemayı yeniden oluşturmak için uygun bir formatta dökümü amaçlanan komut dosyalarını görüyorum. Bunlardan biri aradığınız şey olabilir. Bazı modelleme ve sorgu araçları, mevcut bir şemadan şema yenileme komut dosyaları oluşturabilir. Bu komut dosyasını yazabiliyorsanız, sürüm denetimi için uygun bir dosya verebilir.


2

Önceki teklifime bir alternatif (veya bunları birleştirebilirsiniz), SQL kodunuzu düzenleyicinize (IDE) yazmak ve dosyaları kaydetmek ve bunları veritabanında kodu çalıştırdıktan sonra VCS'nize taahhüt etmektir psql -1f. Bu şekilde kod çalıştırılmadan önce sürüm kontrol edilir.


"Bu şekilde kod çalıştırılmadan önce sürüm kontrol edilir." Ve olmalı.
Mike Sherrill 'Cat Recall'

@ catcall evet ama ops postasını okursanız, durumun böyle olduğunu sanmıyorum.
xenoterracide

Maalesef gördüğüm birçok yerde durum böyle değil. Ancak test ettiğiniz kodun ve KG'nin üretime geçtiğiniz kodla aynı olduğunu garanti etmenin tek yolu budur. "True" veritabanının DBMS'de değil VCS'de olduğu fikri yaygın değildir.
Mike Sherrill 'Cat Recall'

0

Ben benzer bir projede çalışıyorum. Bu benim tasarım teklifim:

  1. DB nesnelerini düzenli olarak yorumlamak, iki haftada bir veya ayda iki kez diyelim.
  2. do bütün pg_dump (evet her şey emin tüm küçük ayrıntıları ve ilişkileri olsun yapmak olsun). Onları yyyymmdd-VERSION.dump olarak adlandırın
  3. Git kullanıyorsanız büyük dosyalar için bir eklenti kullanın
  4. Bir repo kullanmıyorsanız, aşağıdaki tabloda olduğu gibi metin .CSV biçiminde basit bir tablo oluşturun:

    version | file name | date | description | 1.0 | yyyymmdd-v10.dump | yyyymmdd | new version of user table | 1.1 | backupDB-v11.dump | yyyymmdd | normalized reports tables |

  5. dosya adıyla oluşturulan dökümlerin CSV dosyasında bir ilişki tutarak onları bir şekilde kolayca takip edebilirsiniz ve geri yüklemenin çalışacağından emin olursunuz çünkü kesinlikle her şeyi terk ettiniz.

Günümüzde herhangi bir bulut depolama alanı veya yerinde depolama, veri TB'leri hakkında konuşurken bile çok pahalı olmamalıdır. 16 TB'a kadar 700 ila 1000 USD arasında bir miktar öfke var .

En popüler olanı AWS S3 gibi bir depolama bulutuna geçerseniz, $$$'yi çok daha fazla tasarruf edebilirsiniz

İyi bir tasarım ve organizasyonun standartları, uygulandıktan sonra acı verici olmaması gereken tüm BT altyapısını ve varlıklarını takip etmek için tanımlanırsa, nispeten basit olabilir ve yapılandırmanın acılarını ve en önemlisi zamandan tasarruf etmenizi sağlar ...

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.