Κατανεμημένο DBMS για την Επιχείρηση

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

Κατανεμημένο DBMS για την Επιχείρηση

Το μόνο που δεν είναι προφανές είναι η σημασία του γράμματος "P". Όταν το σύμπλεγμα διαιρεθεί, αποφασίζει εάν δεν θα απαντήσει μέχρι να επιτευχθεί απαρτία ή θα επιστρέψει τα δεδομένα που είναι διαθέσιμα. Ανάλογα με τα αποτελέσματα αυτής της επιλογής, το σύστημα ταξινομείται είτε ως CP είτε ως AP. Η Cassandra, για παράδειγμα, μπορεί να συμπεριφέρεται με τον έναν ή τον άλλο τρόπο, ανάλογα όχι καν με τις ρυθμίσεις του συμπλέγματος, αλλά από τις παραμέτρους κάθε συγκεκριμένου αιτήματος. Αλλά αν το σύστημα δεν είναι "P" και χωρίζεται, τότε τι;

Η απάντηση σε αυτήν την ερώτηση είναι κάπως απροσδόκητη: ένα σύμπλεγμα CA δεν μπορεί να διαχωριστεί.
Τι είδους σύμπλεγμα είναι αυτό που δεν μπορεί να χωριστεί;

Ένα απαραίτητο χαρακτηριστικό ενός τέτοιου συμπλέγματος είναι ένα κοινό σύστημα αποθήκευσης δεδομένων. Στη συντριπτική πλειονότητα των περιπτώσεων, αυτό σημαίνει σύνδεση μέσω SAN, που περιορίζει τη χρήση λύσεων CA σε μεγάλες επιχειρήσεις που είναι σε θέση να διατηρούν μια υποδομή SAN. Για να λειτουργούν πολλοί διακομιστές με τα ίδια δεδομένα, απαιτείται ένα σύστημα αρχείων συμπλέγματος. Τέτοια συστήματα αρχείων είναι διαθέσιμα στα χαρτοφυλάκια HPE (CFS), Veritas (VxCFS) και IBM (GPFS).

Oracle RAC

Η επιλογή Real Application Cluster εμφανίστηκε για πρώτη φορά το 2001 με την κυκλοφορία του Oracle 9i. Σε ένα τέτοιο σύμπλεγμα, πολλές παρουσίες διακομιστή λειτουργούν με την ίδια βάση δεδομένων.
Η Oracle μπορεί να λειτουργήσει τόσο με ένα σύστημα αρχείων συμπλέγματος όσο και με τη δική της λύση - ASM, Automatic Storage Management.

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

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

Κατανεμημένο DBMS για την Επιχείρηση

Τι συμβαίνει όμως εάν μία από τις περιπτώσεις χρειαστεί να αλλάξει δεδομένα;

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

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

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

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

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

  • "παγώνει" όλες τις σελίδες που βρίσκονταν στην κρυφή μνήμη του κόμβου που λείπει.
  • διαβάζει τα αρχεία καταγραφής (redo) του κόμβου που λείπει και εφαρμόζει εκ νέου τις αλλαγές που καταγράφονται σε αυτά τα αρχεία καταγραφής, ελέγχοντας ταυτόχρονα εάν άλλοι κόμβοι έχουν πιο πρόσφατες εκδόσεις των σελίδων που αλλάζουν.
  • επαναφέρει τις εκκρεμείς συναλλαγές.

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

IBM Pure Data Systems for Transactions

Μια λύση συμπλέγματος για DBMS εμφανίστηκε στο χαρτοφυλάκιο Blue Giant το 2009. Ιδεολογικά, είναι ο διάδοχος του συμπλέγματος Parallel Sysplex, που βασίζεται σε «κανονικό» εξοπλισμό. Το 2009, το DB2 pureScale κυκλοφόρησε ως σουίτα λογισμικού και το 2012, η ​​IBM πρόσφερε μια συσκευή που ονομάζεται Pure Data Systems for Transactions. Δεν πρέπει να συγχέεται με το Pure Data Systems for Analytics, το οποίο δεν είναι τίποτα άλλο από ένα μετονομασμένο Netezza.

