Professional Documents
Culture Documents
Lecture 2,3,6-11
Lecture 2,3,6-11
ER MODEL
Γνωρίσματα (attributes): περιγράφουν τις οντότητες. Πρόκειται για
χαρακτηριστικά που θέλουμε να καταγράφουμε στο στιγμιότυπο μίας
οντότητας. Έχουν πεδίο ορισμού (domain)
Συσχετίσεις (relations)
• Είδος
o 1:1
o 1:Ν
o Ν:1 (Κάθε στιγμιότυπο της οντότητας Ε2 μπορεί να συσχετίζεται με καμία ή περισσότερες (0 έως N) παρουσίες της
Ε1, αλλά κάθε παρουσία της Ε1 μπορεί να συσχετίζεται με μια μόνο παρουσία της Ε2)
o Ν:Μ
o Ν:Μ:Κ (πολλαπλές)
o αναδρομικές.
• Περιορισμοί στις Συσχετίσεις – cardinality min…max όπου min ≥ 0 και max > 0. Περιορισμοί της μορφής Ν...Ν (όπου
min=max) γράφονται απλώς Ν και το * σημαίνει 0...*. Πως διαβάζουμε μία συσχέτιση: Από αριστερά προς τα δεξιά «ένας
πελάτης μπορεί να κάνει από 1 έως Ν παραγγελίες». Από δεξιά προς τα αριστερά «μία παραγγελία μπορεί να γίνει από
έναν μόνο πελάτη».
• Πότε μία συσχέτιση μπορεί να έχει γνώρισμα; Σε συσχέτιση
1:Ν. Σε συσχέτιση 1:Ν το γνώρισμα πηγαίνει στην οντότητα
πολλά. Μπορούν να εμφανιστούν και σε συσχετίσεις Ν:Μ.
• Is-A Και Has-A relationships. Is-A όταν μια οντότητα είναι
υποτύπος μιας άλλης οντότητας. O τύπος οντότητας R είναι υποτύπος του τύπου οντότητας R΄: [1] Κάθε στιγμιότυπο της
οντότητας R είναι επίσης στιγμιότυπο της R΄ [2] Κάθε γνώρισμα της R΄ είναι επίσης γνώρισμα της R [3] Η οντότητα R μπορεί
να έχει και άλλα γνωρίσματα.
o Περιορισμός κάλυψης (covering constraint): η ένωση των οντοτήτων που ανήκουν στους τύπους Singer και Group
είναι ίση με το σύνολο των οντοτήτων του (υπερτύπου) Performer.
o Περιορισμός αμοιβαίου αποκλεισμού (disjointness constraint): οι υποτύποι οντοτήτων Singer και Group είναι
αμοιβαία αποκλειόμενοι (disjoint) – δεν υπάρχει τραγουδιστής που να αποτελεί group από μόνος του
• Υποχρεωτική/καθολική & προαιρετική/μερική συμμετοχή
Οντότητες (entities)
Εικόνα 1 Το παιδί προσδιορίζεται από το Όνομα του και ΑΔΤ του πατέρα. Κάθε
παιδί έχει οπωσδήποτε γονέα!
ΚΛΕΙΔΙΑ
• Υπερκλειδί (superkey) π.χ. (id), (id, author), (id, name), (author, name), …
• Υποψήφιο (candidate)/δευτερεύον (secondary) κλειδί π.χ. (id), (author, name) – ελάχιστο πλήθος
• Πρωτεύον (primary key - PK) π.χ. (id). Κάθε γραμμή του πίνακα προσδιορίζεται μοναδικά από το πρωτεύον κλειδί - entity
integrity)
• Εναλλακτικό = PK – υποψήφιο
• Surrogate key = «φτιαχτό» κλειδί
• Foreign key για referential integrity πριν εισαγωγή, διαγραφή, ενημέρωση
• Η τιμή της στήλης δεν ορίζεται για τη συγκεκριμένη εγγραφή (inapplicable, that’s bad)
• Η τιμή της στήλης δεν έχει ακόμα αποφασιστεί
• Η τιμή της στήλης είναι άγνωστη (unknown, that’s good)
Ορ. Συναρτησιακή εξάρτηση Α→B ανν 2 εγγραφές έχουν ίδιο Α ⇒ έχουν το ίδιο Β (μάλιστα ισχύει K→Head(R), K:key)
Ορ. Πλήρως συναρτησιακά εξαρτώμενο ανν Α→B αλλά όχι {Α’ ⊆ Α}→B δηλ. ΑΒ→C αλλά όχι Α→C & B→C
2NF ανν υπάρχουν συναρτησιακές εξαρτήσεις όλων των non-prime γνωρισμάτων από τα υποψήφια κλειδιά
• 1NF + κάθε non-prime είναι πλήρως συναρτησιακά εξαρτώμενο από κάθε υποψήφιο κλειδί (/PK) και όχι από υποσύνολό
του (κάθε non-prime γνώρισμα εξαρτάται από το PK)
• 1NF + για κάθε σχέση Α→Χ το Α δεν είναι γνήσιο υποσύνολο του PK
• PK είναι 1 χαρακτηριστικό ή όλα τα χαρακτηριστικά ανήκουν στο PK (all-key relation)
• 2NF + κανένα non-prime γνώρισμα δεν εξαρτάται μεταβατικά από κάποιο υποψήφιο κλειδί (Χ→Υ, Υ→Ζ ⇒ Χ→Ζ)
• 2NF + για κάθε Χ→Α, Χ=υπερκλειδί ή Α prime (δεν υπάρχουν εξαρτήσεις που να ΜΗΝ εμπλέκονται κλειδιά)
Εικόνα 2 Αν υπάρχει μεταβατική εξάρτηση, το εξαρτώμενο χαρακτηριστικό μεταφέρεται σε νέα σχέση μαζί με το χαρακτηριστικό που το προσδιορίζει
συναρτησιακά
BCNF (Boyce-Codd): για κάθε Χ→Υ, Χ=PK ή υποψήφιο κλειδί γενικότερα ή τετριμμένο (Υ⊆Χ)
7. ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΡΩΤΗΜΑΤΩΝ
Μέγεθος block: b [bytes]
• Επιλογή
o Γραμμική Αναζήτηση: κόστος = BR ή BR/2 (μ.ο) σε γνώρισμα-κλειδί
o Δυαδική Αναζήτηση: κόστος = log2(BR) + {# blocks που περιέχουν εγγραφές που ικανοποιούν την συνθήκη}
o Ευρετήρια
▪ 1 πρωτεύον ευρετήριο ανά σχέση που ορίζει τον τρόπο αποθήκευσης των εγγραφών (γρήγορο)
• Ισότητα στο κλειδί: κόστος = ΗΤi+1, με ΗΤi: κόστος εύρεσης τοποθεσίας εγγραφής στο ευρετήριο
• Ισότητα εκτός κλειδιού: κόστος = ΗΤi + {# blocks με εγγραφές που ικανοποιούν την συνθήκη}
▪ ≥ 1 δευτερεύοντα (πιο αργά)
• Για υποψήφιο κλειδί: κόστος = ΗΤi+1
• Αν δεν είναι κλειδί: κόστος = ΗΤi + {# blocks με εγγραφές που ικανοποιούν την συνθήκη}
▪ Συνθήκες την μορφής 𝜎𝛢≤𝑉 (𝑅) ή 𝜎𝛢≥𝑉 (𝑅): σάρωση ευρετηρίου (πρωτεύον ή δευτερεύον)
• Πρωτεύον (το αρχείο είναι διατεταγμένο ως προς το Α): για 𝜎𝛢≥𝑉 (𝑅) χρήση ευρετηρίου για
εύρεση 1ης εγγραφής με 𝛢 ≥ 𝑉 και σειριακή σάρωση κατόπιν. Για 𝜎𝛢≤𝑉 (𝑅) σειριακή σάρωση
μέχρι να βρεθεί η 1η εγγραφή με Α>V. Δεν χρειάζεται εδώ το ευρετήριο.
• Δευτερεύον: για 𝜎𝛢≥𝑉 (𝑅) χρήση του ευρετηρίου για εύρεση της 1η εγγραφής του ευρετηρίου με
𝛢 ≥ 𝑉 και σειριακή σάρωση του ευρετηρίου ξεκινώντας από το σημείο αυτό για να βρεθούν οι
δείκτες στις εγγραφές. Για 𝜎𝛢≤𝑉 (𝑅) σειριακή σάρωση του ευρετηρίου για να βρεθούν οι δείκτες
στις εγγραφές μέχρι να βρεθεί η 1η με Α>V
• Ταξινόμηση
o Quicksort αν χωράει στην μνήμη
o External Merge-Sort αν δεν χωράει στην μνήμη. Για Μ [blocks] μέγεθος μνήμης, #merges=⌈log 𝑀−1 (𝐵𝑅 /𝑀)⌉
#προσπελάσεων=ΒR (διαχωρισμό)+2ΒR (συγχώνευση), κόστος=𝐵𝑅 ⋅ (2 ⋅ ⌈log 𝑀−1 (𝐵𝑅 /𝑀)⌉ + 1) blocks
• Join 𝑅 ⨝𝜃 𝑆, R: εξωτερική, S:εσωτερική
o Nested loop join: worst case cost = 𝑁𝑅 ⋅ 𝐵𝑆 + 𝐵𝑅 . Αν η μικρότερη σχέση χωράει στην μνήμη θα πρέπει να
χρησιμοποιηθεί ως εξωτερική και τότε κόστος = 𝛣𝑆 + 𝐵𝑅
o Block nested loop join: worst case cost = 𝐵𝑅 ⋅ 𝐵𝑆 + 𝐵𝑅 , best case cost = 𝐵𝑅 + 𝐵𝑆
o Index nested loop join (όταν ένας πίνακας έχει ευρετήριο ως προς θ): κόστος = 𝐵𝑅 + 𝑁𝑅 ⋅ 𝑐 , c=Κόστος
προσπέλασης του ευρετηρίου για να βρεθούν όλες οι εγγραφές της S που αντιστοιχίζονται σε μία εγγραφή της R.
o Sort merge join (για ισότητα μόνο, ταξινόμηση & συγχώνευση): κόστος για ταξινομημένους πίνακες = 𝐵𝑅 + 𝐵𝑆
o Hash join (για ισότητα μόνο): κόστος = 3 ⋅ (𝐵𝑅 + 𝐵𝑆 )
• Προβολή, Συνάθροιση
o Προβολή και απαλοιφή διπλοτύπων με κατακερματισμό ή ταξινόμηση
• Ένωση, Τομή, Διαφορά
o Ταξινόμηση πινάκων βάσει κοινών στηλών και συνδυασμός ή κατακερματισμός
HTML = language
CSS = appearance
HTTP = protocol: Request GET, POST, PUT, DELETE & Response 1xx, 2xx success, 3xx redirected, 4xx client error, 5xx server error
Αρχιτεκτονική
Ασφάλεια: τρίγωνο CIA: εμπιστευτικότητα (SQL injections), ακεραιότητα, διαθεσιμότητα (DOS attack)
NoSQL: διαθεσιμότητα και partition tolerance (ανοχή κατακερματισμού), eventual percistency. Δεν έχουν σχήμα, γρήγορο,
φθηνό, big data, επεκτασιμότητα, διαθεσιμότητα, χαλαρή συνοχή ΑΛΛΑ δεν είναι σίγουρα τα data, δεν έχω γλώσσα (java,
python, javascript, bus, ...)
• Key-value stores: κλειδιά με τιμές - εισαγωγή, ενημέρωση, διαγραφή, ανάκτηση (μόνο με κλειδί) - big data - η ΠΙΟ
γρήγορη - συνήθως χρησιμοποιείται ως 2η βάση
• Αποθήκες εγγράφων: διάσημη - JSON, XML - δομημένος τρόπος - ανάκτηση αναζήτηση όπως θέλω - MongoDB
• Column oriented by Google: big data βολεύει άπειρα – κακό τα πολλά JOINS – καλό για π.χ. ΜΟ από ηλικία
• Με γράφους: RDF triple stores, spaghetti – σπάνια χρησιμοποιούνται
10. ΠΑΡΑΛΛΗΛΕΣ ΚΑΙ ΚΑΤΑΝΕΜΗΜΕΝΕΣ ΒΔ
Παραλληλοποίηση σε εισαγωγή δεδομένων, κατασκευή ευρετηρίων, εκτέλεση ερωτημάτων
Τύποι:
Μετρικές
Προβλήματα λόγω
Ερωτήματα σε παράλληλα
Κατηγορίες
Κατάτμηση
• Οριζόντια
o Range π.χ. id 0-10, 10-20, 20-30,… data skew
o Hash π.χ. mod – ομοιόμορφη κατανομή
o Round Robin: 1ο στο 1ο, 2ο στο 2ο, κ.ο.κ
• Κατακόρυφη
• Συνδυασμός
Τρόποι διανομής
HDFS: αρχεία σε blocks διανεμημένα στους κόμβους ενός cluster. Αντιγράφει blocks σε πολλούς
κόμβους. Master/Slave. No file updates. Αρχιτεκτονική: NameNode (master, metadata), HDFS
SecondaryNameNode (copy of metadata), DataNode (rest nodes, πράξεις σε blocks, λαμβάνει
εντολές από NameNode).
HBASE