Μηχανισμοί για αλλαγές σχήματος ΒΔ παρακολούθησης

ψήφοι
128

Ποιες είναι οι καλύτερες μέθοδοι για την παρακολούθηση ή / και την αυτοματοποίηση αλλαγές DB σχήμα; Η ομάδα μας χρησιμοποιεί ανατροπή για τον έλεγχο της έκδοσης και είμαστε σε θέση να αυτοματοποιήσει ορισμένα από τα καθήκοντά μας με αυτόν τον τρόπο (πιέζοντας συσσωρεύεται σε ένα διακομιστή στάσης, την ανάπτυξη δοκιμαστεί κώδικα σε ένα διακομιστή παραγωγής), αλλά είμαστε ακόμα κάνει ενημερώσεις της βάσης δεδομένων με το χέρι. Θα ήθελα να βρείτε ή να δημιουργήσετε μια λύση που μας επιτρέπει να λειτουργεί αποτελεσματικά σε όλη την servers με διαφορετικά περιβάλλοντα, ενώ συνεχίζει να χρησιμοποιεί το Subversion ως backend μέσω της οποίας κώδικα και DB ενημερώσεις έσπρωξε γύρω από διάφορους διακομιστές.

Πολλά δημοφιλή πακέτα λογισμικού περιλαμβάνουν αυτόματη ενημέρωση σενάρια που ανιχνεύουν DB έκδοση και να εφαρμόσει τις απαραίτητες αλλαγές. Είναι αυτός ο καλύτερος τρόπος για να το κάνετε αυτό, ακόμη και σε μεγαλύτερη κλίμακα (σε πολλά σχέδια και μερικές φορές πολλαπλά περιβάλλοντα και γλώσσες); Αν ναι, υπάρχει κάποια υπάρχοντα κώδικα εκεί έξω που απλοποιεί τη διαδικασία ή είναι καλύτερο απλά να κυλήσει τη δική μας λύση; Έχει κανείς εφαρμοστεί κάτι παρόμοιο πριν και ενσωμάτωσε σε ανατροπή μετά τη διάπραξη άγκιστρα, ή είναι αυτό μια κακή ιδέα;

Ενώ μια λύση που υποστηρίζει πολλαπλές πλατφόρμες θα ήταν προτιμότερο, σίγουρα πρέπει να υποστηρίξει την Linux / Apache / MySQL / PHP stack καθώς η πλειοψηφία των εργασιών μας είναι σε αυτή την πλατφόρμα.

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


20 απαντήσεις

ψήφοι
54

Στον κόσμο Rails, δεν υπάρχει η έννοια της μετανάστευσης, σενάρια στα οποία οι αλλαγές στη βάση δεδομένων γίνονται σε Ruby και όχι μια βάση δεδομένων ειδική γεύση του SQL. Ruby σας κωδικό μετανάστευσης καταλήγει να μετατραπεί σε συγκεκριμένη DDL σε τρέχουσα βάση δεδομένων σας? Αυτό κάνει τη μετάβαση πλατφόρμες βάσεων δεδομένων πολύ εύκολη.

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

Αυτός ο οδηγός Oracle στο Rails μεταναστεύσεις καλύπτει μεταναστεύσεις αρκετά καλά.

Οι προγραμματιστές που χρησιμοποιούν άλλες γλώσσες έχουν εξετάσει μεταναστεύσεις και έχουν εφαρμόσει τη δική τους γλώσσα-συγκεκριμένες εκδόσεις. Ξέρω Ruckusing , ένα σύστημα PHP μεταναστεύσεις που διαμορφώνεται μετά τις μεταναστεύσεις Ράγες? θα μπορούσε να είναι αυτό που ψάχνετε.

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

ψήφοι
48

Χρησιμοποιούμε κάτι παρόμοιο με bcwoord να κρατήσει σχήματα βάσης δεδομένων μας συγχρονίζονται σε 5 διαφορετικές εγκαταστάσεις (παραγωγή, στάσης και λίγες εγκαταστάσεις ανάπτυξης), και υποστηρίζεται σε έλεγχο έκδοσης, και λειτουργεί αρκετά καλά. Θα επεξεργαστεί ένα κομμάτι:


Για να συγχρονίσετε τη δομή της βάσης δεδομένων, έχουμε ένα μόνο σενάριο, update.php, και μια σειρά από αρχεία αριθμημένα 1.sql, 2.SQL, 3.sql, κλπ Το σενάριο χρησιμοποιεί έναν επιπλέον πίνακα για να αποθηκεύσετε τον αριθμό της τρέχουσας έκδοσης του βάση δεδομένων. Τα αρχεία N.sql δημιουργημένο με το χέρι, για να πάει από την έκδοση (Ν-1) για την έκδοση N της βάσης δεδομένων.

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

Το σενάριο ενημέρωση λειτουργεί ως εξής:

  • Σύνδεση με τη βάση δεδομένων.
  • Δημιουργήστε ένα αντίγραφο ασφαλείας της τρέχουσας βάσης δεδομένων (γιατί τα πράγματα θα πάνε στραβά) [mysqldump].
  • Δημιουργία πίνακα τήρησης λογιστικών βιβλίων (που ονομάζεται _meta) αν δεν υπάρχει.
  • Διαβάστε τρέχουσα έκδοση από _meta πίνακα. Ας υποθέσουμε 0 αν δεν βρέθηκε.
  • Για όλα τα .sql αρχεία αριθμημένα υψηλότερη από την έκδοση, εκτέλεση τους, προκειμένου
  • Αν ένα από τα αρχεία που παράγονται σφάλμα: επαναφέρετε το αντίγραφο ασφαλείας
  • Διαφορετικά, ενημερώσετε την έκδοση του πίνακα τήρησης βιβλίων στο υψηλότερο αρχείο .sql εκτελεστεί.

Τα πάντα πηγαίνει σε έλεγχο πηγή, και κάθε εγκατάσταση έχει ένα σενάριο για την ενημέρωση με την πιο πρόσφατη έκδοση με ένα μόνο εκτέλεση του script (καλώντας update.php με την κατάλληλη βάση δεδομένων κωδικού πρόσβασης κλπ). Εμείς SVN ενημέρωση στάσης και περιβάλλοντα παραγωγής μέσω ενός script που καλεί αυτόματα την ενημέρωση βάσης δεδομένων, έτσι ώστε μια ενημέρωση κώδικα έρχεται με τις απαραίτητες ενημερώσεις της βάσης δεδομένων.

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


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

Προσοχή κατά την επικόλληση ερωτήματα από το phpMyAdmin όμως! Οι εν λόγω δημιουργούνται ερωτήματα περιλαμβάνουν συνήθως το όνομα της βάσης δεδομένων, η οποία σίγουρα δεν θέλετε δεδομένου ότι θα σπάσει τα σενάρια σας! Κάτι σαν CREATE TABLE mydb. newtable(...) θα αποτύχει, εάν η βάση δεδομένων για το σύστημα δεν ονομάζεται mydb. Δημιουργήσαμε ένα προ-σχόλιο SVN γάντζο που θα απαγορεύσει .sql αρχεία που περιέχουν το mydbstring, το οποίο είναι ένα σίγουρο σημάδι ότι κάποιος αντιγραφή / επικόλληση από το phpMyAdmin χωρίς την κατάλληλη έλεγχο.

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

ψήφοι
11

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

Για να μεταβείτε από τη μία την ελευθέρωσή του στο επόμενο, το μόνο που χρειάζεται για να τρέξει το σύνολο των σεναρίων αλλαγής, και η βάση δεδομένων σας είναι up-to-ημερομηνία, και έχετε ακόμα όλα τα δεδομένα σας. Μπορεί να μην είναι ο πιο εύκολος τρόπος, αλλά σίγουρα είναι αποτελεσματική.

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

ψήφοι
9

