Προγραμματισμός

Τι είναι η βάση δεδομένων γραφημάτων; Ένας καλύτερος τρόπος αποθήκευσης συνδεδεμένων δεδομένων

Κλειδί-τιμή, προσανατολισμένη σε έγγραφα, οικογένεια στηλών, γράφημα, σχεσιακά ... Σήμερα φαίνεται να έχουμε τόσα είδη βάσεων δεδομένων όσο υπάρχουν είδη δεδομένων. Ενώ αυτό μπορεί να κάνει την επιλογή μιας βάσης δεδομένων πιο δύσκολη, κάνει την επιλογή τηςσωστά ευκολότερη βάση δεδομένων. Φυσικά, αυτό απαιτεί να κάνετε την εργασία σας. Πρέπει να γνωρίζετε τις βάσεις δεδομένων σας.

Ένας από τους λιγότερο κατανοητούς τύπους βάσεων δεδομένων είναι η βάση δεδομένων γραφημάτων. Σχεδιασμένο για εργασία με πολύ διασυνδεδεμένα δεδομένα, μια βάση δεδομένων γραφημάτων μπορεί να περιγραφεί ως πιο «σχεσιακή» από μια σχεσιακή βάση δεδομένων. Οι βάσεις δεδομένων γραφημάτων λάμπουν όταν ο στόχος είναι η σύλληψη σύνθετων σχέσεων σε τεράστιους ιστούς πληροφοριών.

Ακολουθεί μια πιο προσεκτική ματιά σε ποιες βάσεις δεδομένων γραφημάτων, γιατί είναι αντίθετες με άλλες βάσεις δεδομένων και τι είδους προβλήματα δεδομένων έχουν κατασκευαστεί για να επιλύσουν.

Βάση δεδομένων γραφήματος έναντι σχεσιακής βάσης δεδομένων

Σε μια παραδοσιακή σχεσιακή ή SQL βάση δεδομένων, τα δεδομένα οργανώνονται σε πίνακες. Κάθε πίνακας καταγράφει δεδομένα σε μια συγκεκριμένη μορφή με έναν σταθερό αριθμό στηλών, κάθε στήλη με τον δικό της τύπο δεδομένων (ακέραιος, ώρα / ημερομηνία, κείμενο ελεύθερης μορφής κ.λπ.).

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

Σκεφτείτε μια μουσική βάση δεδομένων, με άλμπουμ, μπάντες, ετικέτες και ερμηνευτές. Εάν θέλετε να αναφέρετε όλους τους ερμηνευτές στους οποίους εμφανίστηκε Αυτό άλμπουμ από ότι μπάντα κυκλοφόρησε στις αυτά τα ετικέτες - τέσσερις διαφορετικοί πίνακες - πρέπει να περιγράψετε ρητά αυτές τις σχέσεις. Με μια σχεσιακή βάση δεδομένων, το επιτυγχάνετε μέσω νέων στηλών δεδομένων (για σχέσεις one-to-one ή one-to-many) ή νέων πινάκων (για σχέσεις μεταξύ πολλών).

Αυτό είναι πρακτικό εφ 'όσον διαχειρίζεστε έναν μικρό αριθμό σχέσεων. Εάν αντιμετωπίζετε εκατομμύρια ή ακόμη και δισεκατομμύρια σχέσεων — για παράδειγμα φίλοι φίλων φίλων — αυτά τα ερωτήματα δεν κλιμακώνονται καλά.

Εν ολίγοις, εάν τοσχέσεις μεταξύ δεδομένων, όχι τα ίδια τα δεδομένα, είναι το κύριο μέλημά σας, τότε είναι διαφορετικό ένα διαφορετικό είδος βάσης δεδομένων - μια βάση δεδομένων γραφημάτων.

Χαρακτηριστικά βάσης δεδομένων γραφημάτων

Ο όρος «γράφημα» προέρχεται από τη χρήση της λέξης στα μαθηματικά. Εκεί χρησιμοποιείται για να περιγράψει μια συλλογή κόμβων (ή κορυφές), το καθένα περιέχει πληροφορίες (ιδιότητες), και με επισημασμένες σχέσεις (ή άκρες) μεταξύ των κόμβων.

Ένα κοινωνικό δίκτυο είναι ένα καλό παράδειγμα γραφήματος. Τα άτομα στο δίκτυο θα είναι οι κόμβοι, τα χαρακτηριστικά κάθε ατόμου (όπως όνομα, ηλικία κ.ο.κ.) θα είναι ιδιότητες και οι γραμμές που συνδέουν τα άτομα (με ετικέτες όπως "φίλος" ή "μητέρα" ή " επόπτη ») θα έδειχνε τη σχέση τους.

Σε μια συμβατική βάση δεδομένων, η επεξεργασία των ερωτημάτων σχετικά με τις σχέσεις μπορεί να διαρκέσει πολύ. Αυτό συμβαίνει επειδή οι σχέσεις υλοποιούνται με ξένα κλειδιά και υποβάλλονται σε ερώτηση ενώνοντας πίνακες. Όπως μπορεί να σας πει οποιοδήποτε SQL DBA, η εκτέλεση συμμετοχών είναι δαπανηρή, ειδικά όταν πρέπει να ταξινομήσετε μεγάλο αριθμό αντικειμένων - ή, χειρότερα, όταν πρέπει να ενώσετε πολλούς πίνακες για να εκτελέσετε τα είδη των έμμεσων ερωτημάτων (π.χ. "φίλος ενός φίλου") ότι οι βάσεις δεδομένων γραφημάτων υπερέχουν στο.

Οι βάσεις δεδομένων γραφημάτων λειτουργούν αποθηκεύοντας τοσχέσεις μαζί με τα δεδομένα. Επειδή οι σχετικοί κόμβοι συνδέονται φυσικά στη βάση δεδομένων, η πρόσβαση σε αυτές τις σχέσεις είναι τόσο άμεση όσο η πρόσβαση στα ίδια τα δεδομένα. Με άλλα λόγια, αντί να υπολογίζουν τη σχέση όπως πρέπει να κάνουν οι σχεσιακές βάσεις δεδομένων, οι βάσεις δεδομένων γραφημάτων διαβάζουν απλώς τη σχέση από την αποθήκευση. Η ικανοποίηση των ερωτημάτων είναι μια απλή υπόθεση για περπάτημα ή «διασχίζοντας» το γράφημα.

Μια βάση δεδομένων γραφημάτων όχι μόνο αποθηκεύει τις σχέσεις μεταξύ αντικειμένων με εγγενή τρόπο, κάνοντας ερωτήματα σχετικά με τις σχέσεις γρήγορα και εύκολα, αλλά σας επιτρέπει να συμπεριλάβετε διαφορετικά είδη αντικειμένων και διαφορετικά είδη σχέσεων στο γράφημα. Όπως και άλλες βάσεις δεδομένων NoSQL, μια βάση δεδομένων γραφήματος δεν έχει σχήμα. Έτσι, από την άποψη της απόδοσης και της ευελιξίας, οι βάσεις δεδομένων γραφημάτων πλησιάζουν περισσότερο σε βάσεις δεδομένων εγγράφων ή καταστήματα βασικής αξίας από ό, τι σε σχετικές ή επιτραπέζιες βάσεις δεδομένων.

Περίπτωση χρήσης βάσης δεδομένων γραφήματος

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

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

Μια άλλη εφαρμογή για βάσεις δεδομένων γραφημάτων είναι η εύρεση μοτίβων σύνδεσης σε δεδομένα γραφήματος που θα ήταν δύσκολο να πειραχτούν μέσω άλλων αναπαραστάσεων δεδομένων. Τα συστήματα ανίχνευσης απάτης χρησιμοποιούν βάσεις δεδομένων γραφημάτων για να αποκαλύψουν σχέσεις μεταξύ οντοτήτων που διαφορετικά θα ήταν δύσκολο να παρατηρηθούν.

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

Ερωτήματα βάσης δεδομένων γραφήματος

Βάσεις δεδομένων γραφημάτων - όπως και άλλες βάσεις δεδομένων NoSQL - συνήθως χρησιμοποιούν τη δική τους προσαρμοσμένη μεθοδολογία ερωτήματος αντί για SQL.

Μία κοινώς χρησιμοποιούμενη γλώσσα ερωτήματος γραφήματος είναι το Cypher, που αναπτύχθηκε αρχικά για τη βάση δεδομένων γραφημάτων Neo4j. Από τα τέλη του 2015 η Cypher έχει αναπτυχθεί ως ξεχωριστό έργο ανοιχτού κώδικα και ορισμένοι άλλοι προμηθευτές το έχουν υιοθετήσει ως σύστημα ερωτημάτων για τα προϊόντα τους (π.χ. SAP HANA).

Ακολουθεί ένα παράδειγμα ερωτήματος Cypher που επιστρέφει ένα αποτέλεσμα αναζήτησης για όλους όσους είναι φίλοι του Scott:

ΑΓΩΝΑ (α: Πρόσωπο {όνομα: ’Scott’}) - [: FRIENDOF] -> (β) ΕΠΙΣΤΡΟΦΗ β 

Το σύμβολο βέλους (->) χρησιμοποιείται σε ερωτήματα Cypher για να αντιπροσωπεύει μια κατευθυνόμενη σχέση στο γράφημα.

Μια άλλη κοινή γλώσσα ερωτήματος γραφήματος, το Gremlin, επινοήθηκε για το πλαίσιο υπολογιστών γραφικών Apache TinkerPop. Η σύνταξη Gremlin είναι παρόμοια με αυτήν που χρησιμοποιείται από βιβλιοθήκες πρόσβασης βάσης δεδομένων ORM ορισμένων γλωσσών.

Ακολουθεί ένα παράδειγμα ερωτήματος "φίλοι του Scott" στο Gremlin:

g.V (). έχει ("name", "Scott"). out ("friendof") 

Πολλές βάσεις δεδομένων γραφημάτων υποστηρίζουν το Gremlin μέσω βιβλιοθήκης, είτε ενσωματωμένου είτε τρίτου μέρους.

Μια άλλη γλώσσα ερωτήματος είναι η SPARQL. Αρχικά αναπτύχθηκε από το W3C για την αναζήτηση δεδομένων που είναι αποθηκευμένα στη μορφή Resource Description Framework (RDF) για μεταδεδομένα. Με άλλα λόγια, η SPARQL δεν ήταν επινοήθηκε για αναζητήσεις βάσης δεδομένων γραφημάτων, αλλά μπορούν να χρησιμοποιηθούν για αυτές. Συνολικά, οι Cypher και Gremlin έχουν υιοθετηθεί ευρύτερα.

Τα ερωτήματα SPARQL έχουν κάποια στοιχεία που θυμίζουν SQL, δηλαδήΕΠΙΛΕΓΩ και ΟΠΟΥ ρήτρες, αλλά το υπόλοιπο της σύνταξης είναι ριζικά ανόμοιο. Μην πιστεύετε ότι η SPARQL σχετίζεται καθόλου με τη SQL, ή για το θέμα αυτό με άλλες γλώσσες ερωτημάτων γραφημάτων.

Δημοφιλείς βάσεις δεδομένων γραφημάτων

Επειδή οι βάσεις δεδομένων γραφημάτων εξυπηρετούν μια σχετικά εξειδικευμένη περίπτωση χρήσης, δεν υπάρχουν σχεδόν τόσες από αυτές όσο και σχετικές βάσεις δεδομένων. Στη θετική πλευρά, αυτό καθιστά τα προϊόντα που ξεχωρίζουν ευκολότερα στην αναγνώριση και τη συζήτηση.

Neo4j

Το Neo4j είναι εύκολα το πιο ώριμο (11 ετών και μετράει) και πιο γνωστό από τις βάσεις δεδομένων γραφημάτων για γενική χρήση. Σε αντίθεση με προηγούμενα προϊόντα βάσης δεδομένων γραφημάτων, δεν χρησιμοποιεί SQL back-end. Το Neo4j είναι μια εγγενής βάση δεδομένων γραφημάτων που σχεδιάστηκε από μέσα προς τα έξω για να υποστηρίξει μεγάλες δομές γραφημάτων, όπως σε ερωτήματα που επιστρέφουν εκατοντάδες χιλιάδες σχέσεων και άλλα.

Το Neo4j διατίθεται σε δωρεάν εκδόσεις ανοιχτού κώδικα και επί πληρωμή για επιχειρήσεις, με τις τελευταίες να μην έχουν περιορισμούς στο μέγεθος ενός συνόλου δεδομένων (μεταξύ άλλων χαρακτηριστικών). Μπορείτε επίσης να πειραματιστείτε με το Neo4j online μέσω του Sandbox, το οποίο περιλαμβάνει ορισμένα δείγματα συνόλων δεδομένων για να εξασκηθείτε.

Δείτε την κριτική για το Neo4j για περισσότερες λεπτομέρειες.

Microsoft Azure Cosmos DB

Η βάση δεδομένων cloud Azure Cosmos DB είναι ένα φιλόδοξο έργο. Προορίζεται να μιμηθεί πολλαπλά είδη βάσεων δεδομένων - συμβατικούς πίνακες, προσανατολισμένους σε έγγραφα, οικογένεια στηλών και γραφήματα - όλα μέσω μιας ενιαίας, ενοποιημένης υπηρεσίας με ένα σταθερό σύνολο API.

Για το σκοπό αυτό, μια βάση δεδομένων γραφημάτων είναι μόνο ένας από τους διάφορους τρόπους λειτουργίας του Cosmos DB. Χρησιμοποιεί τη γλώσσα ερωτήματος Gremlin και το API για ερωτήματα τύπου γραφήματος και υποστηρίζει την κονσόλα Gremlin που δημιουργήθηκε για το Apache TinkerPop ως άλλη διεπαφή.

Ένα άλλο μεγάλο σημείο πώλησης του Cosmos DB είναι ότι η ευρετηρίαση, η κλιμάκωση και η γεωγραφική αναπαραγωγή αντιμετωπίζονται αυτόματα στο σύννεφο Azure, χωρίς κανένα κουμπί στο τέλος. Δεν είναι ακόμη σαφές πώς η αρχιτεκτονική all-in-one της Microsoft μετρά έως τις εγγενείς βάσεις δεδομένων γραφημάτων από την άποψη της απόδοσης, αλλά το Cosmos DB σίγουρα προσφέρει έναν χρήσιμο συνδυασμό ευελιξίας και κλίμακας.

Δείτε την κριτική για το Azure Cosmos DB για περισσότερες λεπτομέρειες.

JanusGraph

Ο JanusGraph διαμορφώθηκε από το έργο TitanDB και τώρα είναι υπό τη διακυβέρνηση του Linux Foundation. Χρησιμοποιεί οποιοδήποτε από τα υποστηριζόμενα back-end - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - για την αποθήκευση δεδομένων γραφημάτων, υποστηρίζει τη γλώσσα ερωτήματος Gremlin (καθώς και άλλα στοιχεία από τη στοίβα Apache TinkerPop) και μπορεί επίσης ενσωμάτωση αναζήτησης πλήρους κειμένου μέσω των έργων Apache Solr, Apache Lucene ή Elasticsearch.

Η IBM, ένας από τους υποστηρικτές του έργου JanusGraph, προσφέρει μια φιλοξενούμενη έκδοση του JanusGraph στο IBM Cloud, που ονομάζεται Compose for JanusGraph. Όπως το Azure Cosmos DB, το Compose for JanusGraph παρέχει αυτόματη κλιμάκωση και υψηλή διαθεσιμότητα, με τιμολόγηση βάσει της χρήσης πόρων.