Με την πρώτη ματιά, η αρχιτεκτονική pureScale είναι παρόμοια με την Oracle RAC: με τον ίδιο τρόπο, πολλοί κόμβοι συνδέονται σε ένα κοινό σύστημα αποθήκευσης δεδομένων και κάθε κόμβος εκτελεί τη δική του παρουσία DBMS με τις δικές του περιοχές μνήμης και αρχεία καταγραφής συναλλαγών. Όμως, σε αντίθεση με την Oracle, η DB2 διαθέτει μια αποκλειστική υπηρεσία κλειδώματος που αντιπροσωπεύεται από ένα σύνολο διαδικασιών db2LLM*. Σε μια διαμόρφωση συμπλέγματος, αυτή η υπηρεσία τοποθετείται σε έναν ξεχωριστό κόμβο, ο οποίος ονομάζεται εγκατάσταση σύζευξης (CF) στο Parallel Sysplex και PowerHA στα Pure Data.

Το PowerHA παρέχει τις ακόλουθες υπηρεσίες:

  • διαχειριστής κλειδαριάς?
  • καθολική προσωρινή μνήμη προσωρινής αποθήκευσης.
  • τομέα των επικοινωνιών μεταξύ διεργασιών.

Για τη μεταφορά δεδομένων από το PowerHA στους κόμβους της βάσης δεδομένων και πίσω, χρησιμοποιείται απομακρυσμένη πρόσβαση στη μνήμη, επομένως η διασύνδεση συμπλέγματος πρέπει να υποστηρίζει το πρωτόκολλο RDMA. Το PureScale μπορεί να χρησιμοποιήσει τόσο το Infiniband όσο και το RDMA μέσω Ethernet.

Κατανεμημένο DBMS για την Επιχείρηση

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

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

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

Οι σελίδες "Dirty", δηλαδή αλλαγμένες, μπορούν να γραφτούν στο δίσκο τόσο από έναν κανονικό κόμβο όσο και από το PowerHA (castout).

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

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

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

HPE NonStop SQL

Το χαρτοφυλάκιο της Hewlett-Packard Enterprise έχει επίσης τη δική του εξαιρετικά διαθέσιμη πλατφόρμα. Αυτή είναι η πλατφόρμα NonStop, που κυκλοφόρησε στην αγορά το 1976 από την Tandem Computers. Το 1997, η εταιρεία εξαγοράστηκε από την Compaq, η οποία με τη σειρά της συγχωνεύτηκε με τη Hewlett-Packard το 2002.

Το NonStop χρησιμοποιείται για τη δημιουργία κρίσιμων εφαρμογών - για παράδειγμα, επεξεργασία HLR ή τραπεζικών καρτών. Η πλατφόρμα παραδίδεται με τη μορφή ενός συγκροτήματος λογισμικού και υλικού (συσκευή), το οποίο περιλαμβάνει υπολογιστικούς κόμβους, σύστημα αποθήκευσης δεδομένων και εξοπλισμό επικοινωνίας. Το δίκτυο ServerNet (στα σύγχρονα συστήματα - Infiniband) χρησιμεύει τόσο για ανταλλαγή μεταξύ κόμβων όσο και για πρόσβαση στο σύστημα αποθήκευσης δεδομένων.

Οι πρώτες εκδόσεις του συστήματος χρησιμοποιούσαν ιδιόκτητους επεξεργαστές που ήταν συγχρονισμένοι μεταξύ τους: όλες οι λειτουργίες εκτελούνταν συγχρονισμένα από πολλούς επεξεργαστές και μόλις ένας από τους επεξεργαστές έκανε ένα σφάλμα, απενεργοποιήθηκε και ο δεύτερος συνέχισε να λειτουργεί. Αργότερα, το σύστημα άλλαξε σε συμβατικούς επεξεργαστές (πρώτα MIPS, μετά Itanium και τέλος x86) και άλλοι μηχανισμοί άρχισαν να χρησιμοποιούνται για συγχρονισμό:

  • Μηνύματα: κάθε διεργασία συστήματος έχει ένα "σκιερό" δίδυμο, στο οποίο η ενεργή διεργασία στέλνει περιοδικά μηνύματα σχετικά με την κατάστασή της. Εάν η κύρια διαδικασία αποτύχει, η σκιώδης διαδικασία αρχίζει να λειτουργεί από τη στιγμή που καθορίζεται από το τελευταίο μήνυμα.
  • ψηφοφορία: το σύστημα αποθήκευσης έχει ένα ειδικό στοιχείο υλικού που δέχεται πολλαπλές πανομοιότυπες προσβάσεις και τις εκτελεί μόνο εάν οι προσβάσεις ταιριάζουν. Αντί για φυσικό συγχρονισμό, οι επεξεργαστές λειτουργούν ασύγχρονα και τα αποτελέσματα της εργασίας τους συγκρίνονται μόνο σε στιγμές I/O.

Από το 1987, ένα σχεσιακό DBMS εκτελείται στην πλατφόρμα NonStop - πρώτα SQL/MP και αργότερα SQL/MX.

Ολόκληρη η βάση δεδομένων χωρίζεται σε μέρη και κάθε τμήμα είναι υπεύθυνο για τη δική του διαδικασία Data Access Manager (DAM). Παρέχει μηχανισμούς εγγραφής, αποθήκευσης και κλειδώματος δεδομένων. Η επεξεργασία δεδομένων πραγματοποιείται από διεργασίες διακομιστή Executor που εκτελούνται στους ίδιους κόμβους με τους αντίστοιχους διαχειριστές δεδομένων. Ο προγραμματιστής SQL/MX διαιρεί τις εργασίες μεταξύ των εκτελεστών και συγκεντρώνει τα αποτελέσματα. Όταν είναι απαραίτητο να γίνουν συμφωνημένες αλλαγές, χρησιμοποιείται το πρωτόκολλο δέσμευσης δύο φάσεων που παρέχεται από τη βιβλιοθήκη TMF (Transaction Management Facility).

Κατανεμημένο DBMS για την Επιχείρηση

Η NonStop SQL μπορεί να δώσει προτεραιότητα στις διεργασίες, έτσι ώστε τα μεγάλα αναλυτικά ερωτήματα να μην παρεμβαίνουν στην εκτέλεση συναλλαγών. Ωστόσο, σκοπός του είναι ακριβώς η επεξεργασία σύντομων συναλλαγών και όχι τα αναλυτικά. Ο προγραμματιστής εγγυάται τη διαθεσιμότητα του συμπλέγματος NonStop στο επίπεδο των πέντε «εννιά», δηλαδή, ο χρόνος διακοπής λειτουργίας είναι μόνο 5 λεπτά το χρόνο.

SAP HANA

Η πρώτη σταθερή κυκλοφορία του HANA DBMS (1.0) πραγματοποιήθηκε τον Νοέμβριο του 2010 και το πακέτο SAP ERP άλλαξε σε HANA τον Μάιο του 2013. Η πλατφόρμα βασίζεται σε αγορασμένες τεχνολογίες: Μηχανή Αναζήτησης TREX (αναζήτηση σε στήλη αποθήκευσης), P*TIME DBMS και MAX DB.

Η ίδια η λέξη "HANA" είναι ακρωνύμιο, Υψηλής απόδοσης ANAlytical Appliance. Αυτό το DBMS παρέχεται με τη μορφή κώδικα που μπορεί να εκτελεστεί σε οποιονδήποτε διακομιστή x86, ωστόσο, οι βιομηχανικές εγκαταστάσεις επιτρέπονται μόνο σε πιστοποιημένο εξοπλισμό. Λύσεις διαθέσιμες από τις HP, Lenovo, Cisco, Dell, Fujitsu, Hitachi, NEC. Ορισμένες διαμορφώσεις της Lenovo επιτρέπουν ακόμη και τη λειτουργία χωρίς SAN - ο ρόλος ενός κοινού συστήματος αποθήκευσης διαδραματίζεται από ένα σύμπλεγμα GPFS σε τοπικούς δίσκους.

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

Κατανεμημένο DBMS για την Επιχείρηση

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

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

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

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο