pkanavos wrote: |
Όσο για το αν χρειάζεται ή όχι να χρησιμοποιήσει κανείς τη βάση του MS CRM ... πες πως θέλεις να τραβήξεις δεδομένα από αυτή και να φορτώσεις ένα data warehouse. Η να φορτώσεις μαζικά δεδομένα στο CRM από ένα άλλο σύστημα. Θα προτιμούσες να το κάνεις αυτό μέσω ενός γρήγορου DTS ή ενός Web Service το οποίο θα ήταν πολλές φορές αργότερο? |
|
Προσωπικά, είχα νιώσει το σοκ, όταν βρέθηκα να δουλεύω σε μια εφαρμογή που δεν είχε foreign keys - δεν πίστευα ότι μπορεί να τα καταφέρει. Όπως πολύ σωστά αναφέρεις, αλλά είχε αναφερθεί και η Νατάσα προηγουμένως, το ερώτημα είναι τι γίνεται με τα bulk imports. Στην περίπτωση του MS CRM, έχει από μόνο του bulk import tools. Οπότε δεν χρειάζεται κάποιος να το σκεφτεί δεύτερη φορά. Σε τρίτες εφαρμογές που θέλουν να κάνουν κάτι παρόμοιο, το ζήτημα είναι τι μπορεί να γίνει.
Ξαναλέω το ότι δεν υπάρχουν τα foreign keys στην βάση, δεν πάει να πει τα δεδομένα δεν είναι κανονικοποιημένα, δεν υπάρχουν look-up πίνακες και οι πίνακες των οντοτήτων δεν έχουν σχέσεις μεταξύ τους. Απλά υπεύθυνοι να τηρηθούν αυτά είναι το data layer και όχι η βάση. Σίγουρα οι βάσεις χωρίς foreign keys δεν είναι μια συνηθησμένη περίπτωση. Αλλά δεν είναι και ένα ακατόρθωτο practice. Και DTS μπορείς να χρησιμοποιήσεις, και bulk inserts μπορούν να γίνουν. Αυτό που είναι απαραίτητο, είναι ότι ο προγραμματιστής που υλοποιεί αυτά, δεν μπορεί να είναι κάτω του μέτριος.
Δεν μπορώ να καταλάβω, γιατί αυτή η αμετακίνητη θέση ότι πρέπει σώνει και καλά η βάση να έχει foreign keys που να υλοποιούνται και να τηρούνται από τη βάση δεδομένων. Είναι σαν να υποστηρίζεις ότι ο σωστός τρόπος για να γίνει μια μεγάλη εφαρμογή είναι C++ και ας είναι ο χρόνος που απαιτήται πολλαπλάσιος από ότι θα ήθελε κάποια άλλη γλώσσα προγραμματισμού.
Δεν υπάρχουν ταμπού στο τι πρέπει να γίνει και τι να μην γίνει για να έχουμε μια επιτυχημένη εφαρμογή. Υπάρχουν best practices - και τα best practices στις εφαρμογες CRM, ERP, HRM είναι ότι αυτές χρησιμοποιούν βάσεις που δεν έχουν foreign keys. Έτσι δουλεύει το SAP, Peoplesoft, MS CRM και κανείς δεν ξέρει ακριβώς πόσα ακόμα. Έτσι κατορθώνουν perfomance, αποδεύσμευση της απόδοσης της εφαρμογής από την βάση δεδομένων, έτσι έχουν σχεδιαστεί να δουλεύουν και δουλεύουν.
Τι ωφελεί να εμένει κάποιος ότι πρέπει να έχουμε βάσεις δεδομένων που οι ίδιες υλοποιούν τα foreign keys; Αφού έχουμε παραδείγματα εφαρμογών στην παραγωγή που δεν είχουν foreign keys και όμως αυτές είναι επιτυχημένες, όσο στην λειτουργικοτητά τους όσο και στο intergration με τρίτες εφαρμογές!
George J.