Αααχ, Object Databases! Πριν από χρόνια, τις θεωρούσαμε το μέλλον. Ο θόρυβος που γινόταν γι αυτές ήταν ο ίδιος που γίνεται σήμερα για βάσεις XML. Θα μπορούσαμε να έχουμε nested ή long transactions, πλούσιους τύπους, inheritance! Δυστυχώς, τα πράγματα δεν εξελίχθηκαν ακριβώς όπως τα περιμέναμε ...
Είναι αλήθεια ότι οι object databases απλοποιούν πολύ την ανάπτυξη μεμονωμένων εφαρμογών καθώς μπορείς πολύ εύκολα να πεις "αυτό το αντικείμενο, ή αυτός ο γράφος θέλω να αποθηκευτεί". Το πρόβλημα είναι ότι τους λείπουν βασικές δυνατότητες που τελικά είναι απαραίτητες όταν πολλές εφαρμογές μιλάνε στην ίδια βάση, όπως π.χ. η δυνατότητα να ορίσεις views. Επιπλέον, οι object databases επιβάλλουν να βλέπεις τα δεδομένα με ένα συγκεκριμμένο τρόπο, ενώ οι relational databases δεν έχουν τέτοιο περιορισμό. Π.χ. μπορείς να διαβάσεις δεδομένα παραγγελιών ξεκινώντας από την εγγραφή της παραγγελίας ή την εγγραφή του πελάτη, ανάλογα με το query που θέλεις να κάνεις.
Αν π.χ. θέλεις να δεις το σύνολο των CD που έχει παραγγείλει ένας πελάτης ενός δισκοπωλείου δεν έχεις πρόβλημα. Το ίδιο και αν θέλεις να δεις όλους τους πελάτες που παραγγείλανε ένα συγκεκριμμένο CD. Με μια object database είσαι υποχρεωμένος να ακολουθήσεις το μοντέλο. Ανάλογα με το ποιά κλάση είναι στην κορυφή του μοντέλου, το ένα query θα είναι αστραπιαίο και το δεύτερο θα απαιτεί να διαβάσεις όλα τα σχετικά αντικείμενα.
Αυτό τον καιρό οι object databases έχουν περιοριστεί σε πολύ συγκεκριμμένες εφαρμογές, κυρίως embedded συστήματα. Από την άλλη, οι relational databases αποκτήσανε object datatypes, συνδιάζοντας μερικά από τα πιο χρήσιμα χαρακτηριστικά των object databases με τις δυνατότητες των relational databases. Δυστυχώς, ο SQL Server φαίνεται να αργεί λίγο σε αυτό το παιχνίδι. Ο SQL Server 2005 θα υποστηρίζει αντικείμενα αλλά χωρίς inheritance και το μέγεθος του τύπου δεν μπορεί να ξεπεράσει τα 8KB.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos