nikolaos_ Δημοσ. 22 Μαρτίου 2015 Δημοσ. 22 Μαρτίου 2015 Εγώ χρειάστηκε να μπω στη wikipedia για να δω τι είναι η skip list και ειλικρινά δεν βρίσκω κανέναν λόγο να υλοποιηθεί. Απλά επειδή η skip list είναι μια δομή που τηρεί ταυτόχρονα και την αρχική ακολουθία και διάφορες υπακολουθίες, αισθάνεται ότι "θα του χρησιμεύσει". Ενώ σε μια βάση δεδομένων το πολύ να βάλει ακόμη έναν index.
lion2486 Δημοσ. 22 Μαρτίου 2015 Μέλος Δημοσ. 22 Μαρτίου 2015 Και κει που νόμισα ότι έχω καταλάβει κάπως... Τελικά το πρόβλημα είναι η πολυπλοκότητα του προγράμματος ή ότι δεν τρέχει αρκετά γρήγορα; Αν είναι το πρώτο τότε γιατί π.χ. τρώγεσαι με skip lists; Και γιατί skip list που είναι σχετικά "εξωτική" data structure και όχι κάτι απλούστερο; Και αυτά πας να τα κάνεις μόνος σου ή υπάρχουν έτοιμα σε κάποιο library? Αισθάνομαι ότι δεν έχω καταλάβει απολύτως τίποτα. Εγώ χρειάστηκε να μπω στη wikipedia για να δω τι είναι η skip list και ειλικρινά δεν βρίσκω κανέναν λόγο να υλοποιηθεί. Απλά επειδή η skip list είναι μια δομή που τηρεί ταυτόχρονα και την αρχική ακολουθία και διάφορες υπακολουθίες, αισθάνεται ότι "θα του χρησιμεύσει". Ενώ σε μια βάση δεδομένων το πολύ να βάλει ακόμη έναν index. Η ιδέα μου για την skip List ήταν λίγο γενική, αλλά δεν βρήκα κάποια άλλη δομή που να μου δίνει ιδιότητες που χρειάζομαι, και δεν ξέρω αν υπάρχει. @defacer, συγνώμη για την πολυπλοκότητα της κουβέντας μας, αλλά τελικά ξανάγραψα τα πάντα από την αρχή, πιο ξεκάθαρα, με πίνακες και αντικείμενα, πιστεύω ότι τα λάθη που βγήκαν μετά είναι λόγω των δεδομένων, αλλά θα χρειαστεί να τα κοιτάξω ξανά, και τελικά ο χρόνος εκτέλεσης και η μνήμη που καταναλώνεται τώρα είναι στα όρια (χρειάστηκε να ανεβάσω τα όρια μνήμης στην τοπική εγκατάσταση για δοκιμές).
nikolaos_ Δημοσ. 23 Μαρτίου 2015 Δημοσ. 23 Μαρτίου 2015 Δεν καταλαβαίνω γιατί ψάχνεσαι με την skip list ή την μαγική δομή "με τις ιδιότητες που χρειάζεσαι", διότι δεν έχει νόημα να ψάχνεις για λύση προτού να έχεις περιγράψει ποιο είναι το πρόβλημα. Ειδικά με τις δομές δεδομένων, αλλά κι ένα σωρό άλλα προγραμματιστικά εργαλεία, έχουν υλοποιηθεί σε βιβλιοθήκες - ακόμη και του λειτουργικού συστήματος, οπότε ενδεχομένως το να υλοποιείς εσύ μόνος "ξαναγράφοντας" τέτοιες δομές είναι σαν να προσπαθείς να ξαναανακαλύψεις τον τροχό και μάλιστα λιγότερο αποδοτικά, καταναλώνοντας μνήμη ας πούμε. Όπως είπα για την skip list, όπου υποτίθεται ότι θέλεις πρόσβαση τόσο στο σύνολο της ακολουθίας, όσο και σε υπακολουθίες, αυτό μπορεί να είναι πονοκέφαλος προγραμματιστικά, ενώ ας πούμε μια SQL εντολή SELECT * FROM ... WHERE x=criterion, βρίσκει συντομότατα το κατάλληλο υποσύνολο των αποτελεσμάτων που χρειάζεσαι κάθε τόσο από όλο το σύνολο. Αλλά δεν έχει νόημα ένα τέτοιο παράδειγμα αν δεν έχουμε μια περιγραφή του προβλήματος. Σε μια εποχή που τα GB μνήμης είναι στραγάλια, εύκολα υποψιάζεται κανείς ότι κάτι γίνεται με λάθος τρόπο (π.χ. φορτώνονται όλα τα δεδομένα στη μνήμη για να ενημερωθούν μερικές εγγραφές) όταν ακούει ότι "καταναλώνεται στα όρια".
mad-proffessor Δημοσ. 23 Μαρτίου 2015 Δημοσ. 23 Μαρτίου 2015 Δεν είμαι sql expert αλλά το πρόβλημα σου μου κανει για κλασσική περίπτωση που πρέπει να γίνει normalιzation στο σχήμα της βάσης και θα βρείς άκρη με views, temporary tables (που πρότειναν κ οι άλλοι) ή με καμια function
PC_MAGAS Δημοσ. 23 Μαρτίου 2015 Δημοσ. 23 Μαρτίου 2015 Δίνεις ένα Sample του αρχείου.txt σε τί μορφή είναι σε csv;
lion2486 Δημοσ. 24 Μαρτίου 2015 Μέλος Δημοσ. 24 Μαρτίου 2015 Δεν καταλαβαίνω γιατί ψάχνεσαι με την skip list ή την μαγική δομή "με τις ιδιότητες που χρειάζεσαι", διότι δεν έχει νόημα να ψάχνεις για λύση προτού να έχεις περιγράψει ποιο είναι το πρόβλημα. Ειδικά με τις δομές δεδομένων, αλλά κι ένα σωρό άλλα προγραμματιστικά εργαλεία, έχουν υλοποιηθεί σε βιβλιοθήκες - ακόμη και του λειτουργικού συστήματος, οπότε ενδεχομένως το να υλοποιείς εσύ μόνος "ξαναγράφοντας" τέτοιες δομές είναι σαν να προσπαθείς να ξαναανακαλύψεις τον τροχό και μάλιστα λιγότερο αποδοτικά, καταναλώνοντας μνήμη ας πούμε. Όπως είπα για την skip list, όπου υποτίθεται ότι θέλεις πρόσβαση τόσο στο σύνολο της ακολουθίας, όσο και σε υπακολουθίες, αυτό μπορεί να είναι πονοκέφαλος προγραμματιστικά, ενώ ας πούμε μια SQL εντολή SELECT * FROM ... WHERE x=criterion, βρίσκει συντομότατα το κατάλληλο υποσύνολο των αποτελεσμάτων που χρειάζεσαι κάθε τόσο από όλο το σύνολο. Αλλά δεν έχει νόημα ένα τέτοιο παράδειγμα αν δεν έχουμε μια περιγραφή του προβλήματος. Σε μια εποχή που τα GB μνήμης είναι στραγάλια, εύκολα υποψιάζεται κανείς ότι κάτι γίνεται με λάθος τρόπο (π.χ. φορτώνονται όλα τα δεδομένα στη μνήμη για να ενημερωθούν μερικές εγγραφές) όταν ακούει ότι "καταναλώνεται στα όρια". Ναι λογικά μου ακούγονται αυτά που λες, αλλά αμα βρεις μια αρχή με μια βολική δομή δεδομένων, τότε αρχίζουν όλα και ξεκαθαρίζουν, και είπα ας ψαχτώ λίγο.. Δεν είμαι sql expert αλλά το πρόβλημα σου μου κανει για κλασσική περίπτωση που πρέπει να γίνει normalιzation στο σχήμα της βάσης και θα βρείς άκρη με views, temporary tables (που πρότειναν κ οι άλλοι) ή με καμια function Λογικά, όπως μου έχουν προτείνει και πολλοί παραπάνω, συνδυάζοντας και τις ανέσεις/λειτουργίες της βάσης θα με βοήθαγε.. Δίνεις ένα Sample του αρχείου.txt σε τί μορφή είναι σε csv; Είναι τιμές χωρισμένες με tab (\t), τα κάνω split() και χρησιμοποιώ τα στοιχεία που θέλω.. (αφού τα μετατρέψω πρώτα..)
PC_MAGAS Δημοσ. 24 Μαρτίου 2015 Δημοσ. 24 Μαρτίου 2015 Μπορείς μήνας ημέρα ώρα να είναι ένα timestamp (Είτε Unix είτε Όχι). Μπορείς με Relational DB να το κάνεις Με τους εξής πίνακες: Εξοπλισμος, Περιοχή, Μετρήσεις Οι μετρήσεις θα έχουν τα εξής πεδία: id,value,eksoplismos_id,perioxi_id Όπου eksoplismos_id Foreign Key του Εξοπλισμος, perioxi_id Foreign Key του Εξοπλισμος
nikolaos_ Δημοσ. 24 Μαρτίου 2015 Δημοσ. 24 Μαρτίου 2015 Είναι τιμές χωρισμένες με tab (\t), τα κάνω split() και χρησιμοποιώ τα στοιχεία που θέλω.. (αφού τα μετατρέψω πρώτα..) Μακάρι να είχα tsv αρχεία κι εγώ. Εγώ συλλέγω κάπου 100.000 μικρά μηνύματα ASCII σκόρπια κάθε μέρα τα οποία δεν έχουν συγκεκριμένη μορφή csv ή tsv, μόνο μια σχετική τυποποίηση αλλά κάθε μέρα έχω 2-5% εσφαλμένα από την πηγή τους.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα