ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Παρουσιάσεις από την φετινή Fosdem 2017: CloudABI, PostgreSQL as RDF graph database, και PHP in the graph

Το Σάββατο και την Κυριακή  3-4  Φεβρουαρίου  διεξήχθη στις Βρυξέλλες η ετήσια πανευρωπαϊκή συνάντηση για το Ελεύθερο και Ανοικτό Λογισμικό FOSDEM. Η FOSDEM είναι η μεγαλύτερη συνάντηση των κοινοτήτων Ελεύθερου και Ανοικτού Λογισμικού, από την Ευρώπη αλλά και από όλο τον κόσμο. Στην FOSDEM δίνεται η δυνατότητα για γνωριμία με τις κοινότητες και τα πρόσωπα που αποτελούν την κινητήρια δύναμη, πίσω από πολλά σημαντικά έργα ΕΛ/ΛΑΚ. Ταυτόχρονα αποτελεί ένα forum για την παρουσίαση πρωτοβουλιών, έργων ανοικτού και ελεύθερου λογισμικού και κοινοτήτων σε ένα πολύ μεγάλο πλήθος ατόμων και κοινοτήτων.

Αυτό είναι το δεύτερο από μια σειρά άρθρων που παρουσιάζουμε μερικές από τις σημαντικές παρουσιάσεις και ομιλίες τις οποίες παρακολουθήσαμε.


CloudABI

Ο Ed Schouten παρουσίασε το project του CloudABI. Μία προσπάθεια που ξεκίνησε το 2014 και εξελίχθηκε σε ένα περιβάλλον εκτέλεσης εφαρμογών με ελεγχόμενη πρόσβαση στους διαθέσιμους πόρους. Το κίνητρο για αυτή την εφαρμογή ήταν η διαπίστωση του Schouten ότι δεν υπάρχει σχετικά εύκολος τρόπος για τον αυστηρό περιορισμό μίας εφαρμογής που εκτελείται σε unix-like περιβάλλον όσον αφορά την πρόσβαση στους πόρους του υπολογιστικού συστήματος. Αυτή ακριβώς την ευκολία σκοπεύει να αποκαταστήσει.

Το CloudABI αποτελεί ένα απλοποιημένο περιβάλλον εκτέλεσης (run-time environment) το οποίο υπακούει στο πρότυπο POSIX, και είναι εμπνευσμένο από το Capsicum του FreeBSD.

Υλοποιεί την αλληλεπίδραση μιας εφαρμογής με το περιβάλλον της μόνο μέσω της χρήσης αρχείων δυνατοτήτων (capabilities). Συγκρίνοντας αυτή την πρακτική με την κλασική προσέγγιση στα unix-like συστήματα, προκύπτουν τρία βασικά πλεονεκτήματα:

  • Μία ενδεχομένως επιτυχής επίθεση θα μπορεί να έχει επίδραση αποκλειστικά στους πόρους που έχουν διατεθεί στην εφαρμογή. Έτσι, σε μία π.χ. υπηρεσία δικτύου οι μόνοι ευαίσθητοι πόροι μπορούν να είναι το TCP SOCKET και οι κατάλογοι που έχουν διατεθεί. Αντίθετα σε μία άλλη περίπτωση επίθεσης, όλοι οι πόροι του συστήματος είναι δυνατόν να πληγούν.
  • Οι δοκιμές της εφαρμογής γίνονται πιο διαχειρίσιμες. Η γνώση ακριβώς των πηγών που είναι διαθέσιμες σε μία εφαρμογή μπορούν να κάνουν πολύ εύκολα προσαρμόσιμο το περιβάλλον δοκιμών.
  • Επίσης η διαδικασία του deployment γίνεται πολύ πιο απλουστευμένη αφού ελαττώνονται οι περιπτώσεις που απαιτούν εικονική μηχανή ή κάποιο container για να εκτελεστουν.

Το CloudABI είναι διαθέσιμο για linux, FreeBSD και OSX.

Αρχικά, παρουσιάστηκε η αρχιτεκτονική του Capsicum, ενώ επισημάνθηκαν τις απρόβλεπτες κακοτυχίες που μπορεί να επιφυλάσσει το sandboxing. Ως κατευθυντήρια δόθηκε το να μην εκτελείται σε sandbox κώδικας που έχει παραγχθεί από τρίτους.

Η βασική ιδέα πίσω απ το CloudABI είναι ενα σύστημα που προκύπτει απο την ένωση όλων των syscalls του POSIX, την πρόσθεση των common extensions και του Capsicum api, ενώ στο τέλος αφαιρούνται όλα τα μή συμβατά με το Capsicum τμήματα. Έτσι προκύπτει ένα σύστημα με λιγότερα από 60 syscalls που ουσιαστικά είναι ένα ABI (application binary interface) ανεξάρτητο λειτουργικού συστήματος. Αυτό το σύστημα ορίζεται σε ευανάγνωστο αρχείο κειμένου, ενώ είναι ασφαλές για να εκτελέσει μη εμπιστευόμενα προγράμματα. Υπάρχει ήδη πληθώρα βιβλιοθηκών, frameworks και εφαρμογών τα οποία έχουν γίνει port για cloudlibc, ενώ υπάρχουν και έτοιμα πακέτα τα οποία είναι διαθέσιμα στις ήδη γνωστές μορφές τους όπως npm και apt. Η δυνατότητα εκτέλεσης του CloudABI είναι ενσωματωμένη στο FreeBSD από την έκδοση 11.0 και εξής, υπάρχουν διαθέσιμα patches για τον kernel των linux και netBSD, ενώ για το OSX, η εκτέλεση γίνεται προσομοίωση στο χώρο χρήστη. Η εκτέλεση των ίδιων binaries εξασφαλίζεται σε όλα αυτά τα περιβάλλοντα.

Με τη χρήση του cloudabi-run εξασφαλίζεται η εκτέλεση μίας εφαρμογής με χρήση ενός μοναδικού αρχείου διαχείρισης (configuration file) ενώ τελικά τα προγράμματα που εκτελούνται επιτρέπεται τελικά να έχουν πρόσβαση αποκλειστικά και μόνο στους πόρους που τους έχουν ανατεθεί.

Το CloudABI framework συνολικά αποτελείται από τους ορισμούς των επιτρεπόμενων syscalls για ένα περιορισμένο “sandboxed POSIX”, τη βιβλιοθήκη cloudlibc, το precompiled πακέτα λογισμικού και την εντολή cloudabi-run.

Δείτε το βίντεο της παρουσίασης στην φετινή FOSDEM


PostgreSQL as RDF graph database

 

Από το Δημήτρη Αγγελάκο παρουσιάστηκε η έρευνά του όπου συνδυάζονται οι δυνατότητες της βιβλιοθήκης RDFlib και του framework SQLAlchemy για την “μετατροπή” της PostgreSQL με τρόπο τέτοιο ώστε να παρέχει ένα μόνιμο αποθηκευτικό backend για αποθήκευση γράφων, πρακτικά μετατρέποντάς την σε RDF triplestore για το Σημασιολογικό Ιστό.

Η προσέγγιση που παρουσιάζεται χρησιμοποιεί την python βιβλιοθήκη RDFlib επεκτεταμένη μέσω του SQLAlchemy προσδίδοντας δυνατότητες triplestore στην PostgreSQL. Το querying της βάσης γίνεται με τη χρήση SPARQL.

Η κλιμάκωση της υλοποίησης για την ενημέρωση της βάσης με big data βασίζεται στη δημιουργία σημασιολογικών τριάδων κατά την ανάγνωση μίας συμβατικής βάσης δεδομένων, την προσθήκη τους στο γράφο, καθώς και τη σειριοποίησή τους με αποδοτικό τρόπο.

Οι προκλήσεις που αντιμετωπιστηκαν για να υλοποιηθεί το πρότζεκτ είχαν να κάνουν με μεθόδους βελτιστοποίησης της αποδοτικότητας και της κλιμακωσιμότητας, μιας και ο σκοπός του πρότζεκτ, για να απευθύνεται στην προώθηση του Σημασιολογικού Ιστού, θα πρέπει να στοχεύει κατ εξοχήν σε big data.

Έγιναν τροποποιήσεις στην SQLAlchemy για την ομαδική εισαγωγή δεδομένων με μία insert into εντολή με πολλαπλά ορίσματα, παρά το αντίστροφο που είναι μη αποδεκτό από άποψη απόδοσης.

Το σενάριο της επανεκκίνησης της βάσης μετά από διακοπή αντιμετωπίστηκε με μεθόδους προσωρινής αποθήκευσης (caching).

Η αποδοτική σειριοποίηση επιτεύχθηκε με χρήση πολυπρογραμματισμού σε επίπεδο διεργασιών που παρήγαγαν joinable queues.

Όταν η σειριοποίηση γινόταν πιο γρήγορα από τη δυνατότητα αποθήκευσης του σκληρού δίσκου, υλοποιήθηκε αναμονή για άδειασμα των δομών των πολυεπεξεργαστών, καθώς και του stdout pipe.

Αντιμετωπίστηκε το πρόβλημα της rdflib-sqlalchemy του να αποθηκεύει τα πάντα στη RAM.

Καθώς και παρουσιάστηκαν και πολλές άλλες περιπτώσεις προβληματικής συμπεριφοράς που αντιμετωπίστηκε για να υλοποιηθεί επιτυχώς μία πολύ γρήγορη λύση χρήσης της PostgreSQL για την αποθήκευση σημασιολογικών τριάδων.

Δείτε το βίντεο της παρουσίασης στην φετινή FOSDEM


PHP in the graph

Τα βασικά στοιχεία της παρουσίασης της βιβλιοθήκης Gremlin για τη διάσχιση ενός γράφου συνοψίζονται στα εξής:

  • Την “ανακάλυψη” του γράφου
  • Τη διάσχιση με χρήση συναρτήσεων του Gremlin
  • Την αλληλεπίδραση του Gremlin με την PHP

Παρουσιάστηκαν τα δομικά στοιχεία του Gremlin που συνιστούν την αναπαράσταση ενός κατευθυντικού γράφου. Στη συνέχεια παρουσιάστηκαν αναλυτικά δυνατότητες διάσχισης λαμβάνοντας τα ως αποτελέσματα τα περιεχόμενα των ζητούμενων γράφων, καθώς και συγκεντρωτικά δεδομένα (aggregates) που προκύπτουν από τη διάσχιση του εν προκειμένω μονοπατιού. Επίσης αναλύθηκαν και οι περιπτώσεις αναδρομικής διάσχισης από έναν κόμβο καθώς και περιπτώσεις ανταλλαγής της σκυτάλης (ping-pong). Ως δεύτερο σκέλος του framework παρουσιάστηκαν οι δυνατότητες επεμβασης και φιλτραρίσματος των αποτελεσμάτων της διάσχισης.

Δείτε το βίντεο της παρουσίασης στην φετινή FOSDEM

Leave a Comment