Στις μέρες μας, δεδομένα παράγονται συνεχώς σε ασύλληπτους ρυθμούς και όλο και περισσότερες εφαρμογές προσπαθούν να χρησιμοποιήσουν όλα αυτά τα δεδομένα, για να πάρουν κρίσιμες αποφάσεις. Αυτό, μπορούν να το πετύχουν, χρησιμοποιώντας αλγορίθμους και δομές δεδομένων που επεξεργάζονται αποδοτικά μεγάλα σύνολα δεδομένων. Τα σύνολα αυτά, παράγονται από διάφορες πηγές (π.χ. αισθητήρες, μέσα κοινωνικής δικτύωσης) και ονομάζονται Μεγάλα Δεδομένα. Η επεξεργασία, καθώς και η ανάλυση των Μεγάλων Δεδομένων, έχει γίνει πλέον αναγκαία. Για τη γρήγορη απάντηση επερωτήσεων σε Μεγάλα Δεδομένα, χρησιμοποιούνται συνόψεις, οι οποίες συνοψίζουν το σύνολο δεδομένων και παρέχουν προσεγγιστικές απαντήσεις σε υποερωτήματα.Το Apache Flink είναι ένα από τα κυρίαρχα συστήματα για επεξεργασία σε ροές δεδομένων. Πάνω σε ροές δεδομένων, είναι πολύ σημαντικό να υπολογίζουμε συναθροιστικά αποτελέσματα και συνήθως αυτό μπορεί να επιτευχθεί χρησιμοποιώντας παράθυρα, καθώς οι ροές είναι άπειρες. Έτσι, τα αποτελέσματα παράγονται μετά τη λήξη κάθε παραθύρου. Το Flink όμως υποστηρίζει συγκεκριμένο αριθμό ενσωματωμένων συναρτήσεων που έχουν υλοποιηθεί.Σκοπός της διπλωματικής μας εργασίας είναι να επεκτείνουμε τον αριθμό των ενσωματωμένων συναρτήσεων που μπορεί να υποστηρίζει το Flink, επιτρέποντας τον υπολογισμό των συνόψεων και στη συνέχεια, την παροχή κατά προσέγγιση αποτελεσμάτων. Επιπλέον, για να μεγιστοποιήσουμε την απόδοση, πρέπει να διασφαλίσουμε ότι η κατασκευή των συνόψεων γίνεται κατά τη διάρκεια της εισαγωγής δεδομένων στα παράθυρα. Αυτό είναι πολύ σημαντικό για να αποφευχθεί η παγίδα της επεξεργασίας των πλειάδων ενός παραθύρου αφού κλείσει, κάτι που θα απαιτούσε ένα δεύτερο πέρασμα των στοιχείων του.