Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Παράλληλα Συστήματα Διαχείρισης Βάσεων Δεδομένων ‘The Future of High Performance Database Systems’ & ‘The Gamma Database Machine Project’
Παράλληλo DBMS DBMS που εκτελείται επάνω σε παράλληλη αρχιτεκτονική Στενότερα συνδεδεμένο σύστημα απ’ ό,τι ένα κατανεμημένο DBMS Συγκεντρωμένη διαχείριση Δεν υπάρχει ανάγκη για αυτονομία των κόμβων Το ιδανικό παράλληλο DBMS Άπειρη υπολογιστική ισχύς, άπο άπειρους επεξεργαστές πεπερασμένης ισχύος Άπειρη μνήμη, συνδυάζοντας άπειρες μνήμες πεπερασμένους μεγέθους Το ζητούμενο: Scalability, δυνατότητα κλιμάκωσης
Εμπόδια στην παραλληλία Startup Χρόνος για έναρξη παράλληλης λειτουργίας Δημιουργία διεργασιών / latency δικτύου Περιορίζει την παραλληλία Interference Ανταγωνισμός για μοιραζόμενους πόρους 1% οδηγεί σε μέγιστο speedup 37, σύστημα 1000 επεξεργαστών: απόδοση 4% Skew Ανισοκατανομή φορτίου (data / execution skew) Η πιο αργή διεργασία καθορίζει τον χρόνο εκτέλεσης
Μέτρα επίδοσης παράλληλου DBMS Speedup Με σταθερό το μέγεθος του προβλήματος, αυξάνουμε το μέγεθος του συστήματος Scaleup Πολλαπλασιάζουμε με τον ίδιο παράγοντα τα μεγέθη του προβλήματος και του συστήματος
Ταξινόμηση παράλληλων αρχιτεκτονικών Ανάλογα με το βαθμό συνδέσης Στενά / χαλαρά συνδεδεμένο σύστημα Τι μοιράζεται κάθε φορά; Μοιραζόμενη μνήμη (Shared-memory) Μοιραζόμενοι δίσκοι (Shared-disk) Τίποτε (Shared-nothing) Κριτήριο η δυνατότητα κλιμάκωσης Ως προς αριθμό επεξεργαστών Ως προς αριθμό μονάδων Ε/Ε Τάση προς shared-nothing αρχιτεκτονικές
Αρχιτεκτονικές Shared-memory Συστήματα Συμμετρικής Πολυεπεξεργασίας (SMPs) Είναι scalable; ΟΧΙ, ο διάδρομος του συστήματος είναι bottleneck Cache coherence;
Αρχιτεκτονικές Shared-disk Αποδοτική σχεδίαση για read-only DBs Για μοιραζόμενη, read-write πρόσβαση; Πρωτόκολλα συγχρονισμού, ανταλλαγή μηνυμάτων ΙΒΜ Sysplex, Digital VAXcluster
Αρχιτεκτονικές Shared-nothing Κλιμάκωση σε 1000άδες επεξεργαστών Σύγχρονα δίκτυα διασύνδεσης; Επικοινωνία με message-passing Αποστολή ερωτημάτων / λήψη αποτελεσμάτων Παραδείγματα: Teradata, NonStopSQL(Tandem- Compaq), Bubba, Oracle nCUBE, Gamma
Τελεστές και dataflow graphs SELECT telephone_number// έξοδος FROM telephone_book// είσοδος WHERE last_name=‘Smith’// συνθήκη ORDER BY telephone_number
Παραλληλία στο σχεσιακό μοντέλο (1) Εγγενής παραλληλία Σχεσιακοί τελεστές, εφαρμογή σε ροές δεδομένων γράφοι ροής δεδομένων (dataflow graphs) Δύο τρόποι για επίτευξη παραλληλίας Pipeline parallelism Data partitioning paralellism
Παραλληλία στο σχεσιακό μοντέλο (2) Οι σχεσιακοί τελεστές είναι ομοιόμορφοι Είσοδος και έξοδος είναι σχέσεις Σύνθεση τελεστών: Γράφοι ροής δεδομένων Χρήση πολλών διαφορετικών τελεστών Scan (Select-Project), Sort, aggregate operators Insert / Update / Delete Union / Intersection / Difference / Join Δεν καθορίζεται ο τρόπος εκτέλεσης Δυνατότητα εξαγωγής παραλληλισμού
Παραλληλία στο σχεσιακό μοντέλο (3) Pipeline Parallelism Παράλληλη εκτέλεση διαδοχικών τελεστών Περιορισμένη χρησιμότητα Μέγεθος pipeline εξαρτώμενο από είδος ερώτημας Ορισμένοι τελεστές δεν έχουν ενδιάμεση έξοδο (aggregate, sort) Ανισοκατανομή στο κόστος εκτέλεσης κάθε τελεστή (skew) Data partitioning parallelism Διαίρει και βασίλευε Ευνοεί speedup, scaleup Χρειάζεται καλή κατανομή των δεδομένων
Data Partitioning Schemes (1) Range partitioning Αποδοτικό όταν χρησιμοποιούνται range queries Χρήσιμο για clustering των δεδομένων Πιθανό πρόβλημα data / execution skew, ανισοκατανομής φορτίου
Data Partitioning Schemes (2) Round-Robin partitioning Πολύ καλό για σειριακή σάρωση των εγγραφών Όχι όμως και για associative queries Κατανομή του φορτίου I/O, αύξηση του συνολικού I/O bandwidth
Data Partitioning Schemes (3) Hash Partitioning Αντιστοίχιση με χρήση συνάρτησης κατακερματισμού Αποδοτικό για associative queries Διευκολύνει την εκτέλεση joins
Παραλληλία με data partitioning (1) Οι τελεστές υλοποιούνται ως διεργασίες Σειριακή εκτέλεση, δεν χρειάζεται αλλαγή του κώδικα Θύρες εισόδου / θύρες εξόδου για πέρασμα μηνυμάτων Τελεστές merge / split για παραλληλοποίηση Έλεγχος ροής / διαχείριση buffers
Παραλληλία με data partitioning (2) INSERT INTO C SELECT* FROM A, B WHEREA.x = B.y;
Παραλληλία με data partitioning (3)
Παράλληλοι αλγόριθμοι για τελεστές Αλγόριθμοι για Join(Α,Β) Sort-merge: Πρώτα ταξινόμησε Α και Β, έπειτα σύγκρινε τις ταξινομημένες σχέσεις Πολυπλοκότητα O(nlogn) Πρόβλημα execution skew όταν έχουμε ανισοκατανομή των δεδομένων εισόδου Hash-join: Join με χρήση hash tables Hash-based partitioning των Α και Β. Tuples των A, B με ίδια τιμή στο join attribute είναι σε αντίστοιχα partitions. Hashing του κάθε partition της Α στη μνήμη (building phase) Scan του αντίστοιχου partition της Β, αναζήτηση στο hash table (probing phase) Πολυπλοκότητα O(n)
Η Ιστορία του Gamma Μηχανή Βάσεων Δεδομένων DIRECT ( ) Εφαρμογή παραλληλισμού στην επεξεργασία λειτουργιών ΒΔ Βασισμένη σε shared-memory αρχιτεκτονική Συγκεντρωμένος έλεγχος για την εκτέλεση παράλληλων αλγορίθμων Αδυναμία επέκτασης σε 100άδες επεξεργαστών Σύστημα Διαχείρισης ΒΔ Gamma ( ) Εμπειρία από τo DIRECT Διαφορετικές σχεδιαστικές επιλογές
Σχεδιασμός του Gamma Αρχιτεκτονική Shared-nothing Κλιμακούμενο σε 1000αδες επεξεργαστών Επικοινωνία μέσω δικτύου διασύνδεσης Ανταλλαγή ερωτημάτων/απαντήσεων με πέρασμα μηνυμάτων Χρήση hash-based παράλληλων αλγορίθμων Αποφυγή ανάγκης συγκεντρωμένου ελέγχου Καταμερισμός των δεδομένων σε μονάδες I/O Οριζόντια διαμέριση Παράλληλη επεξεργασία τμημάτων μιας σχέσης Καλύτερη εκμετάλλευση του I/O bandwidth
Gamma, έκδοση 1.0 (1) Την περίοδο 17 επεξεργαστές VAX 11/750, 2ΜΒ μνήμη Token ring στα 80Mbps ως δίκτυο διασύνδεσης μέγιστο μέγεθος πακέτου 2KBytes Χωριστό VAX που τρέχει Unix ως host 8x333MB δίσκοι, σε 8 από τους επεξεργαστές Οι diskless κόμβοι χρησιμοποιούνται για την εκτέλεση aggregates και joins
Gamma, έκδοση 1.0 (2) Προβλήματα επίδοσης Σελίδες 2Kbytes για προσαρμογή στο Token ring Για αποφυγή αντιγράφων Μεγάλο κόστος επικοινωνίας Κάρτα δικτύου επάνω στο Unibus (4Mbps) Οι σκληροί δίσκοι γρηγορότεροι από το Unibus Μόνο 2 πακέτα στο network interface Ανάγκη για νέο interface, απευθείας στο backplane Μόνο 2ΜΒ μνήμης Χωρίς εικονική μνήμη από το Λ.Σ. Χωριστή διαχείριση hash tables, stack space, buffer pool Παρωχημένη αρχιτεκτονική του VAX
Gamma, έκδοση 2.0 (1) Εγκαταστάθηκε το 1988 Βασισμένο σε υπερκύβο Intel iPCS/2, 32 x i386 Σε κάθε κόμβο: Intel i386 CPU 8 MB RAM 330MB Maxtor (SCSI, 45KB cache) Δίκτυο διασύνδεσης με τοπολογία υπερκύβου Δρομολόγηση μηνυμάτων με εξειδικευμένα VLSI 8 αμφίδρομα, αξιόπιστα κυκλώματα (2.8MB/s)
Gamma, έκδοση 2.0 (2) Λειτουργικό σύστημα Intel NX/2 προσανατολισμένο σε heavyweight διεργασίες Μεταφορά του NOSE από το VAX πολλά lightweight νήματα, με μοιραζόμενη μνήμη Όλο το NOSE ως μία διεργασία κάτω από το NX/2 Ανακάλυψη νέων bugs ο i386 πιάνει null pointer dereferences Πρόβλημα με το υποσύστημα I/O DMA όχι στη μνήμη, αλλά σε FIFO των 4KBytes Υπερβολικά συχνές διακοπές στη CPU ~10% CPU για χειρισμό διακοπών, 13 διακοπές/8KB
Αποθήκευση δεδομένων στο Gamma Οι τρεις βασικές τεχνικές κατανομές δεδομένων Round-robin, range partitioned, hashed Επιλογή του χρήστη, μέσω της γλώσσα ερωτήσεων Πληροφορίες καταμερισμού στον κατάλογο μαζί με το εύρος των περιοχών, για range partitioning Διαφάνεια κατά την εκτέλεση ερωτημάτων Ο τρόπος καταμερισμού ενσωματώνεται στο πλάνο εκτέλεσης Χρήση της πληροφορίας από τον scheduler Για hash-based και range partitioning συμμετέχουν μόνο όσοι επεξεργαστές χρειάζεται
Δομή του λογισμικού στο Gamma (1) Catalog Manager Πληροφορίες για το σχήμα της βάσης Πολλοί χρήστες/βάση, πολλά αντίγραφα του σχήματος Query Manager Ένας Query manager/χρήστη Caching του σχήματος της βάσης τοπικά Ad-hoc ερωτήματα με gdl (έκδοση της Quel) Συντακτική ανάλυση, βελτιστοποίηση, μεταγλώττιση Scheduler Processes Ένας χρονοδρομολογητής/δέντρο εκτέλεσης Κεντρική διεργασία dispatcher, διαθέτει schedulers Πολύ μικρές απαιτήσεις σε πόρους υλικού/scheduler
Δομή του λογισμικού στο Gamma (2) Operator Processes Τουλάχιστον μία διεργασία/τελεστή στο δέντρο εκτέλεσης O scheduler καθοδηγεί την εκτέλεση του ερωτήματος Ένας αριθμός διεργασιών είναι πάντοτε διαθέσιμος Αποφυγή κόστους εκκίνησης διεργασιών Δυνατή η δυναμική δημιουργία νέων, κατά την εκτέλεση Ειδική θύρα επικοινωνίας ‘new task port’ Ο scheduler ζητά μια νέα διεργασία – τελεστή Αν υπάρχει ήδη, του ανατίθεται Αν όχι, δημιουργείται
Δομή του λογισμικού στο Gamma (3)
Εκτέλεση ερωτημάτων (1) Υποστήριξη ad-hoc και embedded queries Συντακτική ανάλυση, βελτιστοποίηση απλούστερη, μόνο hash-based joins left-deep δέντρα εκτέλεσης Προώθηση μεταγλωττισμένου ερωτήματος από τον QM στον scheduler Μέσω κεντρικής διεργασίας dispatcher Ενεργοποίηση τελεστών από τον scheduler Μηνύματα συγχρονισμού ανάμεσα σε τελεστές – scheduler από τελεστή σε τελεστή
Εκτέλεση ερωτημάτων (2) To split table γνωρίζει τα ports των γειτονικών τελεστών στο δέντρο εκτέλεσης Η εργασία ολοκληρώνεται με την εξάντληση του ρεύματος εισόδου Κλείνουν τα ρεύματα εξόδου Αποστέλλεται μήνυμα ελέγχου στον Scheduler
Εκτέλεση ερωτημάτων (3)
Εκτέλεση ερωτημάτων (4)
Concurrency Control 2PL Κλείδωμα σε επίπεδο αρχείου και σελίδας Πέντε είδη κλειδώματος: S, X, IS, IX, SIX Σε κάθε επεξεργαστή Τοπικός διαχειριστής κλειδιών Τοπικός έλεγχος για deadlock Χρήση γράφων wait-for Συγκεντρωτικός έλεγχος για deadlock Περιοδική αποστολή τοπικών γράφων wait-for Κατασκευή ολικού wait-for γράφου και έλεγχος
Logging and Recovery Χρήση σειριακών αριθμών στο log (LSN) M log managers διαθέσιμοι Ο επεξεργαστής i στέλνει log records στον i mod M Write Ahead Logging (WAL) Συντονισμός για commit/abort από τον scheduler Αποστολή μηνυμάτων commit στους log managers Αποστολή μηνυμάτων abort στους επεξεργαστές Ζητούν από τους log managers τα logs για undo Undo, checkpointing με αλγορίθμους ARIES
Διαχείριση Βλαβών (1) Relation-cluster: Σύνολα κόμβων, μεγέθους M Πρωτεύον αντίγραφο: R Το τμήμα R i αποθηκεύεται στον δίσκο i mod M Δευτερεύον αντίγραφο: r Το τμήμα r i αποθηκεύεται στον δίσκο (i+1) mod M
Διαχείριση Βλαβών (2) Ο κόμβος 1 δεν είναι διαθέσιμος Κατανομή του φορτίου σε όσους απομένουν Αύξηση του φορτίου κατά 1/(M-1) στους υπόλοιπους
Μετρήσεις Επίδοσης Μετρήσεις για select Mε 30 επεξεργαστές, για 3 μεγέθη σχέσεων (10 5, 6, 7 ) Μετρήσεις speedup, σχεδόν γραμμικό Μετρήσεις scaleup, ικανοποιητικά αποτελέσματα Σχεδόν σταθερός χρόνος απόκρισης Σχεδόν γραμμικό speedup για select / join Μετρήσεις για join Όμοια πειράματα, όπως στην περίπτωση του select Hash-based partitioning, με κλειδί ίδιο με το join Πειράματα και για partitioning σε διαφορετικό κλειδί Μετρήσεις σε aggregate queries, updates Χωρίς να είναι λειτουργικό το recovery
Αναφορές DeWitt and Gray, "Parallel Database Systems: The Future of High Performance Database Systems. CACM 35(6): (1992) DeWitt, et al. "The Gamma Database Machine Project." TKDE 2(1): (1990)