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

 

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

Απ:XQuery and Performance

  •  05-02-2007, 00:41

    Απ:XQuery and Performance

    Τα XML πεδία αποθηκεύονται εσωτερικά ως BLOBs προκειμένου να είναι πιο eficient η αποθήκευσή τους όπως για παράδειγμα να συμπιέζονται σε ένα βαθμό. Από την άλλη μεριά όμως τα BLOBs έχουν ως side-effect ακριβώς το πρόβλημά σου, να είναι αργά τα XQueries όταν μεγαλώνει ο όγκος του πεδίου.

    Για να βελτιωθεί η αναζήτηση στα XML πεδία, μπορείς να ορίσεις ένα primary XML index και τρία secondary. Το primary απλά "σπάει" την τιμή από κάθε XML πεδίο σε tags, attributes, paths, κλπ. Τα secondary XML indexes παίζουν πάνω σε πεδία που έχουν ήδη ορισμένο το primary και κάθε ένα από αυτά βοηθάει συγκεκριμένους τύπους από XQueries. Υπάρχει το PATH secondary XML index που βοηθά queries με XPath expressions. To VALUE secondary XML index που βοηθάει για queries που αναζητούν τιμές από nodes μέσα στο XML doc και τέλος το PROPERTY secondary XML index που βοηθά queries που αναζητούν object properties από το XML doc.

    Βέβαια, there is no such thing as free lunch. Η συντήρηση αυτών των indexes κοστίζει και γι αυτό απαιτείται σύνεση. Ειδικότερα τα secondary τα δημιουργούμε μόνο όταν τρέχουμε τα ανάλογα queries για τα οποία προορίζονται, δηλαδή δεν είναι καλή πρακτική να τα δημιουργήσουμε εκ των προτέρων μην τύχει και τρέξουμε κάποιο ad-hoc query.

    Στα Books On Line θα βρεις αρκετό υλικό για τα XML Indexes.


    Vir prudens non contra ventum mingit
    Δημοσίευση στην κατηγορία: ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems