<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47663.aspx</link><pubDate>Fri, 16 Jan 2009 03:25:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47663</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47663.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47663</wfw:commentRss><description>&lt;P&gt;H αλήθεια είναι ότι γλύτωσες από ένα αρχικό κόστος που αφορά στις άδειες χρήσης, ωστόσο για ένα σύστημα σαν αυτό που περιγράφεις, με ρυθμό ανάπτυξης 4GB/2μηνο, έχω την εντύπωση ότι το TCO (total cost of ownership) τελικά θα είναι αρκετά μεγάλο, τόσο που το κόστος ας πούμε της Workgroup έκδοσης που είναι φθηνή και δεν έχει περιορισμό θα είναι μερικές κλίμακες μικρότερο. 1500$ που κοστίζει χονδρικά ένας SQL Server Standard edition (και μιλάω για retail και όχι ευκαιρίες τύπου ειδικά προγράμματα, κλπ), είναι&amp;nbsp;χονδρικά ένας μισθός για έναν DBA που θα απαιτείται να προσέχει τη βάση, άπαξ αυτή μεγαλώσει αρχικά και θα πρέπει να τηρούνται διαδικασίες backup/restore, indexing, κλπ. Μην παρεξηγήσεις ό,τι γράφω, απλά πολλές φορές το κόστος των αδειών χρήσης, στην πορεία του χρόνου, είναι ένα κλάσμα του κόστους του infrastructure. Θα πρέπει να συνυπολογίσεις τα features του προϊόντος που μπορούν να σου δώσουν performance και scalability.&amp;nbsp;Άσχετα αν θα επιλέξεις SQL Server ή MySQL,&amp;nbsp;καλό είναι να εξετάσεις τι παραπάνω σου δίνουν οι εκδώσεις που έπονται των free.&lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47657.aspx</link><pubDate>Fri, 16 Jan 2009 00:50:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47657</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47657.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47657</wfw:commentRss><description>Το ότι ο Connector της ίδιας της MySQL δεν παίζει ωραία με BLOB δεν σημαίνει ότι είναι για πέταμα η ίδια η βάση! Εδώ είναι που λένε Throwing out the baby with the bathwater! &lt;br&gt;Η απλούστερη λύση είναι να αγοράσεις το dotConnect της DevArt. Αν δεν θέλεις να το χρησιμοποιήσεις ίσως να υπάρχουν άλλοι μηχανισμοί για να πετύχεις αυτό που θες. Όπως σου είπε και ο Μάνος δεν είμαστε και οι ειδικοί στη MySQL. Απ' ότι βλέπω μπορείς να χρησιμοποιήσεις string manipulation functions με text πεδία. Θα μπορούσες π.χ. να χρησιμοποιήσεις την INSERT για να εισάγεις ένα μικρό string μέσα σε ένα πεδίο text. Τουλάχιστον έτσι γλυτώνεις να τραβήξεις τα δεδομένα στον client και να τα ξαναστείλεις στον server.&lt;br&gt;&lt;br&gt;Αν όμως ο χειρισμός των blob είναι σημαντικός και δεις ότι δεν υπάρχει επαρκής υποστήριξη τότε ναι, αξίζει να κοιτάξεις άλλη βάση.&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47653.aspx</link><pubDate>Fri, 16 Jan 2009 00:17:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47653</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47653.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47653</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Τι εννοείς όταν λες "με τους περιορισμούς του";&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Εννοώ τον περιορισμό στον όγκο της βάσης (4GB εάν θυμάμαι καλά).&lt;br&gt;Αυτός ήταν ένας από τους λόγους που επέλεξα MySQL.&lt;br&gt;&lt;br&gt;Η εφαρμογή έχει σχεδιαστεί μεταξύ άλλων να αποθηκεύει περίπου 2100 records το λεπτό σε table 8 αριθμητικών πεδίων. Με πρόχειρο υπολογισμό με τον SQL Server θα είχα δεδομένα περίπου για 2 μήνες και το ζητούμενο είναι τουλάχιστον για ένα έτος.&lt;br&gt;&lt;br&gt;Και για να σε προλάβω, υπάρχει σοβαρός λόγος που η βάση πρέπει να είναι ΜΙΑ και δεν μπορώ να την "σπάσω" έτσι ώστε να κερδίσω σε χώρο.&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47652.aspx</link><pubDate>Thu, 15 Jan 2009 23:23:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47652</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47652.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47652</wfw:commentRss><description>&lt;P&gt;No such thing as free lunch λένε οι Άγγλοι...&lt;/P&gt;
&lt;P&gt;Τι εννοείς όταν λες "με τους περιορισμούς του";&lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47651.aspx</link><pubDate>Thu, 15 Jan 2009 22:56:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47651</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47651.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47651</wfw:commentRss><description>Δηλαδή εάν κατάλαβα καλά ή pay ή Sql Server Express (με τους περιορισμούς του).&lt;br&gt;Θα εκτιμηθούν ιδιαίτερα τα λεγόμενά σας, ελπίζω να μην έχω άλλες εκπλήξεις από τις δυνατότητες του MySQL ADO Connector.&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47648.aspx</link><pubDate>Thu, 15 Jan 2009 22:06:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47648</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47648.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47648</wfw:commentRss><description>&lt;P&gt;Δεν έθεσες δύσκολη ερώτηση, απλά έπεσες στην ημέρα που ετοίμαζα την ομιλία για το DotNetZone event! &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt; Εξάλλου μη νομίζεις ότι είμαι και ειδικός σε MySQL. Δεν την έχω δουλέψει ΠΟΤΕ. Απλά έψαξα στο site της MySQL για τις απαντήσεις. Από την άλλη, έχω δουλέψει με GIS οπότε ... μυρίστηκα τί μπορεί να συνέβαινε στην αρχική ερώτηση. Οι ερωτήσεις που κάνεις αφορούν όλες τις βάσεις και providers, το θέμα κάθε φορά είναι αν το κάνει και πως το κάνει μία βάση.&lt;/P&gt;
&lt;P&gt;Στα longtext, longblob τώρα. Έχεις δίκιο ότι χρειάζεται κάτι άλλο πέρα από το διάβασε τα όλα, γράψε τα όλα. O provider για SQL Server περιέχει την κλάση SqlBinary με την οποία μπορείς να προσθέσεις/τροποποιήσεις bytes αλλά και να ανοίξεις ένα stream πάνω στο blob. Την ίδια τακτική ακολουθούν και όσοι άλλοι providers έχουν αυτή τη δυνατότητα. Ο MySQL Connector .... δεν την έχει. Όπως λένε σε άπταιστα μαρκετίστικα "Has no special requirements to read/write blob data". Με άλλα λόγια, no streaming.&lt;/P&gt;
&lt;P&gt;Ευτυχώς, υπάρχουν άλλοι providers οι οποίοι το κάνουν. Δες το &lt;A href="http://www.devart.com/dotconnect/mysql/"&gt;dotConnect for MySQL της Devart&lt;/A&gt;, το οποίο έχει τις κλάσεις MySqlBlob και MySqlText για να χειριστεί blob και text αντίστοιχα. Και υποστηρίζει και EF, Linq to MySQL. &lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47646.aspx</link><pubDate>Thu, 15 Jan 2009 21:23:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47646</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47646.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47646</wfw:commentRss><description>&lt;P&gt;Δύσκολα όχι, ωστόσο η ερώτησή σου αφορά σε&amp;nbsp;MySQL που δεν είναι μέσα στο ...scope των γνώσεων που έχουν οι περισσότεροι χρήστες εδώ. Περισσότερες πιθανότητες έχεις να βρεις απάντηση σε κάποιο forum σχετικό με MySQL.&lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47645.aspx</link><pubDate>Thu, 15 Jan 2009 21:01:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47645</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47645.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47645</wfw:commentRss><description>Μάλλον τώρα έθεσα δύσκολα ερωτήματα, ευχαριστώ πάντως για τις απαντήσεις.&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47624.aspx</link><pubDate>Wed, 14 Jan 2009 22:31:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47624</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47624.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47624</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Παναγιώτης Καναβός:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="background-color:transparent;font-family:Courier New;color:black;font-size:11px;font-weight:normal;"&gt;&lt;font size="2" face="Tahoma"&gt;Ή, αν θες να ελευθερώσεις τη σύνδεση με τη βάση όσο γίνεται γρηγορότερα, να τα αποθηκεύσεις προσωρινά σε ένα string array και μετά να κάνεις το parsing.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Τελικά αυτή ήταν η καλύτερη λύση.&lt;br&gt;Αποθηκεύω όλες τις πληροφορίες σε άνα string longtext στην βάσης με λογική σειρά και φορτώνω τα στοιχεία κατά την εκκίνηση του προγράμματος.&lt;br&gt;Επίσης οτιδήποτε αλλαγή κάνω στα στοιχεία φιλτραρω και στελνω για αλλαγή μόνο τα συγκεκριμένα και έτσι έχω ταχύτητα και στην αποθήκευση (δεν έχω ολοκληρώσει ακόμη αυτήν την δυνατότητα - εξηγώ παρακάτω).&lt;br&gt;&lt;br&gt;Το μόνο που αντιμετωπίζω σαν πρόβλημα (εάν μπορεί να ειπωθεί έτσι) είναι ότι όταν θέλω να ενημερώσω το πεδίο longtext το δίνω πάλι όλο μαζί, υπάρχει τρόπος να προσθέσω στοιχεία?&lt;br&gt;π.χ εάν έχω πλήθος χαρακτήρων 300.000 και θέλω να προσθέσω ένα χαρακτήρα ακόμη να δώσω μόνο τον χαρακτήρα αυτό να κάνω δηλαδή add στο πεδίο της MySQL Database, αυτή την στιγμή ξαναδίνω όλους τoυς χαρακτήρες (300.001).&lt;br&gt;&lt;br&gt;Τα στοιχεία που αποθηκεύω είναι ΜΟΝΟ αριθμοί, τα αλφαριθμητικά πεδία φορτώνονται από πίνακα βάση των ids, θέλω να ρωτήσω εάν ο τύπος πεδίου longtext είναι καλύτερος από τον τύπο longblob (στην συγκεκριμένη περίπτωση) σε θέματα ταχύτητας και εάν μπορώ να κάνω συμπίεση των δεδομένων?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47613.aspx</link><pubDate>Wed, 14 Jan 2009 04:55:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47613</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47613.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47613</wfw:commentRss><description>&lt;P&gt;Ρίξε μία ματιά στα &lt;A href="http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html"&gt;spatial extensions &lt;/A&gt;της My SQL και ιδιαίτερα στο &lt;A href="http://dev.mysql.com/doc/refman/5.0/en/using-a-spatial-index.html"&gt;παράδειγμα χρήσης spatial indexes&lt;/A&gt;. Η MySQL υποστηρίζει τις &lt;A href="http://dev.mysql.com/doc/refman/5.0/en/opengis-geometry-model.html"&gt;κλάσεις&lt;/A&gt; του OpenGIS, δηλαδή Point, Curve, Polygon κλπ καθώς και &lt;A href="http://dev.mysql.com/doc/refman/5.0/en/relations-on-geometry-mbr.html"&gt;functions&lt;/A&gt; όπως η MBRContains, MBRIntersects κλπ. Επιπλέον, αν χρησιμοποιείς MyISAM μπορείς να δημιουργήσεις &lt;A href="http://dev.mysql.com/doc/refman/5.0/en/optimizing-spatial-analysis.html"&gt;spatial indexes&lt;/A&gt; βασισμένα σε R-Trees για να επιταχύνεις τις αναζητήσεις. Έτσι μπορείς να εκτελέσεις εντολές όπως η παρακάτω για να πάρεις όλα τα σχήματα που περιέχονται σε ένα πολύγωνο:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;mysql&amp;gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;SET&lt;/SPAN&gt; @poly =&lt;BR&gt;-&amp;gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;'Polygon((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))'&lt;/SPAN&gt;;&lt;BR&gt;mysql&amp;gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;SELECT&lt;/SPAN&gt; fid,AsText(g) &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;FROM&lt;/SPAN&gt; geom &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;WHERE&lt;/SPAN&gt;&lt;BR&gt;-&amp;gt; MBRContains(GeomFromText(@poly),g);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;FONT size=2 face=Tahoma&gt;Στην δική σου περίπτωση θα έπρεπε να χρησιμοποιήσεις μάλλον την MBRIntersects για να φορτώσεις τα αντικείμενα που τέμνονται από το παράθυρο της εφαρμογής σου και όχι μόνο όσα περιέχονται πλήρως. Με τον τρόπο αυτό θα φορτώσεις μόνο τα σχήματα που χρειάζεσαι. Αν χρειαστεί να κάνεις zoom in δεν θα χρειαστεί να ξαναφορτώσεις τα αντικείμενα. Αν κάνεις zoom out υποθέτω ότι θα μπορούσες να χρησιμοποιήσεις ένα συνδυασμό Contains στο νέο παράθυρο και Not Contains στο παλιό για να φορτώσεις πάλι μόνο τα επιπλέον αντικείμενα. Δεν είμαι σίγουρος όμως αν αυτό όντως γίνεται ή αν θα ήταν γρηγορότερο από το να φορτώσεις απλά όλα τα αντικείμενα ξανά. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;FONT size=2 face=Tahoma&gt;Ίσως μάλιστα ο ποιό γρήγορος τρόπος να είναι να φορτώσεις τα πάντα στη μνήμη και μετά να κάνεις queries κάθε φορά που γίνεται zoom ή click για να βρεις τα ID και μόνο των σχημάτων που σε ενδιαφέρουν! Αν για παράδειγμα έχεις λίγα πολύγωνα με πολλά σημεία, είναι πολύ πιο γρήγορο να διαβάσεις τα λίγα ID από τη βάση παρά τα πολλά σημεία ένα-ένα&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;FONT size=2 face=Tahoma&gt;Από εκεί και πέρα, αφού επιλέξεις τα σχήματα που χρειάζεσαι ο γρηγορότερος τρόπος είναι να χρησιμοποιήσεις ένα DataReader για να τα φορτώσεις γραμμή-γραμμή χωρίς περαιτέρω επεξεργασία. Δεν είμαι σίγουρος πως θα φέρει τα σχήματα ο .NET adapter που χρησιμοποιείς, αλλά σίγουρα μπορείς να τα επιστρέψεις ως string μέσω της AsText και μετά να τα κάνεις parse. Ή, αν θες να ελευθερώσεις τη σύνδεση με τη βάση όσο γίνεται γρηγορότερα, να τα αποθηκεύσεις προσωρινά σε ένα string array και μετά να κάνεις το parsing.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47611.aspx</link><pubDate>Wed, 14 Jan 2009 02:53:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47611</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47611.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47611</wfw:commentRss><description>Πρόκειται για GIS εφαρμογή και οι πληροφορίες που αποθηκεύω αναφέρονται σε συντεταγμένες, Line, Polygon, Shape.&lt;br&gt;Τα δεδομένα από την μνήμη φιλτράρονται ανάλογα με το επίπεδο του zoom που θέλω να εμφανίσω. Η εμφάνιση του σχεδίου στο πρόγραμμα δεν καθυστερεί καθόλου διότι τα στοιχεία είναι στη μνήμη και με κατάλληλο αλγόριθμο εμφανίζονται πολύ γρήγορα.&lt;br&gt;&lt;br&gt;Το πρόβλημα είναι μέχρι να πάνε στην μνήμη.&lt;br&gt;&lt;br&gt;Ο τρόπος που αποθηκεύω τα δεδομένα στην βάση MySQL είναι με μορφή int ή long και δεν υπάρχει πρόβλημα στην ταχύτητα αναζήτησης.&lt;br&gt;&lt;br&gt;Μπορείς να γίνεις πιο σαφής στα spatial indexes και spatial δεδομένα?&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47610.aspx</link><pubDate>Wed, 14 Jan 2009 02:23:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47610</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47610.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47610</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Dataman:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;οι εγγραφές αυτές είναι συντεταγμένες ενός διανυσματικού σχεδίου&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Τί είδους σχέδιο? Τα σημεία είναι ανεξάρτητα μεταξύ τους είναι χρησιμοποιείς σχήματα, π.χ. πολύγωνα και γραμμές? Η MySQL έχει υποστήριξη για spatial types οπότε θα μπορούσες να το εκμεταλλευτείς. Είναι πολύ σημαντικό σε μία εφαρμογή απεικόνισης, είτε πρόκειται για GIS είτε για άλλο είδος εφαρμογής, να εμφανίζεις μόνο τα στοιχεία που χρειάζονται. Αν χρησιμοποιείς πολύγωνα μπορείς να χρησιμοποιήσεις spatial queries για να δείξεις μόνο τα σχήματα τα οποία φαίνονται στο "παράθυρο" της εφαρμογής κάθε φορά και όχι ολόκληρο το σχέδιο. Αν έχεις μόνο σημεία, π.χ. συντεταγμένες από GPS, αρκεί να φτιάξεις ένα index για τις δύο συντεταγμένες και να χρησιμοποιήσεις range queries.&lt;br&gt;&lt;br&gt;Το άλλο σημείο που πρέπει να προσέξεις είναι ότι δεν αρκεί να φορτώσεις τα σημεία στη μνήμη. Όπως καθυστερεί το φόρτωμα του σχεδίου από τη βάση χωρίς spatial indexes, έτσι θα καθυστερήσει και η σχεδίαση του αν πρέπει κάθε φορά να ανατρέχεις ολόκληρο τον πίνακα για να επιλέξεις τα σημεία που θα σχεδιάσεις. Θα πρέπει να χρησιμοποιήσεις κάποια διαφορετική δομή όπως quadtrees για να βρεις γρήγορα τα σχήματα που πρέπει να σχεδιάσεις. Μία αναζήτηση στο codeplex επιστρέφει αρκετές βιβλιοθήκες για spatial δεδομένα, όπως π.χ. το Sharpmap αν και τα περισσότερα projects αφορούν SQL Server 2008.&lt;br&gt;&lt;br&gt;Χωρίς να ξέρουμε τί θέλεις να κάνεις δεν μπορούμε να σου πούμε ότι χρειάζεσαι ή όχι το Sharpmap, το GeoAPI.NET ή .... την OpenGL. Υπάρχουν πολλών ειδών εφαρμογές οι οποίες δουλεύουν με διανύσματα όπως αρχιτεκτονικά σχέδια, παιχνίδια και GIS. Η κάθε κατηγορία έχει διαφορετικές απαιτήσεις και αρκετές έτοιμες βιβλιοθήκες. Θα πρέπει να μας πεις τί θέλεις να κάνεις για να μπορέσουμε να σε βοηθήσουμε.&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47608.aspx</link><pubDate>Wed, 14 Jan 2009 01:56:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47608</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47608.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47608</wfw:commentRss><description>&lt;P&gt;Αν τα δεδομένα τα διαβάζεις &lt;STRONG&gt;όλα&lt;/STRONG&gt; όταν ξεκινάει η εφαρμογή, στην συνέχεια τα επεξεργάζεσαι στην &lt;STRONG&gt;μνήμη&lt;/STRONG&gt; και πριν κλείσει η εφαρμογή τα &lt;STRONG&gt;σώζεις&lt;/STRONG&gt; όλα και σε ενδιαφέρει η ταχύτητα τότε προσωπικά θα χρησιμοποιούσα Flat File και όχι κάποια βάση. Τώρα αν υπάρχουν και άλλα από πίσω τα οποία δεν έχεις αναφέρει ακόμα, όπως π.χ αναζήτηση, ταξινόμηση, διαγραφή τότε μείνε στην βάση&amp;nbsp;και συμβιβάσου με την ταχύτητα που έχεις. Αν περιμένει πολύ ο χρήστης μέχρι να φορτωθούν τα δεδομένα και το UI&amp;nbsp;δεν ανταποκρίνεται, δημιούργησε και ένα Thread που να φορτώνει τα δεδομένα. &lt;/P&gt;
&lt;P&gt;Αλλά αν το σενάριο&amp;nbsp;είναι απλό και η ταχύτητα για εμένα είναι το παν θα προτιμούσα flat file για αποθηκευτικό μου χώρο.&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47607.aspx</link><pubDate>Wed, 14 Jan 2009 00:34:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47607</guid><dc:creator>Dataman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47607.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47607</wfw:commentRss><description>Βασικά είναι 100.000 και όχι 1.000.000 (λάθος πληκτρολόγησης το διόρθωσα), οι εγγραφές αυτές είναι συντεταγμένες ενός διανυσματικού σχεδίου και πρέπει να φορτώνονται όλες κατά την εκκίνηση της εφαρμογής και να είναι σε πίνακα διότι επεξεργάζονται αργότερα.&lt;br&gt;&lt;br&gt;Αυτή την στιγμή είναι αποθηκευμένες σε πίνακα σε MySQL, αλλά όπως είπα δεν με ενδιαφέρει που θα αποθηκεύονται και με ποιον τρόπο. &lt;br&gt;Εξάλου ο τρόπος αποθήκευσης θα επιλεγχθεί με κριτήριο την γρήγορη ενημέρωση του πίνακα.&lt;br&gt;</description></item><item><title>Απ: Γρήγορη ανάκτηση δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47606.aspx</link><pubDate>Wed, 14 Jan 2009 00:25:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47606</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47606.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=47606</wfw:commentRss><description>Φόρτωμα από που&amp;nbsp; και γιατί θέλεις να κρατάς 1,000,000 εγγραφές στη μνήμη και μάλιστα σε πίνακα? Υπάρχει περίπτωση ο ένας και μοναδικός χρήστης της desktop εφαρμογής να χρειαστεί και το ένα εκατομμύριο εγγραφές ?&lt;br&gt;</description></item></channel></rss>