Jun 29, 2007

Εγκατάσταση 10.1.3.3.0 στο SuSE Enterprise Desktop

Μόλις έγινε διαθέσιμο το πολυαναμενόμενο patchset 10.1.3.3.0 (patch number: 6148874) του Oracle Application Server, που επιλύει αρκετά θέματα σταθερότητας ειδικά ως προς το SOA Suite. Έχω ήδη αναφερθεί σε προηγούμενο άρθρο στην εγκατάσταση του SOA Suite σε SuSE Enterprise Desktop, οπότε με μεγάλη ευχαρίστηση, διαπίστωσα πως τα βήματα που είχα τότε εφαρμόσει ήταν αρκετά για μια ομαλή εγκατάσταση και του patchset. Πραγματικά, δεν παρουσιάστηκε κανένα πρόβλημα, ούτε χρειάστηκε η παραμικρή διόρθωση.

Jun 24, 2007

Oracle Develop 2007 in Prague - Εντυπώσεις

Το διήμερο 21-22 Ιουνίου πραγματοποιήθηκε στην Πράγα η συνέχεια της εκδήλωσης Oracle Develop, που έχει διανύσει ήδη την αμερικάνικη και την ασιατική ήπειρο και τώρα βρίσκεται στην Ευρώπη (http://www.oracle.com/technology/events/develop2007/index.html) Η εκδήλωση απευθύνεται σε developers και αποσκοπεί στην ενημέρωσή τους σχετικά με προϊόντα και εξελίξεις, την πρακτική εφαρμογή όσων παρουσιάζονται με τη βοήθεια hands-on sessions, και τέλος, και ίσως σημαντικότερο, την επαφή και γνωριμία με τους "ειδικούς" της Oracle, σε κάθε προϊόν. Με πολύ μεγάλη μου χαρά θα σας παρουσιάσω σε αυτό το άρθρο τις εντυπώσεις μου από αυτό το διήμερο καθώς και τις σκέψεις που μου δημιουργήθηκαν.

Το event έλαβε μέρος στο Συνεδριακό Κέντρο της Πράγας (Congress Center) και το παρακολούθησαν περίπου 700 άνθρωποι από 36 χώρες. Οι συνεδρίες ήταν διάρκειας μιας ώρας η κάθε μια και συντελούσαν σε ένα εντατικό και πολύ ενδιαφέρον πρόγραμμα από 10.30 το πρωϊ μέχρι τις 6.30 το απόγευμα. Οι άξονες του ενδιαφέροντος ήταν Java, SOA, .NET και Database. Αξίζει να σημειωθεί πως ειδικά για τις τεχνικές συνεδρίες (hands-on sessions) οι αίθουσες ήταν εφοδιασμένες με σειρές από laptops Dell Latitude με επεξεργαστή Core Duo 2 και μνήμη 2GB ώστε ο κάθε ένας χρήστης να έχει το δικό του. Το επίπεδο των εισηγητών αλλά και των παρουσιάσεων κυμάνθηκε σε υψηλό επίπεδο και για κάθε hands-on session αποκομίσαμε ένα βιβλίο που εξέθετε αναλυτικά κάθε άσκηση.

Κάνοντας μια σύνθεση αυτών που ακούστηκαν και εντάσσοντας τα σε κατηγορίες, τα πιο ενδιαφέροντα σημεία ήταν τα ακόλουθα:
  1. Oracle Database Server. To launching της 11g θα πραγματοποιηθεί μέσω webcast στις 11 Ιουλίου (http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=66665) Ανάμεσα στα αναμενόμενα χαρακτηριστικά είναι:
    1. Η δυνατότητα καταγραφής του φόρτου και των συνθηκών ενός συστήματος (όπως sessions, παράμετροι) και η δυνατότητα αναπαραγωγής του σε άλλο σύστημα. Ένα αφάνταστα χρήσιμο χαρακτηριστικό που θα ωφελήσει όλους θέλουν να δοκιμάσουν σε πραγματικό φόρτο ένα testing περιβάλλον
    2. Ο μηχανισμός caching θα παρουσιάσει αρκετές βελτιώσεις ώστε με διαφανή τρόπο, παρόμοια queries να μοιράζονται τα ίδια αποτελέσματα και να εκτελούνται πιο γρήγορα
    3. Θα προσφέρεται πια η δυνατότητα connection pooling και για την PHP
    4. Βελτιώσεις στην PL/SQL ώστε να επιταχύνεται το compilation με το έλεγχο των εξαρτήσεων μιας function ή procedure όχι σε επίπεδο package, αλλά σε επίπεδο function ή procedure που σχετίζονται με αυτήν, όπως επίσης και real native compilation, απευθείας σε κώδικα μηχανής. Επίσης, δυνατότητα inlining συναρτήσεων (με την επιλογή pls_optimize_level = 3), caching αποτελεσμάτων σε ένα query, ιδιαίτερά χρήσιμο όταν αυτό είναι σύνθετο και περιλαμβάνει sub-queries που διαβάζουν τα ίδια δεδομένα με το hint /*+ result_cache */ Ως προς τους triggers, θα είναι πλέον δυνατόν να γίνονται disabled, να ορίζεται η σειρά εκτέλεσής τους καθώς και να ομαδοποιούνται ώστε ένας μόνο trigger να περιλαμβάνει statements όπως before statement..., before each row... Επιπλέον, δεν θα χρειάζεται SELECT statement για την επιλογή της επόμενης τιμής ενός sequence. Τέλος, από τα πιο αναμενόμενα χαρακτηριστικά είναι η υποστήριξη του Go to Declaration, στο περιβάλλον του SQL Developer, που θα παραδοθεί μαζί με την Oracle 11g, έπειτα από την επιλογή του ονόματος ενός πακέτου ή procedure, καθώς και η γραφική υποστήριξη του PL/SQL profiler του πακέτου dbms_profiler.
  2. Oracle Application Server.
    1. Αλλαγή στη φιλοσοφία και τη σύνθεση των Application Servers. Σε όλες τις παρουσιάσεις που είχαν να κάνουν με τον OAS αλλά και την ανάπτυξη των εφαρμογών, ακούσαμε πολλές φορές τις λέξεις JPA, EJB3, TopLink, Spring και JSF. Αυτό δεν είναι καθόλου τυχαίο, δεδομένου ότι η Oracle έχει πάρει την στρατηγική απόφαση να υποστηρίξει ανοικτά πρότυπα στην ανάπτυξη λογισμικού, γεγονός που αποδεικνύεται με την συμμετοχή της σε διάφορους οργανισμούς όπως το OSGi Alliance, Eclipse Foundation, προσφορές κώδικα στο Apache, όπως του ADF Faces κτλ. Διαφαίνεται πως το open source, έχει εισβάλλει για τα καλά με τη δυναμική του στους εμπορικούς Application Servers, οι οποίοι με τη σειρά τους, στηρίζονται σε ολοένα και αυξανόμενο βαθμό σε open source projects. Γι' αυτό το λόγο, φαίνεται πως στο επόμενο χρονικό διάστημα θα παίξει μεγάλο ρόλο η πακετοποίηση λύσεων και βιβλιοθηκών βασισμένες στο OSGi (http://www.osgi.org/) ώστε να μπορούν να εντάσσονται εύκολα (σκεφτείτε πόσο γρήγορα προκύπτουν νέες εκδόσεις στα open source projects) στο περιβάλλον ενός Application Server.
    2. Κάτι επίσης που θα μας απασχολήσει στο επόμενο διάστημα είναι το Service Component Architecture (SCA) που αναλαμβάνει την ομαδοποίηση σε ροές εργασιών BPEL, message hubs που χρησιμοποιούνται, business rules και την παραμετροποίηση που χρειάζονται ώστε να συνθέσει ένα επαναχρησιμοποιήσιμο στοιχείο σε μια αρχιτεκτονική SOA. Με άλλα λόγια, διαμέσου αυτού των στοιχείων, θα είναι δυνατή η σύνθεση ροών, που αποτελούνται από επιμέρους στοιχεία, που θα επικοινωνούν μεταξύ τους με σαφώς καθορισμένο τρόπο. Ας αρχίσουμε δηλαδή να βλέπουμε τις ροές BPEL ως κομμάτια ενός γενικότερου παζλ μιας αρχιτεκτονικής, που συνθέτει και ταιριάζει, ανάλογα με τις ανάγκες άλλα κομμάτια (components)
    3. Ένα πολύ ελπιδοφόρο προϊόν είναι το Oracle Coherence (http://www.oracle.com/technology/products/coherence/index.html), που αφορά την κατανεμημένη διαχείριση μνήμης σε ένα cluster από Application Servers. Προέρχεται από την εξαγορά του Tangosol, είναι JCache-compliant και έρχεται να αντικαταστήσει ανάμεσα στα άλλα και το Java Object Cache. Καθώς ο φόρτος στους Application Servers αυξάνεται, το Oracle Coherence λειτουργεί ως μηχανισμός μνήμης για ένα cluster από Application Servers, προσφέροντας δυνατότητες για διάφορες τοπολογίες, ενεργοποίησης γεγονότων (για παράδειγμα η αλλαγή της τιμής ενός πεδίου ενός object) και πολλά άλλα. Με άλλα λόγια απευθύνεται σε μια grid αρχιτεκτονική από Application Servers που έχοντας στη διάθεσή τους αρκετή μνήμη, μπορούν να εξυπηρετήσουν γρήγορα και με αντοχή σε σφάλματα, τις αιτήσεις των χρηστών. Το ενδιαφέρον είναι πως το Oracle Coherence θα χρησιμοποιηθεί εσωτερικά από την OAS στην έκδοση 11g για το state replication σε cluster και ότι επίσης θα αντικαταστήσει το OPMN. Επίσης, δύναται να χρησιμοποιηθεί και από .ΝΕΤ εφαρμογές.
    4. Ενδιαφέρουσα ήταν η επίδειξη της χρήσης proxy authentication στον Application Server. Αυτό μπορεί να συμβαίνει σε εφαρμογές που στηρίζονται σε auditing ή εφαρμογή πολιτικών (για παράδειγμα Virtual Private Database) με βάση database χρήστες. Η έκδοση 10.1.3.3 επιτρέπει τη δημιουργία connection pool με την χρήση proxy users που αυθεντικοποιούνται τόσο από το επίπεδο του Application Server, όσο και από αυτό της βάσης.
    5. Ένα ακόμα γνώρισμα του 10.1.3 είναι η δυνατότητα για το Java Single Sign-On (JSSO) που διαφοροποιείται από το Oracle Single Sign-On που χρησιμοποιεί το Oracle Internet Directory ως repository. Αντίθετα, το JSSO συνεργάζεται με JAAS providers και μπορεί απευθείας να επικοινωνήσει με αρχείο χρηστών (jazn-data.xml), πίνακες στην βάση δεδομένων που κρατούν χρήστες και ρόλους της εφαρμογής, SUN iPlanet, κ.α.
  3. Development Tools.
    1. Εντυπωσιάστηκα από ίσες δυνατότητες προγραμματισμού που παρέχει η Oracle και στο περιβάλλον .ΝΕΤ. Δυνατότητες που περιλαμβάνουν λειτουργίες όπως local/remote debugging σε PL/SQL, end-to-end debugging, connection pooling, proxy authentication, array arguments στο ODP.NET, διασύνδεση στο Help του Visual Studio με το PL/SQL Reference Guide. Επίσης, providers για το ASP.NET για την αποθήκευση της κατάστασης ενός site, ακόμα και δυνατότητα αποθήκευσης και εκτέλεσης stored procedures σε .ΝΕΤ (μόνο σε Windows και μόνο για Oracle 10g Release 2) Κατά αυτόν τον τρόπο, η Oracle επιδιώκει να δώσει ίσες δυνατότητες προγραμματισμού τόσο σε Java όσο και σε .ΝΕΤ περιβάλλοντα.
    2. Ισχυρότερη υποστήριξη του Eclipse, τώρα και στο μέλλον, με τη διάθεση plug-ins όπως το EclipseLink για TopLink EJB 3 λύσεις, του Dali για το JPA, προσφάτως του Oracle Database Plugin κοκ, αναγνωρίζοντας πως όλοι οι προγραμματιστές σε Oracle συστήματα δεν χρησιμοποιούν αποκλειστικά JDeveloper.
    3. Ήταν ιδιαίτερη εντυπωσιακή η επίδειξη των δυνατοτήτων της βιβλιοθήκης Oracle ADF Faces Rich Client. (http://www.oracle.com/technology/products/adf/adffaces/index.html) Πρόκειται για JSF components εμπλουτισμένα με AJAX δυνατότητες. Ενδεικτικά παραδείγματα αποτελούν οι δυνατότητες resize σε panels και σε κελιά πινάκων (κάτι ανάλογο με το excel), αυτόματης ταξινόμησης και ενεργοποίησης φίλτρων σε πίνακες (grids), παραγωγής γραφημάτων, drag and drop, κ.α.
Γενικά, θα έλεγα πως πέρασα ένα χρήσιμο και εντατικό σε μάθηση διήμερο στο Oracle Develop 2007. Αξίζει πέρα για πέρα να παρακολουθεί κανείς τέτοιες εκδηλώσεις.

Jun 18, 2007

Αντιγραφή και επικόλληση διαδικασιών (activities) στον BPEL Designer

Κατά τη διάρκεια μιας hands-on παρουσίασης του BPEL, ανέκυψε το ερώτημα για το εάν είναι δυνατόν να γίνει αντιγραφή και επικόλληση μιας διαδικασίας (activity) από ένα σημείο σε ένα άλλο, μέσω drag and drop ή copy-paste. Αυτό είναι ιδιαίτερα χρήσιμο, για παράδειγμα σε κόμβους απόφασης, που γίνεται ανάθεση σε μια μεταβλητή, ανάλογα με τον τύπο του αποτελέσματος (όπως στην ακόλουθη εικόνα που ο else κόμβος απουσιάζει)

Δυστυχώς, στην παρούσα έκδοση αυτό δεν είναι εφικτό με μηχανισμούς copy και paste της αρχικής διαδικασίας. Αντίθετα, αυτό που θα πρότεινα είναι να προσθέσουμε μια διαδικασία στην οποία θέλουμε να κάνουμε επικόλληση, χωρίς να της κάνουμε αρχικοποίηση (έτσι θα εμφανιστεί το εικονίδιο του λάθους στο διάγραμμά μας). Έπειτα, επιλέγουμε την διαδικασία που μας ενδιαφέρει για αντιγραφή και ακολουθούμε το tab Source στο κάτω μέρος. Με αυτόν τον τρόπο, μεταφερόμαστε απευθείας στον πηγαίο κώδικα, στο σημείο που έχουμε επιλέξει.

Τώρα, μπορούμε να σκιάσουμε ολόκληρο το κείμενο του activity προς αντιγραφή

κάνοντας μάλιστα χρήση των grouping blocks (τα σταυρουδάκια στα αριστερά)

και να το επικολλήσουμε, επικαλύπτοντας τον προσωρινό κόμβο. Τέλος, μπορούμε να το διορθώσουμε είτε από τον Source κώδικα είτε από τον Design Editor.

Jun 9, 2007

SQL Developer: O translation scratch editor για την μετάπτωση (migration) σε άλλες βάσεις δεδομένων

Ο SQL Developer έχει προοδεύσει εντυπωσιακά σε σχέση με ένα παλαιότερο άρθρο όπου είχα καταγράψει τις πρώτες μου εντυπώσεις. Αποτελεί πια ένα ολοκληρωμένο, ισχυρό εργαλείο προγραμματισμού σε βάσεις δεδομένων (όχι μόνο Oracle αλλά και MySQL και SQL Server), παραγωγής reports (ακόμα και σε μορφή γραφημάτων) και απλής διαχείρισης (έτοιμα βασικά reports DBA, import/export δεδομένων, σύγκρισης μεταξύ σχημάτων, κ.α. ) Εξαιτίας της επιτυχίας του, ενσωμάτωσε ένα ξεχωριστό έως πρότινος προϊόν, το Oracle Migration Workbench, που επιχειρεί με αυτοματοποιημένο τρόπο να μεταφέρει (migrate) τρίτες ως προς την Oracle βάσεις. Η εργασία της μεταφοράς αποτελείται από διάφορα βήματα και περιγράφεται αναλυτικά στο σύστημα βοήθειας του SQL Developer. Αυτό που όμως είναι ενδιαφέρον, είναι η δυνατότητα άμεσης μετάφρασης ενός τμήματος κώδικα (π.χ. μιας stored procedure του SQL Server) σε PL/SQL με τη βοήθεια του Translation Scratch Editor.

Στο παράδειγμά μας, θα χρησιμοποιήσω μια σύνδεση στον SQL Server για να αντλήσω τις stored procedures, αν και κάτι τέτοιο δεν είναι απαραίτητο, αφού στο περιβάλλον του Translation Scratch Editor, μπορούμε να πληκτρολογήσουμε άμεσα T-SQL για να μεταφραστεί σε PL/SQL! Για να συνδεθούμε λοιπόν σε μια βάση του SQL Server, θα χρειαστούμε τους jTDS JDBC drivers που διατίθενται στο: http://jtds.sourceforge.net/ Τοποθετούμε τη βιβλιοθήκη jar στον κατάλογο $SQL_DEVELOPER_HOME/jdbc/lib και έπειτα την ορίζουμε στο περιβάλλον από την επιλογή Tools-->Preferences-->Database-->Third Party JDBC Drivers.

Στο επόμενο βήμα, ορίζουμε τις πληροφορίες σύνδεσης στη βάση μας:

και τώρα πια έχουμε πρόσβαση σε αυτήν. Φυσικά και μπορούμε να δούμε τη δομή της (πίνακες, procedures, triggers) όπως και να κάνουμε ανάπτυξη κώδικα.

Διαλέγοντας τώρα μια stored procedure, μπορούμε να αντιγράψουμε τον κώδικα της στον Scratch Editor (μενού Migration-->Translation Scratch Editor) και αφότου επιλέξουμε τη γλώσσα εισόδου (π.χ. Τ-SQL για SQL Server, Access, MySQL) να πατήσουμε το κουμπί της μετάφρασης σε PL/SQL. Σίγουρα θα υπάρχουν πολύπλοκα statements που δεν θα μεταφραστούν όπως θα θέλαμε, αλλά ο scratch editor μας δίνει τη δυνατότητα να εξερευνήσουμε την παραγωγή του κώδικα σε PL/SQL, σε πραγματικό χρόνο, μεταβάλλοντας τη stored procedure εισόδου, χωρίς να ξεκινήσουμε μια μαζική διαδικασία migration. Μάλιστα, η μεταφρασμένη procedure μπορεί άμεσα να γίνει compile σε ένα Oracle σχήμα της επιλογής μας.