Είναι ένα σύστημα ελέγχου εκδόσεων για αλλαγές δομή της βάσης δεδομένων εκεί;

ψήφοι
104

Μου συμβαίνει συχνά να αντιμετωπίσετε το ακόλουθο πρόβλημα.

Δουλεύω σε ορισμένες αλλαγές σε ένα έργο που απαιτεί νέες πίνακες ή στήλες της βάσης δεδομένων. Κάνω τις τροποποιήσεις της βάσης δεδομένων και να συνεχίσει το έργο μου. Συνήθως, θυμάμαι να γράψετε τις αλλαγές έτσι ώστε να μπορούν να αναπαραχθούν στο live σύστημα. Ωστόσο, δεν είναι πάντα θυμάμαι τι έχω αλλάξει και δεν θυμάστε πάντα να το γράψετε.

Έτσι, κάνω μια ώθηση στο live σύστημα και να πάρει μια μεγάλη, προφανές σφάλμα ότι δεν υπάρχει NewColumnX, ugh.

Ανεξάρτητα από το γεγονός ότι αυτό δεν μπορεί να είναι η καλύτερη πρακτική για την κατάσταση αυτή, είναι ένα σύστημα ελέγχου εκδόσεων για τις βάσεις δεδομένων εκεί; Δεν με νοιάζει για τη συγκεκριμένη τεχνολογία βάσης δεδομένων. Απλά θέλω να ξέρω αν υπάρχει. Αν συμβαίνει να συνεργαστεί με το MS SQL Server, τότε μεγάλη.

Δημοσιεύθηκε 02/08/2008 στις 02:52
πηγή χρήστη
Σε άλλες γλώσσες...                            


22 απαντήσεις

ψήφοι
56

Στο Ruby on Rails, υπάρχει μια έννοια της μετανάστευσης - ένα γρήγορο σενάριο για να αλλάξει τη βάση δεδομένων.

Μπορείτε να δημιουργήσετε ένα αρχείο μετανάστευση, η οποία έχει τους κανόνες για να αυξηθεί η έκδοση db (όπως η προσθήκη μιας στήλης) και τους κανόνες για να υποβαθμίσει την έκδοση (όπως η αφαίρεση μιας στήλης). Κάθε μετανάστευση είναι αριθμημένο, και ένας πίνακας παρακολουθεί την τρέχουσα έκδοση db σας.

Για να μεταναστεύσουν μέχρι , μπορείτε να εκτελέσετε μια εντολή που ονομάζεται «db: μεταναστεύσουν», η οποία εξετάζει την έκδοση σας και εφαρμόζει τις απαραίτητες δέσμες ενεργειών. Μπορείτε να μεταναστεύουν προς τα κάτω με τον ίδιο τρόπο.

Οι ίδιοι σενάρια μετανάστευσης διατηρούνται σε ένα σύστημα ελέγχου εκδόσεων - κάθε φορά που αλλάζετε τη βάση δεδομένων που ελέγχει σε ένα νέο σενάριο, και κάθε προγραμματιστής μπορεί να εφαρμοστεί για να φέρει τις τοπικές db τους στην τελευταία έκδοση.

Απαντήθηκε 02/08/2008 στις 07:23
πηγή χρήστη

ψήφοι
29

Είμαι λίγο παλιό σχολείο, το γεγονός ότι μπορώ να χρησιμοποιήσω τα αρχεία πηγή για τη δημιουργία της βάσης δεδομένων. Στην πραγματικότητα υπάρχουν 2 αρχεία - έργο database.sql και το έργο-updates.sql - η πρώτη για το σχήμα και επίμονη δεδομένα, και το δεύτερο για τροποποιήσεις. Φυσικά, και οι δύο είναι υπό έλεγχο πηγή.

Όταν οι αλλαγές της βάσης δεδομένων, για πρώτη φορά ενημερώσετε το κύριο σχήμα στο έργο-database.sql, στη συνέχεια, αντιγράψτε το σχετικό πληροφορίες για το έργο-updates.sql, για παράδειγμα ALTER δηλώσεις ΠΙΝΑΚΑΣ. Στη συνέχεια μπορεί να εφαρμόσει τις ενημερώσεις της βάσης δεδομένων ανάπτυξη, δοκιμή, επαναλάβει μέχρι να γίνει καλά. Στη συνέχεια, ελέγξτε σε αρχεία, δοκιμή και πάλι, και ισχύουν για την παραγωγή.

Επίσης, συνήθως έχουν ένα τραπέζι στο db - Config - όπως:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT IGNORE  INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Στη συνέχεια, μπορώ να προσθέσω τα εξής στην ενότητα ενημέρωση:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

Το db_versionπαίρνει μόνο άλλαξε όταν η βάση δεδομένων αναδημιουργείται, και το db_revisionμου δίνει μια ένδειξη για το πόσο μακριά η db είναι από τη γραμμή βάσης.

Θα μπορούσε να κρατήσει τις ενημερώσεις στο δικό τους ξεχωριστό αρχεία, αλλά επέλεξα για να τα πολτοποιούμε μαζί και να χρησιμοποιούν cut & paste για να εξαγάγετε τις σχετικές ενότητες. Λίγο πιο καθαριότητα είναι εντάξει, δηλαδή, αφαίρεση «:» από $ Αναθεώρηση 1.1 $ για να τα παγώσει.

Απαντήθηκε 26/09/2008 στις 21:29
πηγή χρήστη

ψήφοι
11

Redgate έχει ένα προϊόν που ονομάζεται SQL Πηγή Ελέγχου . Ενσωματώνει με TFS, SVN, SourceGear Vault, Vault Pro, Mercurial, Perforce, και Git.

Απαντήθηκε 08/07/2011 στις 15:51
πηγή χρήστη

ψήφοι
11

MyBatis (πρώην iBatis) έχει τη μετανάστευση σχήμα , εργαλείο για χρήση στη γραμμή εντολών. Είναι γραμμένο σε Java αν και μπορεί να χρησιμοποιηθεί με οποιοδήποτε έργο.

Για να επιτευχθεί μια καλή πρακτική διαχείρισης της αλλαγής της βάσης δεδομένων, θα πρέπει να προσδιορίσει μερικούς βασικούς στόχους. Έτσι, η MyBatis Schema Συστήματος Μετανάστευσης (ή MyBatis Μεταναστεύσεις για συντομία) επιδιώκει να:

  • Εργασία με οποιαδήποτε βάση δεδομένων, νέες ή υφιστάμενες
  • Αξιοποιήστε το σύστημα ελέγχου της πηγής (π.χ. Subversion)
  • Ενεργοποίηση ταυτόχρονη προγραμματιστές ή ομάδες να εργάζονται ανεξάρτητα
  • Αφήστε τις συγκρούσεις πολύ ορατό και εύκολα διαχειρίσιμο
  • Αφήστε για προς τα εμπρός και προς τα πίσω τη μετανάστευση (εξελιχθούν, να αποκεντρωθεί αντίστοιχα)
  • Κάντε την τρέχουσα κατάσταση της βάσης δεδομένων εύκολα προσβάσιμο και κατανοητό
  • Ενεργοποίηση μεταναστεύσεις παρά τα προνόμια πρόσβασης ή της γραφειοκρατίας
  • Εργασία με οποιαδήποτε μεθοδολογία
  • Ενθαρρύνει καλό, συνεπές πρακτικές
Απαντήθηκε 10/07/2010 στις 22:56
πηγή χρήστη

ψήφοι
10

Αναρωτιέμαι ότι κανείς δεν αναφέρουν το εργαλείο ανοικτού κώδικα liquibase που είναι βασίζεται σε Java και θα πρέπει να εργαστεί για σχεδόν κάθε βάση δεδομένων που υποστηρίζει JDBC. Σε σύγκριση με ράγες χρησιμοποιεί xml αντί ρουμπίνι για να εκτελέσει τις αλλαγές σχήματος. Αν και μου αρέσει xml για τον τομέα συγκεκριμένες γλώσσες το πολύ δροσερό πλεονέκτημα της XML είναι ότι liquibase ξέρει πώς να επαναφέρετε ορισμένες εργασίες, όπως

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

Έτσι, δεν χρειάζεται να χειριστεί το θέμα της δικής σας

Καθαρό δηλώσεις SQL ή εισαγωγή δεδομένων υποστηρίζεται επίσης.

Απαντήθηκε 10/07/2010 στις 22:26
πηγή χρήστη

ψήφοι
10

Συστήνω ιδιαίτερα SQL Δέλτα . Απλά το χρησιμοποιούν για να δημιουργήσουν τα σενάρια διαφορά όταν είμαι γίνει κωδικοποίηση χαρακτηριστικό μου και να ελέγξει αυτά τα σενάρια σε εργαλείο μου τον έλεγχο πηγή (Mercurial :))

Έχουν και οι δύο σε ένα διακομιστή SQL & έκδοση της Oracle.

Απαντήθηκε 28/05/2009 στις 03:12
πηγή χρήστη

ψήφοι
9

Οι περισσότερες μηχανές της βάσης δεδομένων θα πρέπει να στηρίξει ντάμπινγκ βάση δεδομένων σας σε ένα αρχείο. Ξέρω MySQL κάνει, ούτως ή άλλως. Αυτό θα είναι απλά ένα αρχείο κειμένου, ώστε να μπορείτε να υποστηρίζουν ότι για να Subversion, ή οτιδήποτε άλλο που χρησιμοποιείτε. Θα ήθελα να είναι εύκολο να εκτελέσετε μια διαφορά στα αρχεία πάρα πολύ.

Απαντήθηκε 02/08/2008 στις 02:56
πηγή χρήστη

ψήφοι
8

Εάν χρησιμοποιείτε SQL Server θα ήταν δύσκολο να νικήσει δεδομένων Dude (γνωστός και ως βάση δεδομένων έκδοση του Visual Studio). Μόλις πάρετε κρεμάστε από το, κάνει ένα σχήμα σύγκρισης μεταξύ της πηγής ελέγχονται σας έκδοση της βάσης δεδομένων και την έκδοση παραγωγής είναι ένα αεράκι. Και με ένα κλικ μπορείτε να δημιουργήσετε διαφορά DDL σας.

Υπάρχει ένα εκπαιδευτικό βίντεο στο MSDN που είναι πολύ χρήσιμη.

Ξέρω για DBMS_METADATA και Toad, αλλά αν κάποιος θα μπορούσε να καταλήξει σε μια Φίλε δεδομένων για την Oracle τότε η ζωή θα ήταν πολύ γλυκιά.

Απαντήθηκε 10/09/2008 στις 20:49
πηγή χρήστη

ψήφοι
7

Ρίξτε μια ματιά στο DBMS_METADATA πακέτο μαντείο.

Ειδικότερα, οι ακόλουθες μέθοδοι είναι ιδιαίτερα χρήσιμες:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Μόλις είστε εξοικειωμένοι με τον τρόπο λειτουργίας τους (αρκετά αυτονόητα) μπορείτε να γράψετε ένα απλό σενάριο για να πετάξει τα αποτελέσματα αυτών των μεθόδων σε αρχεία κειμένου που μπορεί να τεθεί υπό έλεγχο πηγή. Καλή τύχη!

Δεν είμαι σίγουρος αν υπάρχει κάτι αυτή η απλή για MSSQL.

Απαντήθηκε 01/09/2008 στις 21:57
πηγή χρήστη

ψήφοι
7

Έχετε αρχική σας δημιουργούν πίνακα καταστάσεων ελεγκτή έκδοση, στη συνέχεια, προσθέστε αλλάξει πίνακα καταστάσεων, αλλά ποτέ επεξεργαστείτε αρχεία, απλά πιο αλλάξει τα αρχεία ιδανική ονομάζεται διαδοχικά, ή ακόμα και ως «σύνολο αλλαγή», ώστε να μπορείτε να βρείτε όλες τις αλλαγές για μια συγκεκριμένη εγκατάσταση.

Το πιο ανθεκτικά μέρος που μπορώ να δω, είναι η παρακολούθηση των εξαρτήσεων, π.χ., για μια συγκεκριμένη εγκατάσταση πίνακα Β μπορεί να χρειαστεί να ενημερωθεί πριν πίνακα A.

Απαντήθηκε 31/08/2008 στις 12:25
πηγή χρήστη

ψήφοι
7

Για Oracle, μπορώ να χρησιμοποιήσω Toad , το οποίο μπορεί να πετάξει ένα σχήμα σε μια σειρά διακριτών αρχείων (π.χ., ένα αρχείο ανά πίνακα). Έχω κάποια σενάρια που διαχειρίζονται αυτή τη συλλογή σε Perforce, αλλά νομίζω ότι θα πρέπει να είναι εύκολα εφικτό σε σχεδόν οποιοδήποτε σύστημα ελέγχου αναθεώρησης.

Απαντήθηκε 02/08/2008 στις 07:05
πηγή χρήστη

ψήφοι
6

PLSQL Developer, ένα εργαλείο από Όλες Arround Αυτοματισμοί, έχει ένα plugin για αποθετήρια που λειτουργεί ΟΚ (αλλά όχι μεγάλη) με τη Visual Source Safe.

Από την ιστοσελίδα:

Η έκδοση ελέγχου Plug-In παρέχει μια σφιχτή ολοκλήρωση μεταξύ της PL / SQL οποιοδήποτε σύστημα Έλεγχος έκδοσης που υποστηρίζει το SCC προδιαγραφές διεπαφής Microsoft Developer IDE >> και. >> Αυτό περιλαμβάνει τα πιο δημοφιλή συστήματα ελέγχου εκδόσεων, όπως το Microsoft Visual SourceSafe, >> Merant PVC και MKS Πηγή Ακεραιότητα.

http://www.allroundautomations.com/plsvcs.html

Απαντήθηκε 17/09/2008 στις 16:50
πηγή χρήστη

ψήφοι
6

Έχω κάνει αυτό μακριά και για χρόνια - διαχείριση (ή προσπαθούν να διαχειριστούν) εκδόσεις σχήματος. Οι καλύτερες προσεγγίσεις εξαρτώνται από τα εργαλεία που έχουμε. Εάν μπορείτε να πάρετε το εργαλείο Quest Software «Schema Manager» θα είναι σε καλή κατάσταση. Η Oracle έχει τη δική του, κατώτερη εργαλείο της, που ονομάζεται επίσης «Διαχείριση σχήματος» (σύγχυση πολύ;) που δεν συστήνω.

Χωρίς ένα αυτοματοποιημένο εργαλείο (δείτε άλλα σχόλια εδώ σχετικά στοιχεία Dude), τότε θα πρέπει να χρησιμοποιείτε scripts και τα αρχεία DDL άμεσα. Διαλέξτε μια προσέγγιση, το έγγραφο αυτό, και να ακολουθήσουν αυστηρά. Μου αρέσει που έχουν τη δυνατότητα να δημιουργήσετε ξανά τη βάση δεδομένων ανά πάσα στιγμή, γι 'αυτό προτιμούν να έχουν μια πλήρη DDL εξαγωγή ολόκληρης της βάσης δεδομένων (αν είμαι το DBA), ή του σχήματος του έργου (αν είμαι στο προϊόν -ανάπτυξη λειτουργία).

Απαντήθηκε 15/09/2008 στις 16:01
πηγή χρήστη

ψήφοι
6

Γράφω σενάρια απελευθέρωσης db μου παράλληλα με την κωδικοποίηση, και να κρατήσει τα σενάρια απελευθέρωσης σε ένα συγκεκριμένο έργο ενότητα στο SS. Αν κάνω μια αλλαγή στον κώδικα που απαιτεί αλλαγή db, τότε μπορώ να ενημερώσω το σενάριο απελευθέρωση ταυτόχρονα. Πριν από την απελευθέρωση, τρέχω το σενάριο απελευθέρωσης σε μια καθαρή db dev (αντιγραφή δομή σοφή από την παραγωγή) και να κάνει τις τελικές δοκιμές μου σε αυτό.

Απαντήθηκε 30/08/2008 στις 19:58
πηγή χρήστη

ψήφοι
5

ER Studio σας επιτρέπει να αντιστρέψει το σχήμα της βάσης δεδομένων σας στο εργαλείο και μπορείτε στη συνέχεια να το συγκρίνουμε να ζουν βάσεις δεδομένων.

Παράδειγμα: Αντίστροφη ανάπτυξη σας σχήμα στο ER Studio - σύγκρισή της με την παραγωγή και θα απαριθμήσει όλες τις διαφορές. Μπορεί το σενάριο οι αλλαγές ή απλά να τους περάσει αυτόματα.

Μόλις έχετε ένα σχήμα στο ER Studio, μπορείτε είτε να αποθηκεύσετε το σενάριο δημιουργίας ή να το αποθηκεύσετε ως ένα ιδιόκτητο δυαδικό και να το αποθηκεύσετε στον έλεγχο έκδοσης. Αν ποτέ θέλετε να επιστρέψετε σε μια προηγούμενη έκδοση του συστήματος, απλά να το ελέγξουμε και σπρώξτε στην πλατφόρμα db σας.

Απαντήθηκε 17/09/2008 στις 19:04
πηγή χρήστη

ψήφοι
5

Υπάρχει μια PHP5 «πλαίσιο μετανάστευσης βάσεων δεδομένων» που ονομάζεται Ruckusing. Δεν έχω χρησιμοποιήσει, αλλά τα παραδείγματα που δείχνουν την ιδέα, αν χρησιμοποιείτε τη γλώσσα για τη δημιουργία της βάσης δεδομένων, όπως και όταν χρειάζεται, το μόνο που πρέπει να παρακολουθείτε αρχεία προέλευσης.

Απαντήθηκε 02/08/2008 στις 08:48
πηγή χρήστη

ψήφοι
3

Μπορείτε να χρησιμοποιήσετε Εργαλεία δεδομένων του Microsoft SQL Server στο Visual Studio για να δημιουργήσει σενάρια για τα αντικείμενα βάσης δεδομένων ως μέρος ενός έργου του SQL Server. Στη συνέχεια μπορείτε να προσθέσετε τα σενάρια για τον έλεγχο της πηγής χρησιμοποιώντας την ενσωμάτωση ελέγχου πηγή που είναι ενσωματωμένη στο Visual Studio. Επίσης, SQL Server έργα σας επιτρέπουν να επαληθεύουν τα αντικείμενα βάσης δεδομένων χρησιμοποιώντας ένα μεταγλωττιστή και να δημιουργήσει σενάρια ανάπτυξης για να ενημερώσετε μια υπάρχουσα βάση δεδομένων ή να δημιουργήσετε ένα νέο.

Απαντήθηκε 22/12/2014 στις 11:58
πηγή χρήστη

ψήφοι
2

Σύγκριση σχημάτων για την Oracle είναι ένα εργαλείο ειδικά σχεδιασμένο για να μεταναστεύσουν αλλαγές από την βάση δεδομένων μας Oracle στο άλλο. Παρακαλώ επισκεφθείτε την παρακάτω διεύθυνση URL για το σύνδεσμο λήψης, όπου θα είναι σε θέση να χρησιμοποιήσει το λογισμικό για ένα πλήρως λειτουργικό δίκη.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Απαντήθηκε 10/01/2010 στις 03:59
πηγή χρήστη

ψήφοι
2

Έχουμε χρησιμοποιήσει MS Σύστημα ομάδας Database Edition με πολύ καλή επιτυχία. Ενσωματώνει με TFS ελέγχου εκδόσεων και Visual Studio περισσότερο ή λιγότερο ομαλά και μας επιτρέπει να διαχειρίζεται αποθηκεύονται procs, προβολές, κλπ, εύκολα. Επίλυση των συγκρούσεων μπορεί να είναι ένας πόνος, αλλά η ιστορία έκδοση είναι πλήρης τη στιγμή που θα γίνει. Στη συνέχεια, μεταναστεύσεις προς QA και της παραγωγής είναι εξαιρετικά απλή.

Είναι δίκαιο να πούμε ότι είναι ένα προϊόν έκδοση 1.0, αν και δεν είναι χωρίς μερικά ζητήματα.

Απαντήθηκε 26/09/2008 στις 19:12
πηγή χρήστη

ψήφοι
1

Θα ήθελα να συστήσει μία από τις δύο προσεγγίσεις. Πρώτον, επενδύουν σε PowerDesigner από την Sybase. Enterprise Edition. Σας επιτρέπει να σχεδιάσετε Φυσική datamodels, και ένα σωρό άλλα. Αλλά αυτό έρχεται με ένα αποθετήριο που σας επιτρέπει να κάνετε check-in μοντέλα σας. Κάθε νέα υπό έλεγχο μπορεί να είναι μια νέα έκδοση, που μπορεί να συγκριθεί οποιαδήποτε έκδοση σε οποιαδήποτε άλλη έκδοση, ακόμη και σε ό, τι είναι στη βάση δεδομένων σας εκείνη τη στιγμή. Θα παρουσιάσει στη συνέχεια μια λίστα με κάθε διαφορά και να ζητήσει τα οποία πρέπει να μεταφερθούν ... και στη συνέχεια να χτίζει το σενάριο για να το κάνει. Δεν είναι φθηνό, αλλά είναι μια συμφωνία σε διπλάσια τιμή και είναι ROI είναι περίπου 6 μήνες.

Η άλλη ιδέα είναι να ενεργοποιήσετε DDL λογιστικού ελέγχου (λειτουργεί σε Oracle). Αυτό θα δημιουργήσει ένα τραπέζι με κάθε αλλαγή που κάνετε. Εάν το ερώτημα τις αλλαγές από την χρονική σήμανση την τελευταία φορά που μεταφέρθηκε αλλαγές της βάσης δεδομένων σας για να prod για τώρα, θα έχετε μια ταξινομημένη λίστα με όλα όσα έχετε κάνει. Λίγα όπου ρήτρες για την εξάλειψη μηδενικού αθροίσματος αλλάζει όπως δημιουργία πίνακα foo? ακολουθούμενη από πίνακα σταγόνα foo? και μπορείτε εύκολα να οικοδομήσουμε ένα mod σενάριο. Γιατί να κρατήσει τις αλλαγές σε ένα wiki, το οποίο είναι διπλάσιο από το έργο. Αφήστε τη βάση δεδομένων τους εντοπίσουμε για εσάς.

Απαντήθηκε 26/09/2008 στις 18:53
πηγή χρήστη

ψήφοι
1

Δύο συστάσεις του βιβλίου: «Βάσεις Δεδομένων Refactoring» από Ambler και Sadalage και «Agile Τεχνικές βάση δεδομένων» από Ambler.

Κάποιος ανέφερε Rails μεταναστεύσεις. Νομίζω ότι λειτουργούν μεγάλο, ακόμη και εκτός των εφαρμογών Rails. Τους χρησιμοποιείται σε μια εφαρμογή ASP με τον SQL Server που ήμασταν στη διαδικασία μετάβασης σε ράγες. Μπορείτε να ελέγξετε τα σενάρια της μετανάστευσης τον εαυτό τους μέσα στο VCS. Εδώ είναι ένα μήνυμα από Ρεαλιστικό τον Dave Thomas σχετικά με το θέμα.

Απαντήθηκε 22/09/2008 στις 19:17
πηγή χρήστη

ψήφοι
1

Σε περίπτωση απουσίας ενός VCS για αλλαγές στον πίνακα έχω να συνδεθείτε σε ένα wiki. Τουλάχιστον τότε μπορώ να δω πότε και για ποιο λόγο άλλαξε. Είναι πολύ από το τέλειο, όπως δεν είναι όλοι το κάνουμε και έχουμε πολλές εκδόσεις του προϊόντος σε χρήση, αλλά καλύτερα από το τίποτα.

Απαντήθηκε 01/09/2008 στις 08:29
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more