Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

η XML είναι λίγο φλύαρη

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος aphilippou στις 25-10-2006, 16:41. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-10-2006, 14:03 18520

    η XML είναι λίγο φλύαρη

    Κάποια στιγμή είχε δημοσιευτεί σε αυτό το site κάποια πληροφορία για ένα νέο ή υπό εξέταση πρότυπο για συμπηκνωμένα xml. Θυμάστε τίποτα;

    Το θέμα είναι το εξής: Ακόμα και σήμερα, όπου τα δίκτυα έχουν βελτιωθεί αρκετά και ο αποθηκευτικός χώρος είναι φθηνός, υπάρχουν συσκευές ή συστήματα που χρειάζεται να επικοινωνήσουν με όσο το δυνατόν λιγότερη πληροφορία. Το XML αν και ο καλύτερος τρόπος ανταλλαγής δεδομένων είναι αρκετά φλύαρο. Π.χ. αν θέλω να μεταφέρω τα στοιχεία ενός ανθρώπου θα έγραφα κάτι τέτοιο:

    <person>
       <fname>Dimitris</fname>
       <lname>Papadimitriou</lname>
       <country>Greece</country>
    </person>

    Για το λόγο αυτό υπάρχουν συστήματα που για να μειώσουν αυτό το κείμενο επινοούν custom τρόπους, όπως π.χ. ένα comma seperated string, έχοντας προσυμφωνήσει τη σειρά των πεδίων. π.χ. το παραπάνω θα μπορούσε να γίνε ως εξής:

    Dimitris,Papadimitriou,Greece

    Χωρίς αμφιβολία, ότι επιχείρημα και να φέρει κανείς, η 2η εκδοχή είναι πιο σύντομη! Το πρόβλημα είναι ότι αν η πληροφορία που μεταφέρεις είναι μεγάλη (π.χ. τα πλήρη στοιχεία ενός ατόμου - διεύθυνση, τηλέφωνα, σημειώσεις κλπ.κλπ.) μπορεί να κερδίζεις αρκετά περισσότερο σε όγκο, αλλά η πληροφορία δεν είναι πλέον self-described και είναι δύσκολο και εντελώς custom να γίνει parsed.

    Υπάρχει λοιπόν κάποιο πρότυπο τύπου XML που να συνδυάζει τα δυο παραπάνω;


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  12-10-2006, 14:22 18521 σε απάντηση της 18520

    Απ: η XML είναι λίγο φλύαρη

    οχι και δεν εχει και νοημα. η ιδεα της xml ειναι να ειναι περιγραφική ως προς τα δεδομένα της. υπαρχουν καποιεσ υλοποιησεις για binary xml και αυτο ζητας. μαλιστα αν θυμαμαι καλά υπάρχει και task force στο w3c για binary xml.
    Γιώργος Σακαλής
  •  12-10-2006, 19:36 18530 σε απάντηση της 18521

    Απ: η XML είναι λίγο φλύαρη

    Μία λύση ίσως να ήταν:



    <person>
    <fname>;<lname>;<country>
    Dimitris1;Papadimitriou1;Greece1
    Dimitris2;Papadimitriou2;Greece2
    Dimitris3;Papadimitriou3;Greece3
    Dimitris4;Papadimitriou4;Greece4
    </person>


    while (!dead) learn();
  •  12-10-2006, 23:17 18533 σε απάντηση της 18520

    Απ: η XML είναι λίγο φλύαρη

    Το παράδειγμα με τα comma separated strings μας γυρνάει πίσω στον καιρό των CSV και των fixed length αρχείων, όταν για να επικοινωνήσουν δύο συστήματα έπρεπε να βρει ο ένας το fixed length format που διαβάζει ο άλλος για να γίνει η γέφυρα. Δε λέω ότι αυτό ήταν "Κακό", αλλά σίγουρα τα πάντα ήταν ad hoc. Επιπλέον για να φτιάξεις κάτι με ιεραρχίες και συσχετίσεις μεταξύ των εγγραφών έπρεπε να κάνεις πολλές παραδοχές και πολύπλοκες υλοποιήσεις. Αν θέλεις κάτι τέτοιο που να μην είναι παραφουσκωμένο και επαναλαμβανόμενο, θα είναι ad hoc και αυτό.

    Βέβαια μπορείς πάντα να κάνεις μικροβελτιώσεις, π.χ. να μετασχηματίζεις την XML σου πριν από την αποστολή/αποθήκευση σε μια ισόμορφη, όπου όμως όλα τα tags θα έχουν μήκος 1 ή 2 αν τα 26 γράμματα δε σου φτάνουν, και να το μετασχηματίζεις πίσω στην άλλη άκρη.

    Το πιο καλό μάλλον είναι να φροντίσεις τη συμπίεση ένα ή περισσότερα επίπεδα πιο κάτω στο μηχανισμό επικοινωνίας ή αποθήκευσης που έχεις. Άλλωστε όλοι οι αλγόριθμοι συμπίεσης συντρίβουν την XML σαν κείμενο που είναι. Έτσι δε χρειάζεται να κάνεις κόλπα και όλα γίνονται με διαφάνεια.


    Νατάσα Μανουσοπούλου
  •  13-10-2006, 00:42 18542 σε απάντηση της 18533

    Απ: η XML είναι λίγο φλύαρη

    Διαβάστε λίγο αυτό: http://www.dotnetzone.gr/cs/forums/14675/ShowPost.aspx

    και τα ξαναλέμε σε αυτό το thread...


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  13-10-2006, 10:13 18546 σε απάντηση της 18542

    Απ: η XML είναι λίγο φλύαρη

    Συνημμένα: output.zip

    Παρακάτω έγραψα ένα παράδειγμα χρήσης του Fast Infoset που αναφέρεται στο παραπάνω link. Στο Α μέρος δημιουργώ ένα XmlDocument. Τίποτα καινούργιο. Στο Β μέρος ανοίγω ένα FileStream για να γράψω το XML μου. Επίσης τίποτα καινούργιο. Στο Γ μέρος "γράφω" το XmlDocument σε ένα Noemax.FastInfoset.XmlFastInfosetWriter. Πριν του έχω δώσει και ένα reference στο FileStream. Στο Δ μέρος δημιουργώ ένα standard xml για σύγκριση.

    Το αποτέλεσμα φαίνεται στην επισύναψη. Είναι κατά κάποιο τρόπο ένα συμπιεσμένο XML. Αν παρατηρήσετε το fast infoset είναι 4,87KB ενώ το standard xml 15,3KB.

    Το ερώτημά είναι κατά πόσο το XML είναι standard. Σύμφωνα με το παραπάνω link αυτό είναι υπό εξέταση.

            ' A) create xml document
            Dim doc As New Xml.XmlDocument
            Dim personsNode As Xml.XmlElement = doc.CreateElement("persons")
            doc.AppendChild(personsNode)
            For i As Integer = 0 To 100
                Dim personNode As Xml.XmlElement = doc.CreateElement("Person")
                personNode.AppendChild(doc.CreateNode(Xml.XmlNodeType.Element, "fname", "di")).InnerText = "Dimitris" & i
                personNode.AppendChild(doc.CreateNode(Xml.XmlNodeType.Element, "lname", "di")).InnerText = "Papadimitriou" & i
                personNode.AppendChild(doc.CreateNode(Xml.XmlNodeType.Element, "country", "di")).InnerText = "Greece"
                personsNode.AppendChild(personNode)
            Next

            ' B) create output file
            Dim output As New IO.FileStream("c:\fast.xml", IO.FileMode.CreateNew)

            ' C) write as fast infoset
            Dim XmlFastInfosetWriter As New Noemax.FastInfoset.XmlFastInfosetWriter()
            XmlFastInfosetWriter.Init(output)
            doc.WriteTo(XmlFastInfosetWriter)
            XmlFastInfosetWriter.Close()

            ' D) write as plain xml (just to compare)
            doc.Save("c:\standard.xml")


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  13-10-2006, 10:20 18547 σε απάντηση της 18546

    Απ: η XML είναι λίγο φλύαρη

    Βέβαια με μια ξεχωριστή συμπίεση των δυο output αρχείων,fast και standard, παίρνω δυο αρχεία που είναι 702 και 781 bytes αντίστοιχα. Όχι μεγάλη διαφορά.

    Οπότε ίσως τελικά να μην είναι και κακό να χρησιμοποιείσεις standard xml με αλγόριθμό συμπίεσης, όπως λέει και η Νατάσα, από το να χρησιμοποιείσεις κάτι σαν το Infoset, έστω και αν είναι standard.

    Αυτό βέβαια αν μιλάμε για μεταφορά των δεδομένων πάνω από κάποιο δίκτυο. Αν τα θέλουμε αποθηκευμένα και μας ενδιαφέρει η γρήγορη πρόσβαση σε συνδυασμό με το μικρό αρχείο, τότε ίσως το fastinfoset να είναι καλύτερο.
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  13-10-2006, 12:42 18554 σε απάντηση της 18547

    Απ: η XML είναι λίγο φλύαρη

    στο java.sun.com λέει περισσότερα για το fastinfoset: http://java.sun.com/developer/technicalArticles/xml/fastinfoset/


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  14-10-2006, 13:27 18596 σε απάντηση της 18554

    Απ: η XML είναι λίγο φλύαρη

    Θα προσπαθήσω να βοηθήσω στη κατανόηση του Fast Infoset. Σαν πρώτο βήμα, διαβάστε το ακόλουθο άρθρο που αναφέρεται στη ταχύτητα του FastInfoset.NET και που δεν έχει δημοσιευθεί ακόμα (κάνει πρωτιά στο dotNetZone.gr ;-)

    http://www.noemax.com/products_and_services/fi/preliminary_benchmarks.html

    Σύντομα θα προσθέσω και άλλα άρθρα, που θα δημοσιευθούν "επίσημα" με την έναρξη διάθεσης του FastInfoset.NET 2 μέχρι τα τέλη του μήνα.

    Αλέξανδρος Φιλίππου
  •  14-10-2006, 17:07 18599 σε απάντηση της 18596

    Απ: η XML είναι λίγο φλύαρη

    Σχόλια

    > Αν παρατηρήσετε το fast infoset είναι 4,87KB ενώ το standard xml 15,3KB.


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

    > Το ερώτημά είναι κατά πόσο το XML είναι standard.

    Το Fast Infoset είναι διεθνές πρότυπο του ITU, είναι στη τελική διαδικασία έγκρισης από το ISO, και είναι η πρόταση της Sun στο EXI του W3C. Η τυποποίηση ξεκίνησε από τους ITU/ISO γιατί το Fast Infoset βασίζεται στο ASN.1 που είναι δικό τους πρότυπο.

    > Βέβαια με μια ξεχωριστή συμπίεση των δυο output αρχείων,fast και standard, παίρνω δυο αρχεία που είναι 702 και 781 bytes αντίστοιχα.

    Χρησιμοποιώντας το GZIP (αυτό είναι το Internet Standard) με επίπεδο συμπίεσης 9 το FI έγγραφο είναι 609 bytes και το XML έγγραφο 712 bytes. (σημείωση: το .NET δεν σας δίνει τη δυνατότητα να θέσετε το επίπεδο συμπίεσης, αλλά μπορείτε με το GZIP που περιέχεται στο FastInfoset.NET 2)

    > Αυτό βέβαια αν μιλάμε για μεταφορά των δεδομένων πάνω από κάποιο δίκτυο. Αν τα θέλουμε αποθηκευμένα και μας ενδιαφέρει η γρήγορη πρόσβαση σε συνδυασμό με το μικρό αρχείο, τότε ίσως το fastinfoset να είναι καλύτερο.

    Το Fast Infoset σχεδιάστηκε αρχικά για χρήση στις επικοινωνίες.

    Γενικότερα περί Fast Infoset

    Το FI είναι ένα binary encoding format εναλλακτικό του text encoding format. Με τη χρήση του FI format επιτυγχάνουμε μικρότερη κωδικοποίηση από αυτή του text format -- και σε λιγότερο χρόνο, σύμφωνα με τις συγκρίσεις ταχύτητας.

    Η συμπίεση είναι ένα ανεξάρτητο και πολύ πιο χρονοβόρο στάδιο απο την κωδικοποίηση της XML. Συχνά η διαδικασία συμπίεσης απαιτεί διπλάσιο ακόμα και τριπλάσιο χρόνο από ότι η κωδικοποίηση. Αν επιθυμούμε να προχωρήσουμε στην προαιρετική συμπίεση του εγγράφου μας τότε αυτή γίνεται ταχύτερα με έγγραφα FI γιατί αυτά είναι μικρότερα από τα αντίστοιχα έγγραφα XML.

    Επιπλέον τα έγγραφα FI+GZIP είναι συνήθως αρκετά μικρότερα από τα έγγραφα XML+GZIP, πολλές φορές ακόμα και κατά 50% μικρότερα.

    Ένα "κρυφό"  όφελος είναι ότι το μικρότερο μέγεθος των εγγράφων FI ή FI+GZIP έναντι των αντίστοιχων XML ή XML+GZIP σημαίνει ότι η και κρυπτογράφησή τους είναι ταχύτερη (για παράδειγμα κατά την επικοινωνία μέσω TLS ή αποθήκευση σε CMS). Έτσι έχουμε επιπλέον μείωση του συνολικού χρόνου επεξεργασίας.

    Συνοψίζοντας, η χρήση του FI οφελεί και στη μείωση του μεγέθους του εγγράφου και στη μείωση του χρόνου κωδικοποίησης. Αν θέλουμε το μικρότερο δυνατό έγγραφο τότε και πάλι το FI+GZIP υπερτερεί του XML+GZIP και σε μέγεθος και σε απαιτήσεις επεξεργαστικής ισχύος.

    Αλέξανδρος Φιλίππου
  •  16-10-2006, 19:16 18645 σε απάντηση της 18599

    Απ: η XML είναι λίγο φλύαρη

    Ανακοινώνουμε πρώτα στους φίλους του dotNetZone.gr τα ακόλουθα εργαλεία για FI:

    FI Converter

    Μετατρέψτε αρχεία XML σε αρχεία FI και το αντίστροφο. Προαιρετικά μπορείτε να συμπιέσετε με GZIP, να αφαιρέσετε τα σχόλια από την XML, και να μορφοποιήσετε κατά τη μετατροπή σε XML.

    FI Viewer

    Δείτε το περιεχόμενο αρχείων FI χωρίς να τα μετατρέψετε.


    Σε μερικές ημέρες έρχεται και το FastInfoset.NET 2.

    Αλέξανδρος Φιλίππου
  •  25-10-2006, 16:41 19211 σε απάντηση της 18645

    Απ: η XML είναι λίγο φλύαρη

    Το FastInfoset.NET Trial v2 είναι διαθέσιμο.

    Αλέξανδρος Φιλίππου
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems