Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούISSEL
Η ανάγκη για την αποτελεσματική ανάπτυξη και συντήρηση λογισμικού έχει εντοπιστεί εδώ και αρκετό καιρό στο σχετικό κλάδο της Τεχνολογίας Λογισμικού. Σήμερα, ωστόσο, με την εισαγωγή νέων πρακτικών ανάπτυξης λογισμικού και πρωτοβουλιών λογισμικού ανοικτού κώδικα, τα δεδομένα λογισμικού που μπορεί να βρει κανείς στο διαδίκτυο είναι άφθονα, επομένως η πρόκληση που προκύπτει είναι η αποτελεσματική αξιοποίησή τους για την παραγωγή καλύτερων προϊόντων λογισμικού. Και η πρόκληση αυτή αποτελεί στην πραγματικότητα ένα πρόβλημα επαναχρησιμοποίησης. Στο πλαίσιο αυτής της διατριβής προτείνουμε μια ενιαία προσέγγιση που περιλαμβάνει την εφαρμογή τεχνικών εξόρυξης δεδομένων σε δεδομένα τεχνολογίας λογισμικού για τη διευκόλυνση της επαναχρησιμοποίησης σε διάφορες φάσεις του κύκλου ζωής του λογισμικού. Η μεθοδολογία μας προτείνει λύσεις για τη φάση του καθορισμού των απαιτήσεων και της εξαγωγής προδιαγραφών, τις φάσεις της σχεδίασης και ανάπτυξης λογισμικού, ενώ συμβάλλει επίσης στην αξιολόγηση της ποιότητας και τον έλεγχο του λογισμικού.
Φανταστείτε αν αντί να κοιτάτε τα logs ενός ecommerce site το βράδυ για να δείτε ότι κάποιος "τα σήκωσε", μπορούσατε να δείτε σε πραγματικό χρόνο τι συμβαίνει. Και με πιτάκια. Γιατί τα events δεν είναι μόνο για IoT
In this presentation, conducted on 11-21-2008 @ Microsoft Hellas premises, I gave an 1 hour presentation introducing people from the StudentGuru Community (www.studentguru.gr) to Microsoft Robotics Developer Studio 2008 (MRDS 2008). Most of the presentation is based on live demos and hands on code, in order to fully realize the potential of MRDS 2008. There is also a custom made R2D2 LEGO Mindstorms NXT robot in the presentation demos for robot enthusiasts. The video and the slides presented are in Greek, but at least the demo samples can be downloaded by anyone!
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμά��ων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ��νάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
Development of a system for designing remote digital image processing pipelin...ISSEL
Nowadays, Digital Image Processing and Computer Vision have significantly evolved and have found their applications in almost every sector. Autonomous cars perceive the world around them through their optical sensors, medical imaging data are processed to extract conclusions about pathological conditions, the production line is monitored to detect abnormalities, and these are only a few examples of Computer Vision penetration in our everyday reality. At the same time, the distributed sensor networks in the concept of Internet of Things have an increasing presence in everyday life. However these devices usually don’t have sufficient computing power to execute complex and resource-demanding algorithms, such as Computer Vision ones. The classical approach for IoT systems is to create code flows and execute them on a remote host, but an automated approach would be even more interesting, using graphical building blocks, that will allow people of all specialties to create Machine Vision pipelines. In this diploma thesis, a system for developing digital image processing pipelines on a low code environment is created, that allows the pipelines to be executed remotely with the use of IoT protocols. For the graphical user interface of the application the Node-RED framework is selected, and a package is developed for it, in which each node requests the remote computation of a digital image processing algorithm. Furthermore, an image processing server is created, that executes the corresponding algorithms based on OpenCV and skimage libraries, and is also responsible for encoding and decoding the data between one form to be transmitted through the network and one form that is understood by the algorithms. The two entities communicate with each other through MQTT brokers, and can also be accessed externally. Finally, the system was tested through a number of pipelines of increasing size, that processed a single image, as well as a sequence of images. Also, a time analysis of the various processing stages was performed.
Ανάπτυξη υποδομής για τη δημιουργία ροών απομακρυσμένης επεξεργασίας εικόνας ...ISSEL
Σήμερα η Ψηφιακή Επεξεργασία Εικόνας και η Μηχανική Όραση βρίσκουν περισσότερες εφαρμογές από ποτέ. Τα αυτόνομα αυτοκίνητα για την κατανόηση του κόσμου γύρω τους μέσω των οπτικών αισθητηρίων τους, η επεξεργασία ιατρικών τομογραφιών για την εξαγωγή συμπερασμάτων για την ύπαρξη η όχι διαφόρων παθήσεων, η παρακολούθηση των γραμμών παραγωγής και ο εντοπισμός ανωμαλιών είναι μόλις μερικές από αυτές. Ταυτόχρονα, τα κατανεμημένα συστήματα αισθητήρων στο πλαίσιο του Internet of Things έχουν αυξανόμενη παρουσία στην καθημερινότητα των ανθρώπων. Πρόκειται για συστήματα ωστόσο με επεξεργαστική ισχύ που συνήθως δεν επαρκεί για την εκτέλεση πολύπλοκων και απαιτητικών σε πόρους αλγορίθμων, όπως αυτοί της Μηχανικής Όρασης. Η κλασσική προσέγγιση είναι ο συνδυασμός εντολών κώδικα και η εκτέλεσή του σε απομακρυσμένο κεντρικό υπολογιστή, όμως περισσότερο ενδιαφέρον παρουσιάζεται σε μία αυτοματοποιημένη προσέγγισή του, με χρήση γραφικών δομικών στοιχείων, που θα επιτρέψει σε άτομα κάθε ειδικότητας να μπορούν να ασχοληθούν με την δημιουργία ροών Μηχανικής Όρασης. Η συγκεκριμένη διπλωματική εστιάζει ακριβώς στην ανάπτυξη ενός τέτοιου συστήματος, για την ανάπτυξη ροών επεξεργασίας εικόνας σε περιβάλλον χαμηλού κώδικα, που θα εκτελούνται σε απομακρυσμένη τοποθεσία. Συγκεκριμένα, επιλέχθηκε το εργαλείο Node-RED ως η γραφική διεπαφή χρήστη και δημιουργήθηκε ένα πακέτο κόμβων για αυτό, στο οποίο κάθε κόμβος ζητά την εκτέλεση ενός αλγορίθμου επεξεργασίας εικόνας από έναν απομακρυσμένο διακομιστή. Επιπλέον, δημιουργήθηκε ο διακομιστής επεξεργασίας εικόνας, ο οποίος εκτελεί τους αντίστοιχους αλγορίθμους βασισμένος στις βιβλιοθήκες OpenCV και skimage, και είναι υπεύθυνος να κωδικοποιεί τα δεδομένα σε μορφές κατάλληλες τόσο για αποστολή στο δίκτυο όσο και για κατανόηση από τους αλγορίθμους. Οι δύο οντότητες επικοινωνούν μεταξύ τους μέσω μεσιτών (brokers) και μπορούν να προσπελαστούν και εξωτερικά. Τέλος, δημιουργήθηκαν τρία σενάρια χρήσης του συστήματος για την επεξεργασία μίας εικόνας, αλλά και χρονικής ακολουθίας εικόνων από ροές διαφόρων μεγεθών, και πραγματοποιήθηκαν πειράματα σχετικά με την απόδοση του συστήματος.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...ISSEL
Τις τελευταίες δεκαετίες, τα έργα λογισµικού γίνονται όλο και µεγαλύτερα, χρησιµότερα και διεισδύουν σε όλο και περισσότερες πτυχές του ανθρώπινου ϐίου. Κατά την ανάπτυξη και τη συντήρηση λογισµικού, οι προγραµµατιστές σπαταλούν µεγάλο µέρος του χρόνου τους στον εντοπισµό και τη διόρθωση σφαλµάτων. Τα εργαλεία στατικής ανάλυσης κώδικα αυτοµατοποιούν τη διαδικασία εντοπισµού των σφαλµάτων. Η χρήση τους, ωστόσο, παραµένει περιορισµένη, καθώς η κατανόηση και η διόρθωση σφαλµάτων παραµένουν ευθύνες των προγραµµατιστών. Τα τελευταία χρόνια, πραγµατοποιούνται έρευνες για την εξόρυξη προτύπων διόρθωσης τέτοιων σφαλµάτων άλλα και την ανάπτυξη συστηµάτων αυτοµατοποιηµένης διόρθωσης σφαλµάτων. Οι πρώτες στοχεύουν στην κατανόηση του τρόπου που οι προγραµµατιστές αντιµετωπίζουν τέτοια προβλήµατα, και πολλές ϕορές τα αποτελέσµατα τους αποτελούν ϐάση για τις δεύτερες. Η παρούσα διπλωµατική, στοχεύει στην εξόρυξη χρήσιµων προτύπων διόρ ϑωσης σφαλµάτων για σφάλµατα που ανήκουν στους κανόνες του εργαλείου στατικής ανάλυσης PMD. Αρχικά, µέσω κατάλληλων ερωτηµάτων στο API του Github, αναζητο ύνται commits που αφορούν διορθώσεις τέτοιων σφαλµάτων και λαµβάνονται οι εκδόσεις των αρχείων πριν και µετά των αλλαγών των commits. Στη συνέχεια, µέσω εκτέλεσης του PMD στις δύο εκδόσεις, εντοπίζονται οι επιµέρους διορθώσεις και δηµιουργείται κα τάλληλο σύνολο δεδοµένων, αποτελούµενο αποκλειστικά από διορθώσεις σφαλµάτων, κανόνων του PMD. Οι επιµέρους διορθώσεις αναλύονται και µε αξιοποίηση της αναπα ϱάστασης κώδικα srcML και του αλγορίθµου απόστασης επεξεργασίας δέντρου Gumtree, είναι εφικτή η εξαγωγή µιας ακολουθίας όρων που είναι αντιπροσωπευτικοί για κάθε διόρθωση. ΄Ετσι, µε εύρεση του µήκους της µέγιστης κοινής υπακολουθίας µεταξύ δύο διορθώσεων, είναι εφικτή η ανάπτυξη ενός µοντέλου οµοιότητας για τις διορθώσεις συνολικά και κατ΄ επέκταση, η οµαδοποίηση τους και η εξαγωγή προτύπων διόρθω σης. Πραγµατοποιήθηκαν δύο διαφορετικά πειράµατα οµαδοποίησης : στο ένα αξιοποιήθηκε ο αλγόριθµος K-medoids και στο άλλο ο DBSCAN. Και στα δύο πειράµα τα, άλλα ιδιαίτερα σε αυτό µε τον DBSCAN, σχεδόν κάθε εξαγόµενη οµάδα αποτελείται κυρίως από διορθώσεις σφαλµάτων ενός κανόνα του PMD. Παράλληλα, µε τον υπο λογισµό του αριθµού των commits και των αποθετηρίων από τα οποία προέρχονται οι διορθώσεις κάθε οµάδας - προτύπου, ϕανερώνεται ότι οι περισσότερες οµάδες προκύπτουν από διορθώσεις προερχόµενες από µεγάλο αριθµό commits και αποθετηρίων. ΄Ετσι αντανακλούν τον τρόπο που αρκετοί προγραµµατιστές ϑα αντιµετώπιζαν παρόµοια προβλήµατα. Συνεπώς, τα εξαγόµενα πρότυπα ϑα µπορούσαν να αποτελέσουν αφετη ϱία για κάποιον µηχανισµό αυτοµατοποιηµένης διόρθωσης σφαλµάτων, ϐασιζόµενο στο PMD για τον εντοπισµό τους.
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...ISSEL
Contemporary Software products are getting larger and more complex. Dur ing the processes of software development and maintenance, developers spend a significant amount of their work time on detecting and fixing bugs. Static Analysis Tools automate the process of bug detection. Their application, however, is lim ited as the process of understanding and fixing of bugs, remains part of developer’s responsibilities. Lately, several research approaches aspire to extract useful bug fix patterns, or to automate the bug fixing process. The first approaches focus on understanding how developers face similar problems and frequently they serve as groundwork for systems for automated bug fixing. Our research aims at the extraction of useful bug fix patterns, for bugs that trigger the rules of the static analysis tool PMD. Initially, by querying the Github API, we search for commits that correspond to fixes of these categories of bugs. Both the before and after the commit versions of the commits’ files are downloaded. Then, by executing PMD on the two versions of each file, individual fixes are detected and a proper dataset is crafted. The dataset comprises fixes of bugs detectable from rules of PMD. The fixes are analyzed, and by utilizing srcML code representation and tree edit distance algorithm Gumtree, a representative sequence is extracted from each fix. Afterwards, by utilizing the metric of longest common subsequence between two sequences of two fixes, we develop a similarity scheme for the dataset’s fixes. This similarity scheme, operates as the base for the clustering of fixes and pattern extraction. In order to cluster the fixes, two separate experiments were conducted, one with K-medoids and one with the DBSCAN algorithm. In both experiments, but mostly with the DBSCAN algorithm, almost each cluster groups mostly bug fixes of a certain PMD rule. Alongside, by computing the number of commits and repositories from which the fixes of each cluster come from, it becomes obvious, that most of the clusters arise from fixes coming from a large number of commits and repositories. Thus, the extracted patterns correspond to the way in which similar problems are faced, by a number of different developers. Consequently, our extracted patterns, can be utilized as groundwork for an automated bug fixing system, where PMD will serve for bug detection.
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...ISSEL
Στο πλαίσιο της διαδικασίας ανάπτυξης λογισμικού, η ανάθεση εργασιών θεωρείται μια κρίσιμη πτυχή η οποία επιδιώκει να αναθέσει τις εργασίες προς επίλυση στον πιο κατάλληλο προγραμματιστή. Η υπάρχουσα έρευνα σε αυτόν τον τομέα επικεντρώνεται κυρίως σε πληροφορίες που συλλέγονται από τις αναφορές των εργασιών λογισμικού, αλλά υπάρχει ακόμα αρκετή πολύτιμη πληροφορία διαθέσιμη στα σχετικά commits των μηχανικών λογισμικού που δεν έχει διερευνηθεί πλήρως. Η παρούσα διπλωματική εργασία εμβαθύνει στη χρήση πληροφορίας από τα commits για τη βελτίωση της προσέγγισης ανάθεσης εργασιών λογισμικού. Αξιοποιώντας δεδομένα εργασιών λογισμικού και πληροφορίες από commits συνδεδεμένα με τις εργασίες λογισμικού, αναπτύξαμε ένα σύστημα που στοχεύει στην ενίσχυση της υπάρχουσας μεθοδολογίας. Ο πρωταρχικός στόχος ήταν να αξιολογηθεί η αποτελεσματικότητα της ενσωμάτωσης της πληροφορίας από commits σε σύγκριση με την αποκλειστική στήριξη στις αναφορές εργασιών λογισμικού. Μέσω τεχνικών προεπεξεργασίας, ανακαλύψαμε ότι τα πεδία των commits περιέχουν πολύτιμες πληροφορίες που μπορούν να συμβάλουν σημαντικά στη διαδικασία ανάθεσης των εργασιών. Προς αυτόν τον στόχο, κατασκευάσαμε ένα μοντέλο νευρωνικών δικτύων, ειδικά προσαρμοσμένο στις απαιτήσεις μας. Η προεπεξεργασία περιλάμβανε εξαγωγή και ανάλυση πεδίων κειμένου τόσο από αναφορές εργασιών λογισμικού όσο και από commits, καθώς και από το περιεχόμενο του κώδικα από τα commits. Επιπλέον, κωδικοποιήσαμε βασικά πεδία για την εξαγωγή σημαντικών χαρακτηριστικών, εμπλουτίζοντας έτσι το σύνολο δεδομένων. Στη συνέχεια χρησιμοποιήθηκε το εκπαιδευμένο μοντέλο νευρωνικών δικτύων για την ταξινόμηση των εργασιών λογισμικού, αναθέτοντάς τις στον καταλληλότερο προγραμματιστή. Για να επικυρώσουμε την αποτελεσματικότητα της προσέγγισής μας, χωρίσαμε τα διαθέσιμα δεδομένα σε υποσύνολα με βάση τα έργα και πραγματοποιήσαμε διαδικασίες εκπαίδευσης και ελέγχου. Ενσωματώνοντας πληροφορία από τα commits στη διαδικασία ανάθεσης εργασιών λογισμικού, το σύστημά μας επέδειξε την ικανότητα να επιτυγχάνει υψηλή ακρίβεια και αποτελεσματικότητα στην ανάθεση εργασιών σε προγραμματιστές.
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...ISSEL
Καθώς ο κόσμος συνεχίζει την μετάβαση προς ένα πιο βιώσιμο μέλλον, η ανάγκη για αποτελεσματική διαχείριση των φυσικών πόρων γίνεται ολοένα και πιο σημαντική. Αυτό έχει οδηγήσει τις υπηρεσίες κοινωνικής ωφέλειας στη χρήση των έξυπνων μετρητών ως κύριας τεχνολογίας. Οι έξυπνοι μετρητές είναι συσκευές που μπορούν να συλλέξουν και να αναλύσουν, σε πραγματικό χρόνο, δεδομένα κατανάλωσης ηλεκτρικής ενέργειας, νερού και αερίου, επιτρέποντας την καλύτερη παρακολούθηση και διαχείριση των πόρων. Με αυτά τα δεδομένα, οι υπηρεσίες κοινής ωφέλειας μπορούν να λάβουν εμπεριστατωμένες αποφάσεις για τη βελτιστοποίηση των δικτύων διανομής και τη μείωση της σπατάλης, προσφέροντας ταυτόχρονα στους πελάτες τους τη δυνατότητα για καλύτερη κατανόηση των συνηθειών τους και βοηθώντας τους να λάβουν ποιοτικές αποφάσεις για την κατανάλωσή τους. Προκειμένου να καλυφθεί αυτή η ανάγκη, οι υπηρεσίες κοινής ωφέλειας πρέπει να υιοθετήσουν έναν συνδυασμό από κλιμακούμενες (scalable) και ανθεκτικές σε σφάλματα (fault-tolerant) τεχνολογίες, για την αποθήκευση των δεδομένων με αποτελεσματικό και οικονομικά αποδοτικό τρόπο. Επιπλέον, τεχνολογίες επεξεργασίας ροών δεδομένων (stream processing) μπορούν να χρησιμοποιηθούν για την εισαγωγή στο σύστημα και την ανάλυση των δεδομένων που παράγονται από τους μετρητές σε πραγματικό χρόνο, επιτρέποντας στους παρόχους και τους καταναλωτές την άμεση ανίχνευση και αντίδραση σε απρόσμενες μεταβολές, βελτιώνοντας έτσι την αποδοτικότητα και την αξιοπιστία της υπηρεσίας. Η παρούσα διπλωματική επικεντρώνεται στον σχεδιασμό και την υλοποίηση μιας κλιμακούμενης και επεκτάσιμης Lambda αρχιτεκτονικής, για την αποθήκευση και ανάλυση του τεράστιου όγκου δεδομένων που συλλέγονται από έξυπνους μετρητές, αν και μπορεί να γενικευθεί για κάθε σύστημα που αποθηκεύει και αναλύει δεδομένα χρονοσειρών. Στην προτεινόμενη αρχιτεκτονική, το Apache Kafka χρησιμοποιείται ως βασικό υποσύστημα για την εισαγωγή των μηνυμάτων στο συνολικό σύστημα, ώστε, μέσω αυτού, οι μετρικές των συσκευών να γίνονται διαθέσιμες σε εφαρμογές-καταναλωτές. Για την επεξεργασία ροών δεδομένων, χρησιμοποιούνται τα Kafka Streams και ksqlDB, ώστε να γίνει συνάθροιση (aggregation), φιλτράρισμα και επαναδρομολόγηση των μηνυμάτων, καθώς και να παραχθούν ειδοποιήσεις σε περίπτωση ανίχνευσης ακραίων τιμών. Για τη μεσοπρόθεσμη αποθήκευση, επιλέγεται η Cassandra, ενώ για τη μακροπρόθεσμη αποθήκευση, προτείνεται το S3. Η υλοποίηση επικεντρώνεται στην εισαγωγή των δεδομένων στο σύστημα, την επεξεργασία ροών δεδομένων και τη μεσοπρόθεσμη αποθήκευση, ενώ παρατίθενται παραδείγματα χρήσης αυτών των υποσυστημάτων. Τέλος, συλλέγονται και παρουσιάζονται μετρικές από τον έ��εγχο επίδοσης των καίριων συστατικών, ώστε να αξιολογηθεί ο βαθμός κλιμάκωσης της λύσης.
Similar to 9th ssn execution plans in microsoft sql server 2008 r2 (20)
This document provides an overview of using Polybase for data virtualization in SQL Server. It discusses installing and configuring Polybase, connecting external data sources like Azure Blob Storage and SQL Server, using Polybase DMVs for monitoring and troubleshooting, and techniques for optimizing performance like predicate pushdown and creating statistics on external tables. The presentation aims to explain how Polybase can be leveraged to virtually access and query external data using T-SQL without needing to know the physical data locations or move the data.
Antonios Chatzipavlis presented on SQL Server backup and restore. The presentation covered database architecture basics including data files, transaction log files, and the buffer cache. It also discussed backup types like full, differential, transaction log, copy only and partial backups. Backup strategies and restore processes were explained, including restoring to a point in time and restoring system databases. The internals of how SQL Server performs backups using buffers and I/O threads was also summarized.
Antonios Chatzipavlis presented on migrating SQL workloads to Azure. He discussed modernizing data platforms by discovering, assessing, planning, transforming, optimizing, testing and remediating. Key migration considerations include remaining, rehosting, refactoring, rearchitecting, rebuilding or replacing workloads. Tools for migrating data include Microsoft Assessment and Planning Toolkit, Data Migration Assistant, Database Experimentation Assistant, SQL Server Migration Assistant, and Azure Database Migration Service. Workloads can be migrated to Azure VMs, Azure SQL Databases or Azure SQL Managed Instances.
This document summarizes a webinar presentation about workload management in SQL Server 2019. It discusses how SQL Server's Resource Governor feature can be used to provide multitenancy, predictable performance, and isolation for multiple workloads running on a single SQL Server instance. Key concepts covered include resource pools, workload groups, and classification functions to assign sessions to different pools and groups. The presentation also reviews best practices for using lookup tables in classification functions and shows some DMVs for monitoring Resource Governor configuration and statistics.
This document provides an overview of loading data into Azure SQL DW (Synapse Analytics). It discusses extracting source data into text files, landing the data into Azure Data Lake Store Gen2, preparing the data for loading into staging tables using PolyBase or COPY commands, transforming the data, and inserting it into production tables. It also compares ETL vs ELT approaches and SSIS vs Azure Data Factory for data integration. The presenter then demonstrates loading data in Synapse SQL pool and invites any questions.
The document provides an overview of the DAX language. It discusses that DAX is the programming language used in Power BI, Power Pivot, and Analysis Services for data modeling, reporting, and analytics. It describes the basic components of a DAX data model including tables, columns, relationships, measures, and hierarchies. It also covers DAX syntax, functions, operators, and how context and filter context work in DAX calculations and queries.
The document introduces Diagnostic Management Views (DMVs) and Dynamic Management Functions (DMFs) in SQL Server. It discusses that DMVs and DMFs return server state information and can be used to monitor server health, diagnose problems, and tune performance. It provides examples of common DMVs and DMFs used for query execution and the query plan cache. Finally, it notes that the presentation will demonstrate troubleshooting with DMVs and DMFs.
This document summarizes common T-SQL anti-patterns that can negatively impact query performance, including using SELECT *, functions in predicates, OR operators, implicit conversions, unnecessary sorts, correlated subqueries, and dynamic SQL execution. The presentation provides explanations of why each anti-pattern hurts performance and recommendations for more optimized alternatives such as using indexes, temporary tables, parameterization, and execution plan analysis.
This document discusses designing a modern data warehouse in Azure. It provides an overview of traditional vs. self-service data warehouses and their limitations. It also outlines challenges with current data warehouses around timeliness, flexibility, quality and findability. The document then discusses why organizations need a modern data warehouse based on criteria like customer experience, quality assurance and operational efficiency. It covers various approaches to ingesting, storing, preparing and modeling data in Azure. Finally, it discusses architectures like the lambda architecture and common data models.
Modernizing Your Database with SQL Server 2019 discusses SQL Server 2019 features that can help modernize a database, including:
- The Hybrid Buffer Pool which supports persistent memory to improve performance on read-heavy workloads.
- Memory-Optimized TempDB Metadata which stores TempDB metadata in memory-optimized tables to avoid certain blocking issues.
- Intelligent Query Processing features like Adaptive Query Processing, Batch Mode processing on rowstores, and Scalar UDF Inlining which improve query performance.
- Approximate Count Distinct, a new function that provides an estimated count of distinct values in a column faster than a precise count.
- Lightweight profiling, enabled by default, which provides query plan
This document discusses designing a modern data warehouse in Azure. It provides an overview of traditional vs. self-service data warehouses and their limitations. It also outlines challenges with current data warehouses around timeliness, flexibility, quality and findability. The document then discusses why organizations need a modern data warehouse based on criteria like customer experience, quality assurance and operational efficiency. It covers various approaches to ingesting, storing, preparing, modeling and serving data on Azure. Finally, it discusses architectures like the lambda architecture and common data models.
The document provides details about an SQL expert's background and certifications. It summarizes the expert's career starting in 1982 working with computers and 1988 starting in the computer industry. In 1996, they started working with SQL Server 6.0 and have since earned multiple Microsoft certifications. The expert now provides training and consultation services, and created an online school called SQL School Greece to teach SQL Server.
Azure SQL Database for the SQL Server DBA - Azure Bootcamp Athens 2018 Antonios Chatzipavlis
Azure SQL Database is a managed database service hosted in Microsoft's Azure cloud. Some key differences from SQL Server include: the service is paid by the hour based on the selected service tier; users can dynamically scale resources up or down; backups and high availability are managed by the service provider; and common administration tasks are handled by the provider rather than the user. The service offers automatic backups, point-in-time restore, and geo-restore capabilities along with built-in high availability through replication across three copies in the primary region.
The document discusses technologies within the Microsoft SQL family and Azure SQL that can help organizations address requirements of the General Data Protection Regulation (GDPR). It covers features for discovering and classifying personal data, managing access and controlling how data is used, and protecting data through encryption, auditing and other security controls. Built-in technologies like dynamic data masking, row-level security, authentication options, and transparent data encryption are described as ways SQL Server and Azure SQL Database can help organizations comply with GDPR.
The document provides biographical information about Antonios Chatzipavlis, a SQL Server expert and evangelist. It then summarizes his presentation on statistics and index internals in SQL Server, which covers topics like cardinality estimation, inspecting and updating statistics, index structure and types, and identifying missing indexes. The presentation includes demonstrations of analyzing cardinality estimation and picking the right index key.
This document provides an introduction and overview of Azure Data Lake. It describes Azure Data Lake as a single store of all data ranging from raw to processed that can be used for reporting, analytics and machine learning. It discusses key Azure Data Lake components like Data Lake Store, Data Lake Analytics, HDInsight and the U-SQL language. It compares Data Lakes to data warehouses and explains how Azure Data Lake Store, Analytics and U-SQL process and transform data at scale.
This document provides an overview of Azure SQL Data Warehouse. It discusses what Azure SQL Data Warehouse is, how it is provisioned and scaled, best practices for designing tables in Azure SQL DW including distribution keys and data types, and methods for loading and querying data including PolyBase and labeling queries for monitoring. The presentation also covers tuning aspects like statistics, indexing, and resource classes.
This document provides an introduction and overview of Azure DocumentDB. It discusses how DocumentDB is a fully managed NoSQL database service that provides fast and predictable performance for JSON data through SQL querying capabilities. It also describes how DocumentDB offers features like elastic scaling, high availability, global distribution and ease of development. The document then provides information on starting with DocumentDB, writing queries, and programming capabilities within DocumentDB like stored procedures and triggers.
9th ssn execution plans in microsoft sql server 2008 r2
1. SQL Saturday Night
9th
Execution Plans
Microsoft SQL Server 2008 R2
Σάββατο 26/03/2011
2. Η παρουσίαση αυτή καταγράφεται ώστε να είναι διαθέσιμη σε
όσους θέλουν να την ξαναδούν, ή δεν είχαν την δυνατότητα να
την παρακολουθήσουν σε πραγματικό χρόνο.
Η παρουσίαση αυτή διατίθεται δωρεάν.
Εάν κάποιος από τους παραβρισκόμενους στην παρουσίαση
αυτή έχει το οποιοδήποτε πρόβλημα ή αντίρρηση να είναι μέσα
στην καταγραφή αυτής, παρακαλείται να αποχωρήσει άμεσα.
Σε διαφορετική περίπτωση η παρουσία του εκλαμβάνεται ως
αποδοχή της καταγραφής.
Η παρουσίαση αρχίζει σε 1 λεπτό…
3. Antonios Chatzipavlis
Solution Architect - Principal Consultant
Development Evangelist - SQL Server MVP
MCT, MCITP, MCPD, MCSD, MCDBA, MCSA, MCTS, MCAD, MCP, OCA
6. How a query executed
Basics of Execution Plans in Microsoft SQL Server 2008 R2
Relational Engine
QUERY
Query Parse/Query/Sequence Algebrizer Query Processor
Parsing Tree Output Process Tree Output
Query Optimizer
Estimated
Statistics Models
Execution Plan
Storage Engine
Query Actual
Execution Execution Plan
Actual
Execution Plan Plan Cache
Actual
Execution Plan
Actual
Execution Plan
Actual
Execution Plan
6
7. Estimated vs Actual Execution Plans
Basics of Execution Plans in Microsoft SQL Server 2008 R2
•
•
•
•
•
•
7
8. Execution Plan Reuse
Basics of Execution Plans in Microsoft SQL Server 2008 R2
• (previously called Procedure Cache)
• Each plan is stored once in Plan Cache
• Except if the optimizer sees parallelism, in this case one query gets two
plans.
• Execution Plans are not kept in memory forever.
• Slowly aged out of the system using an “age” formula
• Estimated Cost X Number of Times it has been used
• Lazywriter process periodically scans the cache and decreases this value
by one each time.
8
16. The Icon Language
The Language of Graphical Execution Plans in Microsoft SQL Server 2008 R2
Clustered Index Scan
Clustered Index Seek
Non-Clustered Index Scan
Non-Clustered Index Seek
Key Lookup
Table Scan
RID LookUp
Hash Match
Nested Loops
Merge Join
Sort
Filter
16