Υπάρχει βιβλιοθήκη / πλαίσιο για undo / redo αλλαγές γραμμών στη βάση δεδομένων εκεί;

ψήφοι
2

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

Θέλω να εντοπίζουν τις αλλαγές συνδεθείτε. Θέλω να εξαγάγετε και να εκτελέσετε το diff από την ανάποδη. (Αναίρεση σαν ένα svn συγχώνευση -r 101: 100). Θα μπορεί να χρειαστεί ένα ευρετήριο αναζήτησης για την ιστορία.

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

EDIT: Για παράδειγμα, οι συναλλαγές τραπεζικού λογαριασμού. Έχω στήλη «ισορροπία» (και άλλοι) ενημέρωση του πίνακα. ο χρήστης θα βρει ένα λάθος από τον ίδιο 10 ημέρες αργότερα, και θα θέλει να ακυρώσει / επαναφορά τη συγκεκριμένη συναλλαγή, χωρίς να αλλάζει τους άλλους.

Πώς μπορώ να το κάνω χάρη στο επίπεδο εφαρμογής;

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


7 απαντήσεις

ψήφοι
2

Θα μπορούσατε να χρησιμοποιήσετε μια προσέγγιση αναθεώρησης για κάθε αρχείο που θέλετε να εντοπίζουν. Αυτό συνεπάγεται τη διατήρηση μια σειρά στον πίνακα για κάθε αναθεώρηση του ρεκόρ. Τα αρχεία θα είναι δεμένα μεταξύ τους με ένα κοινόχρηστο «ID» και θα μπορούσαν να ερωτηθούν σχετικά με την «Κατάσταση Αναθεώρηση» (π.χ. Κατεβάστε την τελευταία «Εγκρίθηκε» ρεκόρ).

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

[ID] [Revision Date] [Revision Status] [Modified By] [Balance]
1     1-1-2008         Expired           User1         $100
1     1-2-2008         Expired           User2         $200
2     1-2-2008         Approved          User3         $300
1     1-3-2008         Approved          User1         $250
Απαντήθηκε 09/12/2008 στις 16:40
πηγή χρήστη

ψήφοι
2

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

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

ψήφοι
1

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

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

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

ψήφοι
0

Δεν είμαι γνωρίζει ένα συγκεκριμένο μοτίβο, παρόλο που έχω δημιουργήσει πλήρες ιστορικό undo / ελέγχου πριν από τη χρήση ωθήσεις και rowversions.

Υπάρχουν μερικές εφαρμογές για το MS SQL που σας επιτρέπουν να τράτα μέσα από τα κούτσουρα και να δούμε τις πραγματικές αλλαγές.

Έχω χρησιμοποιήσει ένα ονομάζεται Σύνδεση Navigator πίσω με το MS SQL 2000 που χρησιμοποιείται για να επιτρέψτε μου να αναιρέσετε μια συγκεκριμένη ιστορική συναλλαγής - Δεν μπορώ να το βρείτε τώρα όμως.

http://www.lumigent.com και http://www.apexsql.com κάνουν τα εργαλεία για την προβολή των κορμών, αλλά δεν νομίζω ότι ούτε σας επιτρέπει να τα επαναφέρετε.

Νομίζω ότι ο καλύτερος τρόπος για να γίνει αυτό είναι να γράψετε την αίτησή σας με αυτό το πνεύμα - που έχετε μια-δυο καλές προτάσεις εδώ ήδη για το πώς να το κάνουμε.

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

ψήφοι
0

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

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

Η «τρέχουσα» αρχείο θα πρέπει να έχει πάντα μια valid_to_date της «12.31.2999» ή κάποια arbiteraly υψηλής αξίας. Όταν μια τιμή δεν αλλάζει αλλάξετε το «έγκυρο-to-date» με την τρέχουσα ημερομηνία και τοποθετήστε μια νέα σειρά με ένα έγκυρο-από-την ημερομηνία του σήμερα και έγκυρης-to-ημερομηνία «12.31.2999» αντιγράψετε όλα τα στήλες από την παλιά σειρά, εφόσον δεν έχουν αλλάξει.

Μπορείτε να δημιουργήσετε απόψεων με «επιλέξτε όλες τις στήλες, εκτός από έγκυρη-xx-ημερομηνία από το τραπέζι όπου ισχύουν μέχρι την ημερομηνία =" 12.31.2999»

Ποια θα επιτρέψει όλα τα τρέχοντα ερωτήματα σας να εργαστείτε αμετάβλητες.

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

Η λογική αναίρεσης πρέπει να είναι προφανές.

Απαντήθηκε 10/12/2008 στις 11:07
πηγή χρήστη

ψήφοι
0

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

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

Ανάπτυξη Ώρα προσανατολισμό των εφαρμογών βάσεων δεδομένων σε SQL από τον Richard T. Snodgrass

διαθέσιμο για download εδώ:

http://www.cs.arizona.edu/people/rts/tdbbook.pdf

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

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

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

ψήφοι
0

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

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

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