Μια επισκόπηση του NoSQL

click fraud protection

Το ακρωνύμιο NoSQL επινοήθηκε το 1998. Πολλοί άνθρωποι πιστεύουν ότι το NoSQL είναι ένας υποτιμητικός όρος που δημιουργήθηκε για να πειράξει την SQL. Στην πραγματικότητα, ο όρος σημαίνει Όχι μόνο SQL. Η ιδέα είναι ότι και οι δύο τεχνολογίες μπορούν να συνυπάρχουν και η καθεμία έχει τη θέση της. Το κίνημα NoSQL ήταν στην επικαιρότητα τα τελευταία χρόνια, καθώς πολλοί από τους ηγέτες του Web 2.0 έχουν υιοθετήσει μια τεχνολογία NoSQL. Εταιρείες όπως το Facebook, το Twitter, το Digg, το Amazon, το LinkedIn και η Google χρησιμοποιούν όλες το NoSQL με τον ένα ή τον άλλο τρόπο. Ας αναλύσουμε το NoSQL για να μπορείτε να το εξηγήσετε στον CIO σας ή ακόμα και στους συναδέλφους σας.

Βάση δεδομένων MYSQL.

Το NoSQL προέκυψε από μια ανάγκη

Αποθήκευση δεδομένων: Τα αποθηκευμένα ψηφιακά δεδομένα στον κόσμο μετρώνται σε exabyte. Ένα exabyte ισούται με ένα δισεκατομμύριο gigabyte (GB) δεδομένων. Σύμφωνα με Internet.com, ο όγκος των αποθηκευμένων δεδομένων που προστέθηκαν το 2006 ήταν 161 exabyte. Μόλις 4 χρόνια αργότερα το 2010, ο όγκος των δεδομένων που θα αποθηκευτούν θα είναι σχεδόν 1.000 ExaByte που είναι μια αύξηση άνω του 500%. Με άλλα λόγια, υπάρχουν πολλά δεδομένα που αποθηκεύονται στον κόσμο και απλώς θα συνεχίσει να αυξάνεται.

Διασυνδεδεμένα δεδομένα: Τα δεδομένα συνεχίζουν να συνδέονται περισσότερο. Η δημιουργία του Ιστού ενισχύεται σε υπερσυνδέσμους, τα ιστολόγια έχουν pingbacks και κάθε σημαντικό σύστημα κοινωνικών δικτύων έχει ετικέτες που συνδέουν τα πράγματα μεταξύ τους. Τα κύρια συστήματα είναι κατασκευασμένα για να διασυνδέονται.

Σύνθετη δομή δεδομένων: Η NoSQL μπορεί να χειριστεί εύκολα ιεραρχικές ένθετες δομές δεδομένων. Για να επιτύχετε το ίδιο πράγμα στην SQL, θα χρειαστείτε πολλούς σχεσιακούς πίνακες με όλα τα είδη κλειδιών. Επιπλέον, υπάρχει μια σχέση μεταξύ της απόδοσης και της πολυπλοκότητας των δεδομένων. Η απόδοση μπορεί να υποβαθμιστεί σε ένα παραδοσιακό RDBMS καθώς αποθηκεύουμε τις τεράστιες ποσότητες δεδομένων που απαιτούνται σε εφαρμογές κοινωνικής δικτύωσης και σημασιολογικό Ιστό.

Τι είναι το NoSQL;

Υποθέτω ότι ένας τρόπος για να ορίσετε το NoSQL είναι να εξετάσετε τι δεν είναι. Δεν είναι SQL και δεν είναι σχεσιακό. Όπως υποδηλώνει το όνομα, δεν αντικαθιστά ένα RDBMS, αλλά το συμπληρώνει. Το NoSQL έχει σχεδιαστεί για κατανεμημένους χώρους αποθήκευσης δεδομένων για ανάγκες δεδομένων πολύ μεγάλης κλίμακας. Σκεφτείτε το Facebook με τους 500.000.000 χρήστες του ή το Twitter που συγκεντρώνει Terabit δεδομένων κάθε μέρα.

