Αυτό το folder περιέχει υλοποίηση για τον υπολογισμό του Convex Hull και του Skyline Operator σε δισδιάστατα σημεία ταινιών μορφής (budget, popularity), καθώς και scripts για πειραματική αξιολόγηση:
- υπολογισμός Convex Hull CH(P1) για το σύνολο σημείων P1 = {(budget, popularity)},
- υλοποίηση SKYLINE OPERATOR για MIN budget και MAX popularity (σε Python και ως SQL predicate),
- μέτρηση χρόνου εκτέλεσης με benchmarks για διαφορετικά μεγέθη δεδομένων (N) και πολλαπλές επαναλήψεις,
- καταγραφή αποτελεσμάτων σε CSV (benchmarks και outputs των queries).
- Python 3.10+ (ή νεότερο)
- Βιβλιοθήκες:
pandas,openpyxl(για ανάγνωση Excel), καιsqlite3(ενσωματωμένη στην Python). - Dataset αρχείο (π.χ.
data/Movies Dataset/movies_dataset_cleaned/movies_dataset.csvή.xlsx).
-
test.py
Υλοποίηση Convex Hull & Python Skyline + benchmarking:- υπολογίζει το CH(P1) με Convex Hull,
- υπολογίζει το Skyline (MIN budget, MAX popularity) με Python (sort-based),
- τρέχει benchmarks για διάφορα N και γράφει αποτελέσματα σε CSV.
-
skyline_sql.py
Υλοποίηση Skyline ως SQL predicate (SQLite in-memory) + benchmarking:- εκτελεί Skyline query με SQL (λογική τύπου
NOT EXISTS), - τρέχει benchmarks για διάφορα N και γράφει αποτελέσματα σε CSV.
- εκτελεί Skyline query με SQL (λογική τύπου
-
bench_python.csv
Αποτελέσματα benchmark για την Python υλοποίηση (Convex Hull + Skyline). -
bench_sql.csv
Αποτελέσματα benchmark για την SQL υλοποίηση (Skyline ως SQL query/predicate). -
out_convex_hull.csv
Output αρχείο με τα σημεία (budget, popularity) που ανήκουν στο Convex Hull CH(P1). -
out_skyline.csv
Output αρχείο με τις ταινίες που ανήκουν στο Skyline (Python υλοποίηση). -
out_skyline_sql.csv
Output αρχείο με τις ταινίες που ανήκουν στο Skyline (SQL υλοποίηση).
Για το σύνολο σημείων P1 = {(budget, popularity)}:
- Convex Hull CH(P1): τα ακραία γεωμετρικά σημεία που περικλείουν όλα τα δεδομένα στο επίπεδο (budget, popularity).
- Skyline (MIN budget, MAX popularity): οι ταινίες που δεν “κυριαρχούνται” από κάποια άλλη (δηλαδή δεν υπάρχει ταινία με μικρότερο ή ίσο budget και μεγαλύτερη ή ίση popularity, με τουλάχιστον μία αυστηρή βελτίωση).
Τα benchmarks μετρούν τον χρόνο εκτέλεσης καθώς αυξάνεται το N (και για πολλαπλές επαναλήψεις), ώστε να συγκριθεί η προσέγγιση Python vs SQL.
Βεβαιώσου ότι το dataset υπάρχει στη διαδρομή που γράφει το script (ή δώσε το με --input) και τρέξε:
python ./Query3/test.py