You are on page 1of 8

2.

ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ – ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ-ΣΥΣΧΕΤΙΣΕΩΝ (E/R MODEL)


• Μοντέλα βασισμένα σε αντικείμενα (object based models)
o Αντικειμενοστραφές
o Οντοτήτων-Συσχετίσεων (E/R)
• Μοντέλα βασισμένα σε εγγραφές (record based models)
o Ιεραρχικό
o Δικτυακό
o Σχεσιακό

ER MODEL
Γνωρίσματα (attributes): περιγράφουν τις οντότητες. Πρόκειται για
χαρακτηριστικά που θέλουμε να καταγράφουμε στο στιγμιότυπο μίας
οντότητας. Έχουν πεδίο ορισμού (domain)

Κλειδιά (keys): Το γνώρισμα/γνωρίσματα που προσδιορίζει με μοναδικό


τρόπο μία οντότητα.

• Unique /non unique/συνδυασμός γνωρισμάτων


• Υπερκλειδί (superkey): κάθε σύνολο γνωρισμάτων που αρκεί για να οριστεί μοναδικά κάθε στιγμιότυπο
• Απλό ή Σύνθετο (simple, composite): αν αποτελείται από ένα ή περισσότερα γνωρίσματα
• Υποψήφιο ή Εναλλακτικό (candidate, alternative): αν έχει ελάχιστο πλήθος γνωρισμάτων
• Πρωτεύον ή Δευτερεύον (primary, secondary): Ορίζεται πρωτεύον αυτό που επιλέγουμε για να ορίσουμε μοναδικά τα
στιγμιότυπα

Συσχετίσεις (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)

• Ισχυρές: Οποιαδήποτε οντότητα δεν είναι Ασθενής είναι Ισχυρή


• Ασθενείς: Ασθενής είναι μια οντότητα τα στιγμιότυπα της οποίας δεν μπορούν να υπάρξουν χωρίς την ύπαρξη των
στιγμιότυπων μιας άλλης οντότητας. Τα γνωρίσματά της δεν αρκούν για να σχηματίσουν πρωτεύον κλειδί. Έχουν Μερικό
(partial) κλειδί. Προσδιορίζονται από τη σχέση τους (προσδιορίζουσα συσχέτιση) με άλλες ισχυρές οντότητες σε
συνδυασμό με τα μερικά κλειδιά. Συμμετέχουν σε συσχετίσεις Ν:Μ μέσω προσδιορίζουσας συσχέτισης με ισχυρή
οντότητα. Ασθενής Οντότητα έχει υποχρεωτική συμμετοχή ως προς την προσδιορίζουσα συσχέτιση!!

Εικόνα 1 Το παιδί προσδιορίζεται από το Όνομα του και ΑΔΤ του πατέρα. Κάθε
παιδί έχει οπωσδήποτε γονέα!

3. ΜΟΝΤΕΛΑ ΔΕΔΟΜΕΝΩΝ – ΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (RELATIONAL MODEL)

Πληθικότητα (cardinality)=# εγγραφών (rows)

Βαθμός (arity)= # γνωρισμάτων (columns)

ΚΛΕΙΔΙΑ
• Υπερκλειδί (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 πριν εισαγωγή, διαγραφή, ενημέρωση

Μια null τιμή μπορεί να σημαίνει πολλά πράγματα, όπως:

• Η τιμή της στήλης δεν ορίζεται για τη συγκεκριμένη εγγραφή (inapplicable, that’s bad)
• Η τιμή της στήλης δεν έχει ακόμα αποφασιστεί
• Η τιμή της στήλης είναι άγνωστη (unknown, that’s good)

E/R DIAGRAM TO RELATIONAL


1. Δημιουργώ πίνακα για κάθε οντότητα
a. Για ισχυρές δημιουργώ πίνακα σε τα γνωρίσματα ως στήλες. Επιλέγω και υπογραμμίζω PK
b. Για ασθενείας δημιουργώ πίνακα που αποθηκεύω και το PK της ισχυρής. Το PK της ασθενούς είναι το PK της
ισχυρής και το partial key της ασθενούς.
2. Συσχετίσεις:
a. 1:1 Για κάθε συσχέτιση προσδιορίζω τις οντότητες που συμμετέχουν στη συσχέτιση. Επιλέγω μία και
συμπεριλαμβάνω ως FK το PK της άλλης. Συνήθως επιλέγω εκείνη με ολική συμμετοχή. Προσθέτω τα
γνωρίσματα της συσχέτισης.
b. 1:Ν Συμπεριλαμβάνω στην οντότητα από την πλευρά Ν ως FK το PK της 1. Προσθέτω γνωρίσματα της συσχέτισης
στην οντότητα από την πλευρά της Ν.
c. Μ:Ν Δημιουργώ νέο πίνακα με γνωρίσματα το PK των οντοτήτων. PK είναι ο συνδυασμός τους. Προσθέτω τυχόν
γνωρίσματα.
3. Προσδιορισμών ιδιοτήτων των γνωρισμάτων (data type, null values, default values, data constraints)
4. Normalization
6. ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ
Ορ. Πρωτεύον (prime) γνώρισμα ανν ανήκει στο PK ≠ non-prime

Ορ. Συναρτησιακή εξάρτηση Α→B ανν 2 εγγραφές έχουν ίδιο Α ⇒ έχουν το ίδιο Β (μάλιστα ισχύει K→Head(R), K:key)

Ορ. Πλήρως συναρτησιακά εξαρτώμενο ανν Α→B αλλά όχι {Α’ ⊆ Α}→B δηλ. ΑΒ→C αλλά όχι Α→C & B→C

1NF: όλες οι τιμές των γνωρισμάτων είναι ατομικές

2NF ανν υπάρχουν συναρτησιακές εξαρτήσεις όλων των non-prime γνωρισμάτων από τα υποψήφια κλειδιά

• 1NF + κάθε non-prime είναι πλήρως συναρτησιακά εξαρτώμενο από κάθε υποψήφιο κλειδί (/PK) και όχι από υποσύνολό
του (κάθε non-prime γνώρισμα εξαρτάται από το PK)
• 1NF + για κάθε σχέση Α→Χ το Α δεν είναι γνήσιο υποσύνολο του PK
• PK είναι 1 χαρακτηριστικό ή όλα τα χαρακτηριστικά ανήκουν στο PK (all-key relation)

3NF ανν δεν υπάρχουν συναρτησιακές εξαρτήσεις μεταξύ non-prime γνωρισμάτων

• 2NF + κανένα non-prime γνώρισμα δεν εξαρτάται μεταβατικά από κάποιο υποψήφιο κλειδί (Χ→Υ, Υ→Ζ ⇒ Χ→Ζ)
• 2NF + για κάθε Χ→Α, Χ=υπερκλειδί ή Α prime (δεν υπάρχουν εξαρτήσεις που να ΜΗΝ εμπλέκονται κλειδιά)

Εικόνα 2 Αν υπάρχει μεταβατική εξάρτηση, το εξαρτώμενο χαρακτηριστικό μεταφέρεται σε νέα σχέση μαζί με το χαρακτηριστικό που το προσδιορίζει
συναρτησιακά

BCNF (Boyce-Codd): για κάθε Χ→Υ, Χ=PK ή υποψήφιο κλειδί γενικότερα ή τετριμμένο (Υ⊆Χ)
7. ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΡΩΤΗΜΑΤΩΝ
Μέγεθος block: b [bytes]

Κάθε εγγραφή: r [bytes]


𝑏
𝐹𝑅 ≡ 𝑏𝑓𝑟 = ⌊ 𝑟 ⌋ εγγραφές ανά block
𝑁𝑅
𝐵𝑅 = ⌈𝑏𝑓𝑟 ⌉ blocks να χρειάζονται για NR εγγραφές ⇒ 𝑏𝑓𝑟 = 𝐹𝑅 = ⌊ NR /BR )⌋

• Επιλογή
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 Ταξινόμηση πινάκων βάσει κοινών στηλών και συνδυασμός ή κατακερματισμός

Αποτίμηση σύνθετων εκφράσεων

• Materialization (αποθήκευση σε temp)


• Pipelining

Πλάνο εκτέλεσης / δένδρο έκφρασης


8. ΒΔ ΣΤΟ WEB
Web-browser (client) HTTP request HTTP respond Web-server (server)

HTML = language

CSS = appearance

HTTP = protocol: Request GET, POST, PUT, DELETE & Response 1xx, 2xx success, 3xx redirected, 4xx client error, 5xx server error

• Client side γλώσσες/τεχνολογίες


o Applets: μικρο-εφαρμογή, θέλει Plugins π.χ. adobe flash, java applets, Microsoft Silverlight
o ActiveX: υποστήριξη κάποιων applets, security risks
o HTML5: supports video, audio, graphics
o Javascript: uses HTML, CSS, forms, eetc, access only client side
• Server side γλώσσες/τεχνολογίες
o Web servers
▪ Microsoft Internet Information Server με Active Server Pages (ASP)
▪ Apache Web Server: open-source, cross-platform, free, απόδοση – HTTP browser written in C
• Common gateway interface (CGI): παράγει HTML κώδικα, default, multi-language support
▪ Servlet Container Servers
• Apache Tomcat (for Java servlets and Java Server Pages (JSP)): internet apps written in Java
• Jetty
o Programming languages
▪ PHP: HTML embedded scripting language, like CGI+συμβατότητα, included in Apache, IIS, Netscape
▪ Python: σύνδεση με web-apps (Django, Flask) και DB (MySQL Connector)
▪ Ruby on Rails: Model-View-Controller, scaffolding support, connect to DBs via Active Record

Αρχιτεκτονική

• 2 επιπέδων (1st tier client, 2nd tier server)


• 3 επιπέδων (1st tier client, 2nd application, 3rd DB server)
• Model-View-Controller

Ασφάλεια: τρίγωνο CIA: εμπιστευτικότητα (SQL injections), ακεραιότητα, διαθεσιμότητα (DOS attack)

Προστασία: Authorization, encryption, authentication, firewalls, δικαιώματα χρηστών


9. NO SQL DBs
NoSQL = non relational (schema-less) for big data, complex data, parallel requests, easy addition/removal of servers

ACID Model = συνοχή, προβλήματα σε κατανεμημένα συστήματα

• Atomicity: αν 1 μέρος της συναλλαγής αποτύχει, αποτυγχάνει όλη η συναλλαγή


• Consistency: same rules apply
• Isolation: transactions are independent – one query does not affect another
• Durability: no chaching, το ερώτημα περνιέται και τέλος

Θεώρημα CAP (Choose 2) άρα έχουμε 3 είδη συστημάτων: CA/CP/AP

• Consistency: ίδια έκδοση data


• Availability: αν πέσει 1 κόμβος δεν χάνω την λειτουργία
• Partition tolerance: το σύστημα παραμένει λειτουργικό ακόμα και αν κλείσει ένα partition

Μοντέλο BASE (super-fast, super availability, προσεγγιστική απάντηση, best-effort)

• Basically Available: σχεδόν πάντα διαθέσιμο και διαθέσιμοι πόροι (τμήματα)


• Soft State, Scalable: δεν είναι πάντα up-to-date τα δεδομένα = όχι συνεπές
• Eventual consistency: κάποτε θα είναι συνεπές

Σχεσιακές ΒΔ: συνοχή – ACID – όχι διαθεσιμότητα, όχι partition tolerance

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. ΠΑΡΑΛΛΗΛΕΣ ΚΑΙ ΚΑΤΑΝΕΜΗΜΕΝΕΣ ΒΔ
Παραλληλοποίηση σε εισαγωγή δεδομένων, κατασκευή ευρετηρίων, εκτέλεση ερωτημάτων

Τύποι:

• Coarse-grained parallel: λίγα δυνατά • Massively/fine-grained parallel: πολλά αδύναμα

Μετρικές

• Throughput • Response time


𝑒𝑥𝑒𝑐.𝑡𝑖𝑚𝑒 𝛼𝛿ύ𝜈𝛼𝜇𝜊
• Speedup = 𝑒𝑥𝑒𝑐.𝑡𝑖𝑚𝑒 𝛿𝜐𝜈𝛼𝜏ό ≤ 𝛮
𝑒𝑥𝑒𝑐.𝑡𝑖𝑚𝑒 𝑜𝑓 𝑡𝑎𝑠𝑘 𝑄 𝑖𝑛 𝜇𝜄𝜅𝜌ό
• Scaleup = 𝑒𝑥𝑒𝑐.𝑡𝑖𝑚𝑒 𝑜𝑓 𝑡𝑎𝑠𝑘 𝑄 =𝑄⋅𝑁 𝑖𝑛 𝜇𝜀𝛾ά𝜆𝜊(𝛮⋅𝛿𝜐𝜈𝛼𝜏ό) ≤1
𝑁

Προβλήματα λόγω

• Startup cost • Ανομοιόμορφη κατανομή - skew


• Παρεμβολές
Αρχιτεκτονικές

• Sharen memory (common RAM)


• Shared disk (common HDD) – πρόβλημα από παρεμβολές
• Shared nothing (δική του RAM & HDD): γραμμικό speedup & scaleup – πρόβλημα σε κόστος επικοινωνίας/μεγ. Εξ. HDD
• Ιεραρχικό (NUMA): πολλά shared memory ενωμένα ως shared nothing

Ερωτήματα σε παράλληλα

• Inter-query parallelism • Intra-operator parallelism (για ίδια πράξη)


• Inter-operator parallelism
SQL Κατανεμημένα συστήματα (Distributed): ανεξάρτητοι υπολογιστές που συνδέονται μέσω δικτύου – αξιοπιστία,
διαθεσιμότητα, διαμοιρασμός, διαφάνεια, απόδοση, επέκταση

Κατηγορίες

• Centralized (DB σε 1 κόμβο δικτύου) • Heterogeneous (MySQL + MongoDB)


• Distributed (DB σε διάσπαρτους κόμβους) o Federated (μικρή αυτονομία)
• Homogenous (only MySQL) o Mutlidatabase (μεγάλη αυτονομία)

Κατάτμηση

• Οριζόντια
o Range π.χ. id 0-10, 10-20, 20-30,… data skew
o Hash π.χ. mod – ομοιόμορφη κατανομή
o Round Robin: 1ο στο 1ο, 2ο στο 2ο, κ.ο.κ
• Κατακόρυφη
• Συνδυασμός

Κατανεμημένες NoSQL DBs

Τρόποι διανομής

• Sharding (διαφορετικά δεδομένα σε διαφορετικούς κόμβους)


• Replication (ίδια δεδομένα σε πολλούς κόμβους)
o Master-Slave
o Peer-2-Peer (όλα slaves) – write-write conflict
• Συνδυασμός
11. BIG DATA
Handoop Ecosystems

• Data Flow (PIG script ερωτημάτων)


• SQL (HIVE = framework ερωτημάτων)
• Job Scheduling/Execution System (MAP
Reduce για παράλληλη επεξεργασία)
• Key-Value Store (APACHE Database = real time
DB)
• Distributed File System (DHFS = διανεμημένο
σύστημα αρχείων)

HDFS: αρχεία σε blocks διανεμημένα στους κόμβους ενός cluster. Αντιγράφει blocks σε πολλούς
κόμβους. Master/Slave. No file updates. Αρχιτεκτονική: NameNode (master, metadata), HDFS
SecondaryNameNode (copy of metadata), DataNode (rest nodes, πράξεις σε blocks, λαμβάνει
εντολές από NameNode).

MAP REDUCE: Map: χωρίζει το πρόβλημα σε υπο-προβλήματα για παράλληλη επεξεργασία.


Reduce: εκτελεί απαιτούμενες εργασίες στα υπο-προβλήματα. Combiner: μειώνει το μέγεθος
των ενδιάμεσων δεδομένων για επαναλαμβανόμενα κλειδιά. Αν το task αποτύχει -> νέος
κόμβος. Αν το task αποτυγχάνει επανειλημμένα -> αποτυγχάνει job ή missing data. Αν έχω
σφάλμα στον κόμβο -> νέο task σε άλλο κόμβο. Αν το task αργεί -> 2ο αντίγραφο του task σε
άλλο κόμβο
MAP REDUCE
HIVE: Βιβλιοθήκη data warehousing. Created by facebook, now an apache project. Ad-hoc ερωτήματα. HIVE QL
like SQL

PIG: βιβλιοθήκη ETL = Extract-Transfer-Load. Γλώσσα ερωτημάτων: Pig Latin

HBASE: billions of rows x millions of columns. Column oriented. Key-value: Table,


Rowkey, Family, Column, Timestamp)->Value

HBASE

You might also like