Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Σχετικά με το Publish με Βάση Δεδομένων

Îåêßíçóå áðü ôï ìÝëïò g1024. Τελευταία δημοσίευση από το μέλος g1024 στις 13-05-2011, 17:46. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-05-2011, 17:13 65652

    Σχετικά με το Publish με Βάση Δεδομένων

    Καλημέρα σας,
    έχω κατασκευάσει μια εφαρμογή η οποία έχει  μία βάση δεδομένων.
    Σκεφτομαι να την κάνω Publish σε έναν FTP και απο κει να ενημερώνονται οι πελάτες μου αυτόματα για τις νέες εκδόσεις,
    τι θα γίνετε όμως όταν αλλάζω την δομή της βάσης ή οταν αλλάζω βασικά δεδομένα μέσα στους πίνακες ; . Με μία πρόχειρη δοκιμή κατάλαβα ότι όταν θα κάνω update αυτόματα θα σβήνει η βάση που
    θα έχει ο πελάτης και θα την αντικαθιστά με την δική μου που θα έχω στον ftp.
    Κάηκα!!!!, φαντάζομαι όταν κάποιος πελάτης θα έχει ενημερώσει την βάση μου με καμία 1000 εγγραφές και θα δεί μετά απο το update 0!!!!!
    Υπάρχει καμία λύση για αυτό;

    Ευχαριστώ εκ΄των προτέρων
  •  08-05-2011, 17:30 65653 σε απάντηση της 65652

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

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

    Ναι, γενικά η *αντικατάσταση* της βάσης δεν φαντάζει καλή λύση. Για την ακρίβεια, δεν φαντάζει καθόλου ως λύση.

    Υποθέτω ότι χρησιμοποιείς Access, (από τα λεγόμενά σου διαφαίνεται κάτι τέτοιο). Θα πρότεινα τα εξής (όχι αναίμακτα, βέβαια), βήματα, ΠΟΛΥ χοντρικά:

    1. Να γυρίσεις σε sql server express.
    2. Στην database σου να υπάρχει κάπου σε κάποιον πίνακα η τρέχουσα έκδοση της database. (Minor, major version πεδία τουλάχιστον)
    3. Οταν κάνεις update την εφαρμογή του πελάτη (το application), να υπάρχει κάποια συσχέτιση μεταξύ έκδοσης της εφαρμογής και έκδοσης της βάσης - θα μπορούσε να είναι και ο ίδιος αριθμός. 
    4. Το πρώτο πράγμα που θα ελέγχει η εφαρμογή σου, όποτε τρέχει, είναι αν η έκδοση της βάσης είναι αυτή που αναμένεται.
    5. Αν ΔΕΝ είναι, θα πρέπει να έχεις ετοιμάσει μια σειρά από upgrade scripts που είτε θα μεταβάλλουν τη δομή των πινάκων, είτε θα προσθέτουν δεδομένα εκεί που χρειάζεται, ΧΩΡΙΣ να επηρεάζουν τα δεδομένα που έχει ήδη καταχωρήσει ο πελάτης.
    6. Αυτό θα πρέπει να το κάνεις για κάθε new version, και μάλιστα η εφαρμογή σου θα πρέπει να είναι "έξυπνη", ωστε π.χ. αν βρίσκεται πέντε versions μπροστά από τη βάση, να ξέρει να τρέξει και τα πέντε σετ από upgrade scripts με τη σειρά, για να φτάσει τη βάση στο επιθυμητό version.

    Επαναλαμβάνω, ΠΟΛΥ χοντρικά τα παραπάνω. Απλά σαν ιδέα. Το όλο κλειδί της υπόθεσης είναι ότι ΔΕΝ θέλεις να πειράξεις τα δεδομένα του πελάτη, θέλεις όμως να δώσεις στη βάση τη νέα λειτουργικότητα. Από έκδοση σε έκδοση, αυτό μπορεί συνεπάγεται ακόμα και migration (π.χ. είχες ένα πίνακα που καταχωρούσε κάτι ο πελάτης και τώρα τον έσπασες σε δύο - θα πρέπει να κάνεις migrate τα υπάρχοντα data στη νέα δομή). Είναι όμως μονόδρομος γενικά.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  08-05-2011, 20:37 65655 σε απάντηση της 65653

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Ευχαριστώ για το χρόνο σου και για την απάντηση σου,
    Σωστά κατάλαβες τα πάντα και Ναι η βάση μου έιναι σε ACCESS (για λογους φορητότητας της εφαρμογής και όχι μόνο) , σίγουρα όλα αυτά που είπες είναι σωστά (και φυσικά αιματηρα),
    Εγώ το σκέφτηκα λίγο διαφορετικά και θέλω την γνώμη σας.
    Να κάνω μία Initial Εγκατάσταση και να περιέχει την κενή βάση μαζί της και μετά η εφαρμογή να ζητά updates απο το Internet οπού εκεί δεν θα έχω την βάση , μετά με scripts θα φιάχνω τις δομές της βάσης κτλ.
    τι λέτε ; μπορεί να γίνει ;, επίσης το VS σου δίνει την δυνατότητα να ενημερώνεται η εφαργμογή ή στην αρχή ή εφόσον φορτώσει η εφαρμογή στην επόμενη φόρτωση της , υπάρχει άλλος τρόπος πχ Χειροκίνητα με κάποια Method ;

    Ευχαστιστώ και πάλι!.
  •  10-05-2011, 14:33 65688 σε απάντηση της 65655

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Δεν είμαι σίγουρος ότι μπορώ να σου απαντήσω για το τι κάνει το VS μια και δεν είναι πολύ συγκεκριμένη η ερώτηση καθώς και λόγω του οτι το γνωστικό μου πεδίο σχετικά με το automatic updating είναι πολύ περιορισμένο.
    Η ιδέα της initial εγκατάστασης με scripts εκ των υστέρων ναι, παίζει, αλλά τι θα κάνεις σε περίπτωση που θέλεις μέσα στο upgrade να πειράξεις και δομές στις οποίες ενδέχεται να έχουν ήδη καταχωρηθεί δεδομένα του πελάτη; (Εκτός αν κάνεις την παραδοχή οτι δεν θα το κάνεις ποτέ αυτό).


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  10-05-2011, 17:18 65720 σε απάντηση της 65655

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Για τις αυτόματες ενημερώσεις και με τον τρόπο που τις περιέγραψες μάλλον αναφέρεσαι στο ClickOnce.

    Ναι μπορείς να κάνεις manual update της εφαρμογής με ClickOnce.

    Όσο για το Update της βάσης. Κατ' αρχήν η λύση που θα προτείνω είναι για SQL 2008 Express R2 και πάνω. Σε μία οποιαδήποτε βάση κάνεις δεξί κλικ και μέσα στην επιλογή Tasks εμφανίζεται η επιλογή Extract Data-tier Application.

    Η ενέργεια αυτή θα δημιουγήσει ένα DacPac αρχείο το οποίο περιέχει την δομή της βάσης αλλά και δεδομένα αν το θες.

    Με αυτό το αρχείο μπορείς να κάνεις τρία πράγματα.

    1. Να δημιουργήσεις μία βάση από την αρχή 

    2. Να κάνεις update μία βάση.

    3. Να φτιάξεις ένα Data-Tier Application Project στο Visual Studio και να το κάνεις Import εκεί.

    Το σενάριο είναι το εξής. Φτιάχνεις την βάση σε εσένα και σχεδιάζεις την εφαρμογή. Στο FTP εκτός από την εφαρμογή ανεβάζεις και το DacPac αρχείο. Κάθε φορά που ο χρήστης κάνει update εκτελείς και το DacPac που έχεις ανεβάσει. Δεν έχει σημασία αν ο χρήστης δεν έχει την βάση, ή δεν είναι στην σωστή της έκδοση, δουλειά του DacPac είναι να την φέρει στην μορφή που την έχεις εσύ στο δικό σου μηχάνημα. Δεν χρειάζεται να φτιάξεις ξεχωριστά queries για κάθε αλλαγή που κάνεις, δεν χρειάζεται να κρατάς αρχείο ενημερώσεων. Τα κάνει το ίδιο το DacPac σε κάθε βάση που τρέχει. Οπότε ακόμα και αν ένας πελάτης σου δεν κάνει Update στην τελευταία έκδοσή σου αλλά θέλει να πάει στην επόμενη δεν έχει καμία σημασία για το DacPac. Από την στιγμή που θα το φτιάξεις από την βάση στο μηχάνημά σου και το δώσεις στον πελάτη θα κάνει κάποιους ελέγχους σχετικά με το πότε έτρεξε τελευταία φορά ένα DacPac στην βάση του πελάτη και ποια έκδοση DacPac ήταν.

    Η όλη διαδικασία προτείνεται από την Microsoft και έχει φτιαχτεί ειδικά για τον σκοπό αυτό. Πληροφορίες μπορείς να βρεις στο Internet σχετικά.

  •  10-05-2011, 17:24 65721 σε απάντηση της 65720

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    George Parissis:

    Η όλη διαδικασία προτείνεται από την Microsoft και έχει φτιαχτεί ειδικά για τον σκοπό αυτό. Πληροφορίες μπορείς να βρεις στο Internet σχετικά.


    Αν και δεν έθεσα εγώ την ερώτηση, έχω να πω ότι αγνοούσα παντελώς την ύπαρξη του DacPac. Wow.
    Τρέχω.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  10-05-2011, 17:27 65722 σε απάντηση της 65721

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    ... και τρέχοντας, σκόνταψα πάνω σε αυτό:

    With DACPAC, DBAs get a single deployment file from the developers that contains all the changes; there's nothing to misunderstand or forget. But in this first incarnation DACPAC has some problems. For starters, to make even minor changes in the database, DACPAC completely re-creates the database and all of its objects, then moves all of the data over to the duplicated structures. In the final step, it drops the original database and gives the new one the proper name. You can easily see that creating an entirely new copy of the database for a small code change won't fit into most situations. Further, DACPAC doesn't copy user permissions or work with service broker or replication objects.

    Χμ. Ισως να το ξανασκεφτούμε; :)


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  10-05-2011, 17:39 65723 σε απάντηση της 65722

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Σας ευχαριστώ θερμά για τις απαντήσεις σας.
    όσο αφορά την μεταφορά της υπάρχουσας δομής (δηλ Aπο την access σε SQL 2008 ) υπαρχεί κάτι καλό ;.

    Προσπάθησα μια φορά με μεταφέρω τα δεδομένα μου σε SQL 2005 και απλά να αλλάξω το Connection string στο Dataset αλλα είχα αποτυχία, οι δομές στα TableAdapters ήταν εντάξει αλλά δεν υπηρχαν πολλά άλλα.

     

  •  10-05-2011, 17:54 65724 σε απάντηση της 65722

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

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

    Όμως αν το σκεφτούμε λιγάκι θα δούμε πως στο 90% των περιπτώσεων το DacPac δεν έχει προβλήματα.

    Πόσοι από εμάς φτιάχνουν ξεχωριστά για κάθε χρήστη της εφαρμογής και ξεχωριστό Login στην βάση; Πόσοι από εμάς χρησιμοποιούν Service Broker και σε πόσες εφαρμογές; Για τι μέγεθος βάσεων μιλάμε; Ο μέσος όρος είναι 50 - 100 MB αν λάβω υπόψιν από τις δικές μου εφαρμογές εδώ και 12 χρόνια που κάνω αυτό το επάγγελμα. Αυτό δεν σημαίνει ότι και εσείς θα είστε σε αυτά τα μεγέθη αλλά προσωπικά μιλάω πάντα. Και στην τελική, πόσες εργατοώρες μου σώνει αυτό το νέο εργαλείο στην κρίσιμη φάση του Update της εφαρμογής μου.

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

     

  •  10-05-2011, 20:13 65725 σε απάντηση της 65652

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Όλα τα παραπάνω... ή, βέβαια, να προμηθευτείς ένα third party tool που θα σου κάνει τη ζωή πιο εύκολη στο schema synchronization, όπως αυτό. Μιας και έχεις ξεκαθαρίσει ότι πρόκειται για Access, μπορείς να πάρεις την εξειδικευμένη έκδοση η οποία, απ' ό,τι βλέπω, στοιχίζει μόνο 69 Euros. Νομίζω ότι δεν είναι πολλά και θα γλυτώσεις από χίλιους δυο μπελάδες στο μέλλον. Καλού - κακού, κάνε download το trial και δοκίμασε μερικά σενάρια για να δεις αν σε καλύπτει.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  13-05-2011, 17:46 65753 σε απάντηση της 65725

    Απ: Σχετικά με το Publish με Βάση Δεδομένων

    Sorry για την καθυστέριση , Θα δοκιμάσω την μετατροπή με την εφαρμογή που μου πρότεινες!
    1000 thanks

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems