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

Αυτό το μοντέλο έχει πολλά πλεονεκτήματα σε σχέση με τις κεντρικές βάσεις δεδομένων. Οι κατανεμημένες βάσεις δεδομένων μπορούν να χειριστούν περισσότερες ταυτόχρονες εργασίες, με χαμηλότερο κόστος, με υψηλότερη διαθεσιμότητα και ανθεκτικότητα. Λόγω αυτών των πλεονεκτημάτων, οι περισσότερες σύγχρονες επιχειρήσεις βασίζονται είτε εν μέρει είτε πλήρως σε κατανεμημένες βάσεις δεδομένων για τις λειτουργικές και αναλυτικές τους ανάγκες.
Αλλά οι κατανεμημένες βάσεις δεδομένων φέρνουν νέες προκλήσεις. Η πρώτη πρόκληση έχει να κάνει με την πολυπλοκότητα και η δεύτερη με την απόδοση.
Ανεξάρτητα από το πόσο ισχυρό είναι το σύστημά σας, θα σταματήσει να λειτουργεί εάν δεν σχεδιάσετε τη βάση δεδομένων σας για να αντιμετωπίσετε αυτούς τους περιορισμούς απόδοσης και πολυπλοκότητας. Δεν θα ξεκλειδώσετε την πραγματική αξία των δεδομένων σας – ιδιαίτερα καθώς αρχίζουν να κλιμακώνονται.
Ζητήματα πολυπλοκότητας
Η διανομή δεδομένων σε διαφορετικούς υπολογιστές εισάγει πολυπλοκότητα, καθώς οι πελάτες έχουν πρόσβαση και αναζητούν δεδομένα από πολλές τοποθεσίες αντί από μια ενιαία κεντρική τοποθεσία.
Η πρώτη γενιά κατανεμημένων βάσεων δεδομένων όπως η Hadoop αντιμετώπισε αυτήν την πρόκληση με το παράδειγμα MapReduce. Με το MapReduce, τα ερωτήματα αντιστοιχίζονται σε διαφορετικούς κόμβους σε ένα σύστημα όπου εφαρμόζονται στο τμήμα των δεδομένων τους. Τα αποτελέσματα από κάθε κόμβο στη συνέχεια μειώνονται για να φτάσουν στην τελική έξοδο.

Ωστόσο, το MapReduce δεν είναι τόσο διαισθητικό ή εύκολο στη χρήση όσο η δηλωτική σύνταξη που βασίζεται σε SQL που προϋπήρχε. Αυτό καθιστά πιο δύσκολη την εργασία, ιδιαίτερα για μη προγραμματιστές. Ως αποτέλεσμα, οι αναλυτές δεδομένων χωρίς υπόβαθρο μηχανικής λογισμικού συχνά αποτυγχάνουν να αξιοποιήσουν στο έπακρο τα κατανεμημένα συστήματα μεγάλων δεδομένων.
Ζητήματα επιδόσεων
Μια συμφόρηση απόδοσης που μαστίζει όλους τους τύπους βάσεων δεδομένων – διανεμημένων ή μη – είναι η μετακίνηση δεδομένων προς και από έναν σκληρό δίσκο. Η ανάγνωση ή η εγγραφή δεδομένων με χρήση σκληρού δίσκου είναι πολύ πιο αργή από τη μνήμη συστήματος (RAM) και η τυχαία αναπαραγωγή δεδομένων μεταξύ αυτών των δύο στοιχείων θα επηρεάσει αρνητικά την απόδοση.
Η μετακίνηση δεδομένων μεταξύ κόμβων είναι μια μορφή μεταφοράς δεδομένων μοναδική για κατανεμημένα συστήματα. Ερωτήματα που πρέπει να συγκεντρώσουν δεδομένα από διαφορετικούς κόμβους στο σύστημα πρέπει να μετακινήσουν αυτά τα δεδομένα στο δίκτυο. Αυτό προκαλεί τη μεγαλύτερη συμφόρηση απόδοσης μακράν σε ένα κατανεμημένο σύστημα και είναι περίπου 20 φορές πιο αργή από τη μεταφορά δεδομένων από έναν σκληρό δίσκο.

Τώρα, ας δούμε πώς τα σχεδιαστικά χαρακτηριστικά της Kinetica αντιμετωπίζουν αυτές τις προκλήσεις.
Ξεκλειδώστε την πραγματική αξία των δεδομένων σας με κατανεμημένη SQL
Το Kinetica είναι α Βάση δεδομένων SQL. Την τελευταία δεκαετία, δημιουργήσαμε μια ολοκληρωμένη βιβλιοθήκη βασισμένη σε SQL με λειτουργίες γεωχωρικών, γραφικών, χρονικών σειρών και OLAP που μπορούν να προσφέρουν εκπληκτική απόδοση σε κλίμακα. Το Kinetica διαθέτει επίσης out-of-the-box υποδοχές για φόρτωση και εξαγωγή δεδομένων από διαφορετικά εργαλεία και διαθέτει δυνατότητες AI και μηχανικής εκμάθησης.
-- Create a graph of a road network
CREATE OR REPLACE DIRECTED GRAPH mm_lakes
(
EDGES => INPUT_TABLE(
SELECT
shape AS WKTLINE,
direction AS DIRECTION,
time AS WEIGHT_VALUESPECIFIED
FROM mm_lakes_shape
),
OPTIONS => KV_PAIRS(
graph_table="mm_lakes_graph_table"
)
);
Επιπλέον, μπορείτε να αποκτήσετε πρόσβαση σε αυτήν την ισχυρή λειτουργικότητα χρησιμοποιώντας την SQL – επιτρέποντάς σας να δημιουργήσετε και να αναπτύξετε πολύπλοκες αναλυτικές αγωγούς που συνδέονται με πηγές δεδομένων ροής και ιστορικού, να εκτελείτε προηγμένα ερωτήματα και να λαμβάνετε αποτελέσματα σε πραγματικό χρόνο.

Μια κλιμακωτή αρχιτεκτονική που προστατεύει τη μνήμη
Ένα βασικό σημείο πόνου για όλες τις βάσεις δεδομένων, διανεμημένες ή μη, είναι η μετακίνηση δεδομένων προς και από έναν σκληρό δίσκο στη μνήμη RAM.
Θα ήταν υπέροχο αν μπορούσαμε να αποθηκεύσουμε όλα τα δεδομένα μας στη μνήμη, ώστε να μην χρειάζεται ποτέ να διαβάζουμε ή να γράφουμε σε έναν σκληρό δίσκο. Όμως, δυστυχώς, η RAM είναι πολύ πιο ακριβή από τον δίσκο και η αποθήκευση όλων των λειτουργικών σας δεδομένων στη μνήμη του συστήματος συνήθως δεν αποτελεί επιλογή.
Πώς λοιπόν μπορείτε να αξιοποιήσετε στο έπακρο έναν περιορισμένο πόρο; Η απάντηση είναι απλή – χρησιμοποιείτε μια βάση δεδομένων που μπορεί να δώσει προτεραιότητα στη χρήση της.
της Kinetica κλιμακωτή αποθήκευση και διαχείριση πόρων Τα χαρακτηριστικά δίνουν προτεραιότητα στη χρήση των επιπέδων VRAM και RAM για πιο συχνά χρησιμοποιούμενα, «καυτά» και «ζεστά» δεδομένα.

Οι χρήστες μπορούν να καθορίσουν στρατηγικές βαθμίδων που ορίζουν προτεραιότητες εξώθησης για διαφορετικά αντικείμενα δεδομένων. Κάθε φορά που ο χώρος σε μια βαθμίδα ξεπερνά ορισμένα κατώφλια (υψηλό σημάδι νερού), το Kinetica θα ξεκινήσει μια διαδικασία απομάκρυνσης, ξεκινώντας με αντικείμενα δεδομένων χαμηλότερης προτεραιότητας, έως ότου η χρήση του χώρου φτάσει σε ένα αποδεκτό επίπεδο (χαμηλό σημάδι νερού).
Μετακινώντας τα λιγότερο χρησιμοποιούμενα δεδομένα σε χαμηλότερα επίπεδα που βασίζονται σε δίσκους, το Kinetica μεγιστοποιεί τον χώρο για δεδομένα πιο συχνά χρησιμοποιούμενα στα υψηλότερα επίπεδα RAM και VRAM. Αυτό καθιστά λιγότερο πιθανό να χρειαστεί να εισαγάγετε δεδομένα από τον σκληρό δίσκο στη μνήμη RAM, αποφεύγοντας έτσι αυτή την επιβάρυνση της απόδοσης.
Διανομή δεδομένων με έξυπνο τρόπο
Το μεγαλύτερο σημείο συμφόρησης σε ένα κατανεμημένο σύστημα προκαλείται από τη μετακίνηση δεδομένων μεταξύ κόμβων. Υπάρχουν δύο τρόποι με τους οποίους η Kinetica αντιμετωπίζει αυτούς τους περιορισμούς – διαμοιρασμός και αναπαραγωγή.
Sharding
Sharding είναι ένα σχήμα για τη διανομή δεδομένων σε διαφορετικούς κόμβους. Αυτό μπορεί να γίνει είτε τυχαία είτε με βάση τις τιμές μιας συγκεκριμένης στήλης.
Ο τρόπος με τον οποίο θα επιλέξετε να μοιραστείτε (διανείμετε) τα δεδομένα σας (και τις επακόλουθες επιπτώσεις στην απόδοση) θα εξαρτηθεί από τους τύπους ερωτημάτων που θέλετε να εκτελέσετε. Ένα καλά μελετημένο σχήμα διαμοιρασμού μπορεί να μειώσει την ανάγκη μετακίνησης δεδομένων από έναν κόμβο στον άλλο, διατηρώντας δεδομένα που είναι πιθανό να χρησιμοποιηθούν μαζί στον ίδιο κόμβο.
Για παράδειγμα, ας υποθέσουμε ότι έχουμε δύο πίνακες – έναν για τις πωλήσεις και έναν άλλο για το απόθεμα για κάθε προϊόν σε κάθε κατάστημα για μια εταιρεία λιανικής. Η εταιρεία διαθέτει συνολικά 4 καταστήματα (Α, Β, Γ και Δ) και 100 προϊόντα (με αριθμό 1 έως 100).
Τα περισσότερα από τα ερωτήματα που θέλει να εκτελέσει η εταιρεία αφορούν πληροφορίες για κάθε προϊόν σε ένα κατάστημα. Για παράδειγμα, ένα τυπικό ερώτημα μπορεί να αναζητήσει τη σχέση μεταξύ του μέσου όρου των πωλήσεων και του επιπέδου αποθέματος για ένα συγκεκριμένο προϊόν σε ένα συγκεκριμένο κατάστημα.
Σε ένα τέτοιο σενάριο, η κοινή χρήση των πινάκων πωλήσεων και αποθέματος με βάση τα αναγνωριστικά καταστήματος και προϊόντων θα διασφαλίσει ότι τα δεδομένα για κάθε συνδυασμό προϊόντος και καταστήματος βρίσκονται στον ίδιο κόμβο. Ως αποτέλεσμα, κάθε ερώτημα που χρειάζεται να συνδυάσει πληροφορίες πωλήσεων και αποθέματος για έναν συγκεκριμένο συνδυασμό καταστήματος και προϊόντος θα έχει όλες τις σειρές που χρειάζεται στον ίδιο κόμβο, δηλαδή όλα τα δεδομένα που απαιτούνται για να απαντηθεί εάν οι πωλήσεις για το προϊόν αριθ. 10 στο κατάστημα Α επηρεάζει το επίπεδο αποθέματος για το προϊόν αριθ. 10 στο κατάστημα Α, θα βρίσκεται στον ίδιο κόμβο.
Οι κατανεμημένες βάσεις δεδομένων από τη φύση τους απαιτούν από εμάς να χωρίσουμε τα δεδομένα σε διαφορετικούς κόμβους. Αλλά ο διαμοιρασμός μας επιτρέπει κάποιο βαθμό ελέγχου αυτής της κατανομής, ώστε να μπορούμε να ελαχιστοποιήσουμε την ανάγκη να ανακατεύουμε μεγάλες ποσότητες δεδομένων μεταξύ κόμβων σε ένα σύστημα για να ολοκληρώσουμε ένα ερώτημα.
Αντιγραφή
Μερικές φορές είναι λογικό να αναπαράγουμε τον μικρότερο πίνακα σε όλους τους κόμβους αντί να διανέμουμε τις σειρές μεταξύ τους. Η αναπαραγωγή είναι η αντιγραφή του ίδιου πίνακα σε πολλούς κόμβους σε ένα σύστημα. Συνήθως γίνεται για μικρότερα τραπέζια για να αποφευχθεί η ανάγκη χρήσης μεγάλου αποθηκευτικού χώρου. Ας υποθέσουμε ότι έχουμε έναν πίνακα με πληροφορίες για καθένα από τα 4 καταστήματα A, B, C και D – πράγματα όπως ο μέσος αριθμός υπαλλήλων, η τοποθεσία και τα ετήσια έσοδα κ.λπ. Η αναπαραγωγή αυτού του πίνακα θα παρέχει πρόσβαση σε αυτόν σε όλους τους κόμβους. Επομένως, τυχόν ερωτήματα που απαιτούν δεδομένα από αυτόν τον πίνακα δεν θα χρειαστεί να μετακινήσουν αυτά τα δεδομένα από άλλους κόμβους στο σύμπλεγμα.
Δοκιμάστε τώρα δωρεάν
Μόλις https://www.kinetica.com/try/ γρατσουνίσαμε την επιφάνεια σχετικά με τα σχεδιαστικά χαρακτηριστικά που καθιστούν δυνατή την αξιοποίηση στο έπακρο από τη διανυσματική υπολογιστική μηχανή της Kinetica. Αλλά αυτό θα πρέπει να χρησιμεύσει ως μια πανοραμική άποψη ορισμένων από τα βασικά χαρακτηριστικά σχεδιασμού που χρειάζεται κάθε κατανεμημένη βάση δεδομένων για να έχει σωστά για να προσφέρει εξαιρετική απόδοση.
Μπορείτε να διαβάσετε περισσότερα για αυτές τις δυνατότητες και πώς να τις χρησιμοποιήσετε στο Kinetica’s τεκμηρίωση δικτυακός τόπος. Επίσης, μην ξεχάσετε να δοκιμάσετε τη δωρεάν έκδοση προγραμματιστή μας. Χρειάζονται μόνο λίγα λεπτά για να ρυθμίσετε και να ξεκινήσετε.