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

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

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

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

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

Η χρήση της βάσης δεδομένων γραφημάτων έχει αυξηθεί σίγουρα κατά την τελευταία δεκαετία, καθώς οι εταιρείες θεωρούσαν άλλες τεχνολογίες NoSQL και μεγάλων δεδομένων. Η παγκόσμια αγορά βάσης δεδομένων γραφημάτων εκτιμήθηκε σε 651 εκατομμύρια δολάρια το 2018 και προβλέπεται να αυξηθεί σε 3,73 δισεκατομμύρια δολάρια έως το 2026. Αλλά πολλές άλλες μεγάλες τεχνολογίες διαχείρισης δεδομένων, όπως οι Hadoop, Spark και άλλες, έχουν δει πολύ πιο σημαντική αύξηση της δημοτικότητας, της υιοθέτησης δεξιοτήτων, και περιπτώσεις χρήσης παραγωγής σε σύγκριση με βάσεις δεδομένων γραφημάτων. Συγκριτικά, το μεγάλο μέγεθος της αγοράς τεχνολογίας δεδομένων εκτιμήθηκε στα 36,8 δισεκατομμύρια δολάρια το 2018 και προβλέπεται να αυξηθεί στα 104,3 δισεκατομμύρια δολάρια έως το 2026.

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

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

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

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

Μίλησα με τον Jim Webber, επικεφαλής επιστήμονα στο Neo4j, μια από τις καθιερωμένες διαθέσιμες βάσεις δεδομένων γραφημάτων, σχετικά με τον τρόπο κατασκευής ενός ερωτήματος φίλων φίλων. Οι προγραμματιστές μπορούν να υποβάλουν ερωτήματα στις βάσεις δεδομένων γραφημάτων Neo4j χρησιμοποιώντας RDF (Resource Description Framework) και Gremlin, αλλά η Webber μου είπε ότι πάνω από το 90 τοις εκατό των πελατών χρησιμοποιούν το Cypher. Δείτε πώς φαίνεται το ερώτημα στο Cypher για εξαγωγή φίλων και φίλων φίλων:

MATCH (εγώ: Πρόσωπο {όνομα: 'Rosa'}) - [: ΦΙΛΟΣ * 1..2] -> (στ: Πρόσωπο)

ΠΟΥ με

ΕΠΙΣΤΡΟΦΗ στ

Δείτε πώς μπορείτε να κατανοήσετε αυτό το ερώτημα:

  • Βρείτε μου το μοτίβο όπου υπάρχει ένας κόμβος με την ετικέτα Πρόσωπο και ένα όνομα ιδιοκτησίας: «Rosa» και συνδέστε το με τη μεταβλητή «εγώ». Το ερώτημα καθορίζει ότι το "εγώ" έχει μια εξερχόμενη σχέση ΦΙΛΟΥΣ σε βάθος 1 ή 2 με οποιονδήποτε άλλο κόμβο με την ετικέτα "Πρόσωπο" και συνδέει αυτούς τους αγώνες με τη μεταβλητή "f".
  • Βεβαιωθείτε ότι το "εγώ" δεν είναι ίσο με το "f", επειδή είμαι φίλος των φίλων μου!
  • Επιστρέψτε όλους τους φίλους και τους φίλους των φίλων

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

Σχεδιασμός ευέλικτων ιεραρχιών με βάσεις δεδομένων γραφημάτων

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

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

Μίλησα με τον Mark Klusza, συνιδρυτή της Construxiv, μιας εταιρείας που πωλεί τεχνολογίες στον κατασκευαστικό κλάδο, συμπεριλαμβανομένης της Grit, μιας πλατφόρμας προγραμματισμού κατασκευών. Αν δείτε το πρόγραμμα ενός εμπορικού κατασκευαστικού έργου, θα δείτε αναφορές σε πολλαπλές συναλλαγές, εξοπλισμό, ανταλλακτικά και αναφορές μοντέλων. Ένα ενιαίο πακέτο εργασίας μπορεί εύκολα να έχει εκατοντάδες εργασίες με εξαρτήσεις στο σχέδιο έργου. Αυτά τα σχέδια πρέπει να ενσωματώνουν δεδομένα από ERPs, Building Information Modeling και άλλα σχέδια έργων και να παρουσιάζουν προβολές σε προγραμματιστές, διαχειριστές έργων και υπεργολάβους. Ο Klusza εξήγησε: «Χρησιμοποιώντας μια βάση δεδομένων γραφημάτων στο Grit, δημιουργούμε πολύ πιο πλούσιες σχέσεις με το ποιος κάνει τι, πότε, πού, με ποιον εξοπλισμό και με ποια υλικά. Αυτό μας δίνει τη δυνατότητα να εξατομικεύσουμε τις προβολές και να προβλέψουμε καλύτερα τις συγκρούσεις προγραμματισμού εργασίας. "

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

Οι επιλογές ανάπτυξης cloud μειώνουν τις λειτουργικές πολυπλοκότητες

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

Οι οργανισμοί που πειραματίζονται με βάσεις δεδομένων γραφημάτων έχουν πλέον πολλές επιλογές cloud. Οι μηχανικοί μπορούν να αναπτύξουν το Neo4j στο GCP, το AWS, το Azure ή να αξιοποιήσουν το Aura του Neo4j, μια βάση δεδομένων ως υπηρεσία. Το TigerGraph διαθέτει μια προσφορά cloud και κιτ εκκίνησης για περιπτώσεις χρήσης όπως πελάτης 360, ανίχνευση απάτης, μηχανές προτάσεων, ανάλυση κοινωνικού δικτύου και ανάλυση αλυσίδας εφοδιασμού. Επίσης, οι δημόσιοι προμηθευτές cloud διαθέτουν δυνατότητες βάσης δεδομένων γραφημάτων, όπως το AWS Neptune, το Gremlin API στο Azure’s CosmoDB, το ανοιχτό λογισμικό JanusGraph στο GCP ή οι λειτουργίες γραφήματος στις Υπηρεσίες βάσης δεδομένων Cloud της Oracle.

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