Linux Inside
83
υπάρχουν ορισμένες κατηγορίες για τις NoSQL βάσεις: 1) οι
Key-values Stores,2) οι Column Family Stores 3) οι Document
Databases 4) οι Graph Databases.
Η πρώτη κατηγορία, οι key-value stores, δημιουργήθηκαν
με κυρίως ιδέα την ύπαρξη ενός hash table όπου υπάρχει ένα
μοναδικό κλειδί και ένας δείκτης, στοχεύοντας σε ένα συγκε-
κριμένο στοιχείο. Αυτό το είδος mapping συνήθως συνοδεύε-
ται από μηχανισμούς cache για την καλύτερη απόδοση του
συστήματος.
Οι Column family stores βάσεις σχεδιάστηκαν έτσι ώστε να
διαχειρίζονται πολύ μεγάλα ποσά δεδομένων που είναι κατα-
νεμημένα σε διάφορους servers. Όπως και στην προηγούμε-
νη κατηγορία, έτσι και εδώ υπάρχουν συγκεκριμένα κλειδιά
(
keys), που στοχεύουν όμως σε περισσότερα από ένα στοι-
χεία. Οι rows εδώ αναγνωρίζονται από ένα μοναδικό row key,
ενώ οι στήλες είναι οργανωμένες σε column families («οικογέ-
νειες στηλών»).
Η επόμενη κατηγορία, των Document databases, είναι
όμοιες με τις key-value stores. Τα δεδομένα σε αυτή την περί-
πτωση είναι οργανωμένα από «συλλογές» key-valued «συλλο-
γών» δεδομένων.
Η τελευταία κατηγορία, αυτή των Graph databases, είναι
βασισμένη σε κόμβους (nodes), τις σχέσεις μεταξύ αυτών
των κόμβων και τις ιδιότητές τους. Αντί για πίνακες με στήλες
και σειρές, εδώ υπάρχει ένα ευέλικτο γραφικό μοντέλο
(
graph model) που μπορεί να χρησιμοποιηθεί και να αναπτυ-
χθεί παράλληλα σε πολλά μηχανήματα (servers – κόμβους).
Αφού αναφερθήκαμε και στις κατηγορίες των NoSQL συ-
στημάτων, θα κάνουμε και μία αναφορά στις πιο γνωστές και
διαδεδομένες βάσεις δεδομένων NoSQL.
1)
Cassandra:
Η Cassandra είχε δημιουργηθεί από της
Facebook και ανήκει πια στα Apache projects. Είναι μία
column oriented NoSQL database και ανοικτού κώδικα.
2)
Dynamo και SimpleDB:
Αποτελούν δημιουργίες της
Amazon και η πρώτη είναι η πιο γνωστή Key-Value NoSQL βά-
ση δεδομένων, ενώ η δεύτερη είναι μέρος των Amazon Cloud
Services EC2 και S3.
3)
BigTable:
Η BigTable είναι δημιούργημα της Google και
η χρήση της περιορίζεται μόνο μέσω του Google App Engine.
Τεχνικά, είναι μία column oriented database κλειστού κώδικα.
4)
Neo4J:
Αποτελεί μία τύπου graph NoSQL database
ελεύθερου κώδικα.
5)
CouchDB και MongoDB:
Αυτές οι δύο αποτελούν τις
πιο γνωστές open source document oriented NoSQL βάσεις.
Οι περισσότεροι developers αναρωτιούνται πώς μπορούν
να συντάξουν ένα query για μία NoSQL βάση, καθώς το να
υπάρχει αποθηκευμένο σε μία βάση δεν λέει τίποτε από μόνο
του, αν δεν μπορούμε να το εμφανίσουμε στους end users,
π.χ., μέσω μίας web application. Αντίθετα με τις RDBMS βά-
σεις, εδώ δεν υπάρχει συγκεκριμένη, ξεκάθαρη query
language, όπως η SQL, για τη διαχείριση των δεδομένων, αλ-
λά αντίθετα η διαχείριση και η εξέταση αυτών των βάσεων εί-
ναι εξαρτημένη από μοντέλο δεδομένων που χρησιμοποιείται.
Κάποιες NoSQL πλατφόρμες επιτρέπουν τη χρήση RESTful
μοντέλων διεπαφής με τα δεδομένα, ενώ άλλες παρέχουν
query APIs. Υπάρχουν και μερικά (δύο για την ακρίβεια) εργα-
λεία που έχουν αναπτυχθεί με σκοπό τη διαχείριση πολλα-
πλών NoSQL βάσεων δεδομένων, τα οποία προσπαθούν κυ-
ρίως να διαχειριστούν NoSQL βάσεις της ίδιας κατηγορίας.
Το ένα από αυτά (και πιο γνωστό) είναι το SPARQL, που
απευθύνεται σε graph databases. Παρακάτω σε δύο παρα-
δείγματα θα δούμε πώς μπορούμε να ανακτήσουμε το link
ενός συγκεκριμένου blogger μέσα σε μία βάση με αποθηκευ-
μένα στοιχεία για blogs και να κάνουμε μία αναζήτηση όλων
των ονομάτων που αναφέρονται στο FOAF file του Tim
Berners Lee.
FOAF file είναι ο τύπος των αρχείων μέσα στα οποία περι-
γράφονται οι άνθρωποι και οι σχέσεις τους. Αποτελεί ένα
standard RDF λεξιλόγιο , αναγνωρίσιμο δηλαδή τύπο αρχείων
από τις NoSQL βάσεις και το SPARQL.
1
ο παράδειγμα:
PREFIX foaf:
//τυπικός
καθορισμός του prefix type
SELECT ?url //υπόδειξη ώστε να γίνει επιλογή του URL
FROM <bloggers.rdf> //καθορισμός του αρχείου απ’ όπου
θα γίνει η αναζήτηση. Συγκεκριμένα, είναι το αρχείο που
Linux Labs - NoSQL
FOAF file είναι ο τύπος των αρχείων μέσα στα
οποία περιγράφονται οι άνθρωποι και οι σχέσεις
τους. Αποτελεί ένα standard RDF λεξιλόγιο,
αναγνωρίσιμο δηλαδή τύπο αρχείων από τις
NoSQL βάσεις και το SPARQL.
Απλή αναπαράσταση του τρόπου λειτουργίας των NoSQL
συστημάτων.
1
Cassandra NoSQL model.
2