Εάν εξακολουθούν να ψάχνουν για λύσεις: προτείνουμε ένα εργαλείο που ονομάζεται neXtep σχεδιαστή. Είναι ένα περιβάλλον ανάπτυξης βάσεων δεδομένων με το οποίο μπορείτε να βάλετε ολόκληρη τη βάση δεδομένων σας υπό έλεγχο έκδοσης. Εργάζεστε σε μια έκδοση που ελέγχεται αποθήκη όπου μπορούν να παρακολουθούνται κάθε αλλαγή.

Όταν πρέπει να απελευθερώσει μια ενημέρωση, μπορείτε να δεσμευτούν τα συστατικά σας και το προϊόν θα δημιουργήσει αυτόματα το σενάριο SQL αναβάθμιση από την προηγούμενη έκδοση. Φυσικά, μπορείτε να δημιουργήσετε αυτό το SQL από τις 2 εκδόσεις.

Στη συνέχεια, έχετε πολλές επιλογές: μπορείτε να πάρετε αυτά τα σενάρια και τα βάζουμε σε SVN σας με τον κώδικα της εφαρμογής σας, έτσι ώστε αυτό θα πρέπει να αναπτυχθεί από τα υπάρχοντα μηχανισμό σας. Μια άλλη επιλογή είναι να χρησιμοποιήσετε το μηχανισμό παράδοσης της neXtep: Τα σενάρια που εξάγονται σε κάτι που ονομάζεται «πακέτο παράδοσης» (δέσμες ενεργειών SQL + Περιγραφέας XML), και ο εγκαταστάτης μπορεί να καταλάβει αυτό το πακέτο και να αναπτύξει σε ένα διακομιστή προορισμού, διασφαλίζοντας παράλληλα strcutural τη συνέπεια, την εξάρτηση ελέγχει, σημειώνοντας εγκατεστημένη έκδοση, κ.λπ.

Το προϊόν είναι GPL και βασίζεται σε Eclipse έτσι ώστε να τρέχει σε Linux, Mac και Windows. Θα υποστηρίξει επίσης την Oracle, MySQL και Postgresql αυτή τη στιγμή (υποστήριξη DB2 είναι στο δρόμο). Ρίξτε μια ματιά στο wiki όπου θα βρείτε περισσότερες πληροφορίες: http://www.nextep-softwares.com/wiki

Απαντήθηκε 25/10/2010 στις 06:46
πηγή χρήστη

ψήφοι
9

Το θέμα εδώ είναι πραγματικά καθιστά εύκολο για τους προγραμματιστές να σενάριο δικές τους τοπικές αλλαγές σε έλεγχο πηγή για να μοιραστεί με την ομάδα. Έχω αντιμετωπίσει αυτό το πρόβλημα εδώ και πολλά χρόνια, και είναι εμπνευσμένο από την λειτουργικότητα του Visual Studio για τους επαγγελματίες βάσεων δεδομένων. Αν θέλετε ένα εργαλείο ανοικτού κώδικα με τα ίδια χαρακτηριστικά, δοκιμάστε το εξής: http://dbsourcetools.codeplex.com/ Καλή διασκέδαση, - Nathan.

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

ψήφοι
6

Scott Ambler παράγει μια μεγάλη σειρά άρθρων (και συν-συγγραφέας ενός βιβλίου ) για refactoring βάση δεδομένων, με την ιδέα ότι θα πρέπει να εφαρμόζονται κατ 'ουσίαν, τις αρχές και τις πρακτικές TDD για τη διατήρηση του σχήματος σας. Μπορείτε να ορίσετε μια σειρά δοκιμών μονάδας δεδομένων δομή και σπόρων για τη βάση δεδομένων. Στη συνέχεια, πριν να αλλάξει τίποτα, μπορείτε να τροποποιήσετε / γράφετε εξετάσεις ώστε να αντικατοπτρίζει αυτή την αλλαγή.

Έχουμε κάνει αυτό για μια στιγμή τώρα και φαίνεται να δουλεύει. Γράψαμε κώδικα για να δημιουργήσει τις βασικές όνομα της στήλης και τον τύπο δεδομένων τους ελέγχους σε μια σουίτα δοκιμών μονάδα. Μπορούμε να επαναληφθεί δοκιμών αυτών ανά πάσα στιγμή για να βεβαιωθείτε ότι η βάση δεδομένων στο ταμείο SVN ταιριάζει με το ζωντανό db η εφαρμογή είναι στην πραγματικότητα λειτουργεί.

Όπως αποδεικνύεται, οι προγραμματιστές, επίσης, μερικές φορές τσίμπημα βάση δεδομένων sandbox τους και παραμελούν να ενημερώσετε το αρχείο σχήματος στο SVN. Ο κωδικός εξαρτάται στη συνέχεια σε μια αλλαγή db που δεν έχει ελεγχθεί. Αυτό το είδος του σφάλματος μπορεί να είναι εξωφρενικά δύσκολο να γίνουν αντιληπτά, αλλά η σουίτα τεστ θα το πάρει αμέσως. Αυτό είναι ιδιαίτερα καλό, αν έχετε χτισμένο σε ένα μεγαλύτερο σχέδιο Συνεχής Ολοκλήρωσης.

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

ψήφοι
6

Χωματερή σχήμα σας σε ένα αρχείο και να το προσθέσετε σε έλεγχο πηγή. Στη συνέχεια, μια απλή διαφορά θα σας δείξει τι άλλαξε.

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

ψήφοι
5

Κ Scott Allen έχει μια αξιοπρεπή άρθρο ή δύο σε σχήμα εκδόσεων, το οποίο χρησιμοποιεί την έννοια αυξητικής ενημέρωσης scripts / μεταναστεύσεις αναφέρεται σε άλλες απαντήσεις εδώ? δείτε http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx .

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

ψήφοι
5

Εάν χρησιμοποιείτε C #, ρίξτε μια ματιά στο υποηχητικά, ένα πολύ χρήσιμο εργαλείο ORM, αλλά επίσης δημιουργεί το σενάριο SQL για να ανασυνταχθεί σύστημα σας και \ ή δεδομένων. Αυτά τα σενάρια μπορούν στη συνέχεια να τεθούν σε έλεγχο πηγή.

http://subsonicproject.com/

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

ψήφοι
5

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

Στη συνέχεια, διαπράττουν το σενάριο σε έλεγχο πηγαίο κώδικα μαζί με τον κώδικα που λειτουργεί σε αυτό. Όταν θέλετε να αλλάξετε το σχήμα μαζί με τον κωδικό, το σενάριο μπορεί να ελεγχθεί μαζί με τον κωδικό που απαιτεί την αλλαγή σχήματος. Στη συνέχεια, diffs για το σενάριο θα δείξει diffs για αλλαγές σχήματος.

Με αυτό το σενάριο, θα μπορούσατε να το ενσωματώσει με DBUnit ή κάποιου είδους κατασκευής σενάριο, έτσι φαίνεται ότι θα μπορούσε να ταιριάζει με ήδη αυτοματοποιημένες διαδικασίες σας.

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

ψήφοι
4

Έχω χρησιμοποιήσει την ακόλουθη δομή του έργου της βάσης δεδομένων σε Visual Studio για διάφορα έργα και λειτούργησε αρκετά καλά:

Βάση δεδομένων

Αλλαγή Σενάρια

0.PreDeploy.sql

1.SchemaChanges.sql

2.DataChanges.sql

3.Permissions.sql

Δημιουργία Σενάρια

Sprocs

λειτουργίες

Προβολές

σύστημα κατασκευής μας, στη συνέχεια ενημερώνει τη βάση δεδομένων από τη μία έκδοση στην επόμενη εκτελώντας τα σενάρια με την ακόλουθη σειρά:

1.PreDeploy.sql

2.SchemaChanges.sql

Περιεχόμενο των Δημιουργήστε φάκελο Scripts

2.DataChanges.sql

3.Permissions.sql

Κάθε έλεγχοι για την ανάπτυξη σε αλλαγές τους για ένα συγκεκριμένο bug / χαρακτηριστικό προσαρτώντας τον κωδικό τους στο τέλος κάθε αρχείου. Μόλις μια σημαντική έκδοση είναι πλήρης και διακλαδισμένης τον έλεγχο πηγή, τα περιεχόμενα των .sql αρχεία στο φάκελο Αλλαγή Scripts διαγράφονται.

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

ψήφοι
4

Χρησιμοποιούμε ένα πολύ απλό, αλλά ακόμα αποτελεσματική λύση.

Για τις νέες εγκαταστάσεις, έχουμε ένα αρχείο metadata.sql στο αποθετήριο το οποίο κατέχει το σύνολο του σχήματος ΒΔ, στη συνέχεια, στο πλαίσιο της διαδικασίας κατασκευής που χρησιμοποιούν αυτό το αρχείο για τη δημιουργία της βάσης δεδομένων.

Για ενημερώσεις, προσθέτουμε τις ενημερώσεις στο λογισμικό ενσωματωμένες. Κρατάμε ότι μια μόνιμη, επειδή δεν μας αρέσει η επίλυση προβλημάτων, πριν να είναι πραγματικά ένα πρόβλημα, και αυτό το είδος του πράγματος δεν αποδειχθεί ότι είναι ένα πρόβλημα μέχρι τώρα.

Έτσι, το λογισμικό μας έχουμε κάτι σαν αυτό:

RegisterUpgrade(1, 'ALTER TABLE XX ADD XY CHAR(1) NOT NULL;');

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

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

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

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

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

ψήφοι
3

Θα δημιουργήσετε φακέλους όνομά του από τις εκδόσεις κατασκευής και να αναβαθμίσουν και να υποβαθμίσει σενάρια εκεί. Για παράδειγμα, θα μπορούσατε να έχετε τους ακόλουθους φακέλους: 1.0.0, 1.0.1 και 1.0.2. Κάθε ένα περιέχει το σενάριο που σας επιτρέπει να αναβαθμίσετε ή να υποβαθμίσει τη βάση δεδομένων σας μεταξύ των εκδόσεων.

Σε περίπτωση που ένας πελάτης ή πελάτης σας καλέσουν με ένα πρόβλημα με την έκδοση 1.0.1 και χρησιμοποιείτε 1.0.2, φέρνοντας τη βάση δεδομένων πίσω στην έκδοση του δεν θα είναι πρόβλημα.

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

Ακριβώς όπως ο Joey είπε, εάν είστε σε έναν κόσμο Rails, χρησιμοποιήστε μεταναστεύσεις. :)

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

ψήφοι
2

Δοκιμάστε db υλοποιήσιμη - κυρίως ένα εργαλείο Java, αλλά λειτουργεί με php, καθώς και.

Απαντήθηκε 19/01/2012 στις 02:52
πηγή χρήστη

ψήφοι
2

Μου αρέσει ο τρόπος με τον οποίο Yii χειρίζεται μεταναστεύσεις βάση δεδομένων. Η μετανάστευση είναι βασικά ένα PHP script εφαρμογή CDbMigration. CDbMigrationορίζει μια upμέθοδο που περιέχει τη λογική μετανάστευσης. Είναι επίσης δυνατό να εφαρμόσει μια downμέθοδο για την υποστήριξη αντιστροφή της μετανάστευσης. Εναλλακτικά, safeUpή safeDownμπορεί να χρησιμοποιηθεί για να βεβαιωθείτε ότι η μετανάστευση γίνεται στο πλαίσιο μιας συναλλαγής.

Εργαλείο γραμμής εντολών ΥΙΟΙ του yiicπεριλαμβάνει υποστήριξη για τη δημιουργία και την εκτέλεση των μεταναστεύσεων. Μεταναστεύσεις μπορούν να εφαρμοστούν ή να αναστραφεί, είτε ένα-ένα ή σε μια παρτίδα. Δημιουργία μετανάστευση οδηγεί σε κώδικα για μια κατηγορία PHP εφαρμογή CDbMigration, μοναδικά το όνομά του με βάση μια χρονική σήμανση και ένα όνομα μετανάστευσης που καθορίζονται από το χρήστη. Όλες οι μεταναστεύσεις που έχουν ήδη εφαρμοστεί στη βάση δεδομένων που αποθηκεύονται σε έναν πίνακα της μετανάστευσης.

Για περισσότερες πληροφορίες δείτε την Μετανάστευση Database άρθρο από το εγχειρίδιο.

Απαντήθηκε 25/06/2011 στις 14:18
πηγή χρήστη

ψήφοι
2

μεταναστεύσεις IMHO έχουν ένα τεράστιο πρόβλημα:

Αναβάθμιση από μία έκδοση στην άλλη έργα πρόστιμο, αλλά να κάνει μια νέα εγκατάσταση μιας συγκεκριμένης έκδοσης μπορεί να διαρκέσει για πάντα, εάν έχετε εκατοντάδες πίνακες και μια μακρά ιστορία των αλλαγών (όπως εμείς).

Τρέξιμο όλη την ιστορία του δέλτα από την αρχική τιμή έως και την τρέχουσα έκδοση (για εκατοντάδες πελάτες βάσεις δεδομένων) μπορεί να πάρει ένα πολύ μεγάλο χρονικό διάστημα.

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

ψήφοι
2

Toad για MySQL έχει μια λειτουργία που ονομάζεται σχήμα συγκρίνετε που σας επιτρέπει να συγχρονίσετε τις 2 βάσεις δεδομένων. Είναι το καλύτερο εργαλείο που έχω χρησιμοποιήσει μέχρι τώρα.

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

ψήφοι
2

Θα ήθελα να συστήσω χρησιμοποιώντας Ant (cross platform) για την πλευρά του «scripting» (δεδομένου ότι μπορεί σχεδόν να μιλήσει σε οποιονδήποτε db εκεί έξω μέσω JDBC) και το Subversion για το repository του πηγαίου κώδικα. Αντ θα σας alow να «αντίγραφα ασφαλείας» db σας σε τοπικά αρχεία, πριν από την πραγματοποίηση αλλαγών. 1. αντιγράφων ασφαλείας των υφιστάμενων db σχήμα να καταθέσει μέσω Αντ 2. Έλεγχος έκδοσης για Subversion repository μέσω Αντ 3. αποστολή νέων SQL δηλώσεις σε db μέσω του Αντ

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

ψήφοι
2

Για το τρέχον έργο PHP μου χρησιμοποιούμε την ιδέα των σιδηροτροχιών μεταναστεύσεις και έχουμε έναν κατάλογο μεταναστεύσεις στην οποία κρατάμε αρχεία τίτλο «migration_XX.sql», όπου XX είναι ο αριθμός της μετανάστευσης. Επί του παρόντος αυτά τα αρχεία που δημιουργούνται με το χέρι, όπως οι ενημερώσεις γίνονται, αλλά η δημιουργία τους θα μπορούσε να τροποποιηθεί εύκολα.

Στη συνέχεια, έχουμε ένα σενάριο που ονομάζεται «Migration_watcher», το οποίο, όπως είμαστε σε προ-άλφα, λειτουργεί επί του παρόντος σε κάθε φορτίο σελίδα και ελέγχει αν υπάρχει ένα νέο αρχείο migration_XX.sql όπου XX είναι μεγαλύτερη από την τρέχουσα έκδοση της μετανάστευσης. Αν ναι τρέχει όλα τα αρχεία migration_XX.sql μέχρι τον μεγαλύτερο αριθμό με τη βάση δεδομένων και voila! Οι αλλαγές σχήματος αυτοματοποιημένη.

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

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

ψήφοι
0

Υπάρχει μια γραμμή εντολών mysql-diff εργαλείο που συγκρίνει σχήματα βάσης δεδομένων, όπου το σχήμα μπορεί να είναι μια ζωντανή βάση δεδομένων ή SQL script στο δίσκο. Είναι καλό για τις περισσότερες εργασίες μετανάστευσης σχήμα.

Απαντήθηκε 04/11/2009 στις 20:43
πηγή χρήστη

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