Σε μια βάση δεδομένων NoSQL, δεν υπάρχει σταθερό σχήμα και δεν υπάρχει σύνδεση. Ένα RDBMS «ανεβαίνει» αποκτώντας όλο και πιο γρήγορο υλικό και προσθέτοντας μνήμη. Η NoSQL, από την άλλη πλευρά, μπορεί να εκμεταλλευτεί το "scaling out". Η κλιμάκωση αναφέρεται στην κατανομή του φορτίου σε πολλά συστήματα εμπορευμάτων. Αυτό είναι το στοιχείο του NoSQL που το καθιστά μια φθηνή λύση για μεγάλα σύνολα δεδομένων.

Κατηγορίες NoSQL

Ο σημερινός κόσμος NoSQL χωρίζεται σε 4 βασικές κατηγορίες.

  1. Καταστήματα κλειδιών-τιμών βασίζονται κυρίως σε Χαρτί Dynamo της Amazon που γράφτηκε το 2007. Η κύρια ιδέα είναι η ύπαρξη ενός πίνακα κατακερματισμού όπου υπάρχει ένα μοναδικό κλειδί και ένας δείκτης σε ένα συγκεκριμένο στοιχείο δεδομένων. Αυτές οι αντιστοιχίσεις συνήθως συνοδεύονται από μηχανισμούς κρυφής μνήμης για τη μεγιστοποίηση της απόδοσης.
    1. Στήλη Οικογενειακά Καταστήματα δημιουργήθηκαν για την αποθήκευση και την επεξεργασία πολύ μεγάλων ποσοτήτων δεδομένων που διανέμονται σε πολλά μηχανήματα. Υπάρχουν ακόμα κλειδιά, αλλά δείχνουν σε πολλές στήλες. Στην περίπτωση του BigTable (μοντέλο NoSQL της οικογένειας στηλών της Google), οι σειρές προσδιορίζονται από ένα κλειδί σειράς με τα δεδομένα ταξινομημένα και αποθηκευμένα με αυτό το κλειδί. Οι στήλες είναι διατεταγμένες κατά οικογένεια στηλών.
  2. Βάσεις δεδομένων εγγράφων εμπνεύστηκαν από Νότες Lotus και είναι παρόμοια με τα καταστήματα βασικής αξίας. Το μοντέλο είναι βασικά έγγραφα έκδοσης που είναι συλλογές άλλων συλλογών κλειδιών-τιμών. Τα ημι-δομημένα έγγραφα αποθηκεύονται σε μορφές όπως JSON.
  3. Βάση δεδομένων γραφήματοςΤα s είναι χτισμένα με κόμβους, σχέσεις μεταξύ των σημειώσεων και τις ιδιότητες των κόμβων. Αντί για πίνακες σειρών και στηλών και την άκαμπτη δομή της SQL, χρησιμοποιείται ένα ευέλικτο μοντέλο γραφήματος που μπορεί να κλιμακωθεί σε πολλά μηχανήματα.

Κύρια προγράμματα αναπαραγωγής NoSQL

