Skip to content

makotora/DB-Implementation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Υλοποίηση Συστημάτων Βάσεω Δεδομένων
Εργασία 1

--ΔΕΥΤΕΡΗ ΠΑΡΑΔΟΣΗ ΜΕΤΑ ΑΠΟ ΣΥΝΕΝΝΟΗΣΗ ΜΕ ΤΟΝ ΚΥΡΙΟ ΓΟΥΝΟΠΟΥΛΟ--
Φτιάξαμε απλώς να κρατάμε το attrName μέσα στο αρχείο (πριν το είχαμε σαν δείκτη)

Η εργασια υλοποιηθηκε απο τους:

Valentin Ivanov,   ΑΜ: 1115 2014 00049
Μανούσος Τοράκης,  ΑΜ: 1115 2014 00201

Για την εκτέλεση των Mains σας:
make HT_main
make EH_main

Εκτελέσιμο: ./test

Έχουμε υλοποιήση και τα δυο μέρη της εργασίας.
Το στατικό κομμάτι δουλεύει για όλα τα αρχεία εισόδου (και τις 100.00 εγγραφές).

Στον στατικό κατακερματισμό στην αρχή του 1ου μπλοκ αποθηκευουμε τις πληροφορίες που χριάζεται το αρχείο και αμέσωσς μετά απο αυτές
έχουμε το dictionary, ένας πινακας ακεραίων που ειναι τα buckets μας.
Κάθε ένα bucket είναι απλα ενας integer ο οποίος δείχνει σε ποιό μπλοκ βρίσκονται οι εγγραφές που κάνουν hash στο συγκεκριμένο bucket.

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

Όλες οι συναρτήσεις δουλεύουν σύμφωνα με τις δοκιμές που κάναμε.




Στο δευτερό κομμάτι της εργασίας υλοποιούμε τον επεκτατό κατακερματισμό.

Τα παραδείγματα δουλεύουν στα datasets των 100 και 1000 εγγραφών. Έπειτα εμφανίζεται το header_overflow, επειδή δεσμεύονται πάρα πολλλά blocks.
Ο επέκτατος χρησιμοποιεί δυο συναρτήσεις:

1. την Extend η οποία διπλασιάζει το πλήθος των buckets και κάνει τα καινούργια να δείχνουν εκεί που δείχνουν και τα παλία.
2. την Split η οποία όταν γεμίσει ένα block φτίαχνει καινούριο και ξαναβάζει(διαμοιράζει) ολες τις εγγραφές του μπλόκ απο την αρχή (κάνει insert ξανα τις εγγραφές που βρισκονται στο μπλοκ
+ την καινουρία).

Αυτές οι συναρτήσεις δουλεύοθν και καλούνται σύμφωνα με την θεωρία.
Έχουμε ενα globalDepth και καθε μπλοκ έχει ενα localDepth.
Καθε φορά που γεμίζει ενα μπλοκ, αν το localDepth του μπλοκ ειναι μικροτερο απο το globalDepth τότε γίνεται μόνο split, δημιουργώντας ενα καινούριο μπλοκ
και βάζοντας κάποιο απο τα άλλα buckets να δείχνουν σε αυτό.
Αν ομως το localDepth == globalDepth τότε πρώτα γίνεται extend και μετά split.

Γίνεται seperate compiling με κάποια επιπλέον αρχεία που περιέχουν κάποιες βοηθητικές συναρτήσεις.
Έχουν υλοιποιηθεί όλες οι συναρτήσεις που ζητούνται απο την εργάσια.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published