Οι σημαντικότεροι παίκτες στο NoSQL έχουν αναδυθεί κυρίως λόγω των οργανισμών που τους έχουν υιοθετήσει. Μερικές από τις μεγαλύτερες τεχνολογίες NoSQL περιλαμβάνουν:

  • Δυναμό: Το Dynamo δημιουργήθηκε από το Amazon.com και είναι η πιο σημαντική βάση δεδομένων Key-Value NoSQL. Η Amazon χρειαζόταν μια εξαιρετικά επεκτάσιμη κατανεμημένη πλατφόρμα για τις επιχειρήσεις ηλεκτρονικού εμπορίου της, έτσι ανέπτυξαν το Dynamo. Το Amazon S3 χρησιμοποιεί το Dynamo ως μηχανισμό αποθήκευσης.
  • Κασσάνδρα:Κασσάνδρα ήταν ανοιχτού κώδικα από το Facebook και είναι μια βάση δεδομένων NoSQL προσανατολισμένη στη στήλη.
  • BigTable: Το BigTable είναι η αποκλειστική βάση δεδομένων της Google με προσανατολισμό στη στήλη. Η Google επιτρέπει τη χρήση του BigTable αλλά μόνο για το Google App Engine.
  • SimpleDB: Το SimpleDB είναι μια άλλη βάση δεδομένων της Amazon. Χρησιμοποιείται για το Amazon EC2 και το S3, είναι μέρος των Υπηρεσιών Ιστού της Amazon που χρεώνει τέλη ανάλογα με τη χρήση.
  • CouchDB:CouchDB μαζί με το MongoDB είναι βάσεις δεδομένων NoSQL προσανατολισμένες σε έγγραφα ανοιχτού κώδικα.
  • Neo4J:Neo4j είναι μια βάση δεδομένων γραφημάτων ανοιχτού κώδικα.

Ερώτημα NoSQL

Το ερώτημα για το πώς να ρωτήσετε μια βάση δεδομένων NoSQL είναι αυτό που ενδιαφέρει τους περισσότερους προγραμματιστές. Εξάλλου, τα δεδομένα που είναι αποθηκευμένα σε μια τεράστια βάση δεδομένων δεν ωφελούν κανέναν εάν δεν μπορείτε να τα ανακτήσετε και να τα δείξετε στους τελικούς χρήστες ή στις υπηρεσίες Ιστού. Οι βάσεις δεδομένων NoSQL δεν παρέχουν μια υψηλού επιπέδου δηλωτική γλώσσα ερωτημάτων όπως η SQL. Αντίθετα, η υποβολή ερωτημάτων σε αυτές τις βάσεις δεδομένων είναι συγκεκριμένη για το μοντέλο δεδομένων.

Πολλές από τις πλατφόρμες NoSQL επιτρέπουν διεπαφές RESTful στα δεδομένα. Άλλα API ερωτημάτων προσφοράς. Υπάρχουν μερικά εργαλεία ερωτημάτων που έχουν αναπτυχθεί που προσπαθούν να υποβάλουν ερωτήματα σε πολλές βάσεις δεδομένων NoSQL. Αυτά τα εργαλεία λειτουργούν συνήθως σε μια κατηγορία NoSQL. Ένα παράδειγμα είναι το SPARQL. Το SPARQL είναι μια δηλωτική προδιαγραφή ερωτήματος που έχει σχεδιαστεί για βάσεις δεδομένων γραφημάτων. Ακολουθεί ένα παράδειγμα ερωτήματος SPARQL που ανακτά τη διεύθυνση URL ενός συγκεκριμένου blogger (με την ευγενική παραχώρηση του IBM):

ΠΡΟΘΕΜΑ foaf: 
SELECT ?url
ΑΠΟ
ΟΠΟΥ {
?συντελεστής foaf: όνομα "Jon Foobar" .
?συντελεστής foaf: weblog ?url .
}

Το μέλλον του NoSQL

Οι οργανισμοί που έχουν τεράστιες ανάγκες αποθήκευσης δεδομένων εξετάζουν σοβαρά το NoSQL. Προφανώς, η ιδέα δεν έχει τόσο μεγάλη έλξη σε μικρότερους οργανισμούς. Σε μια έρευνα που διεξήχθη από το Information Week, το 44% των επαγγελματιών πληροφορικής των επιχειρήσεων δεν έχουν ακούσει για το NoSQL. Επιπλέον, μόνο το 1% των ερωτηθέντων ανέφερε ότι το NoSQL αποτελεί μέρος της στρατηγικής τους κατεύθυνσης. Σαφώς, το NoSQL έχει τη θέση του στον συνδεδεμένο κόσμο μας, αλλά θα πρέπει να συνεχίσει να εξελίσσεται για να αποκτήσει τη μαζική απήχηση που πολλοί πιστεύουν ότι θα μπορούσε να έχει.