when you hold a hammer
(geeky rant)
Έχει κάτσει εδώ και λίγο καιρό να μελετάω πολύ καλά μια κατανεμημένη εφαρμογή, γιατί πρέπει να της κάνω κάτι καστομιές (custom-ιές). Δυστυχώς δε μπορώ να πω λεπτομέρειες, αλλά πρόκειται για κεντρικό σέρβερ (που τρέχει και το GUI) ο οποίος μιλάει με καμιά δεκαπενταριά κόμβους και μια βάση δεδομένων με πληροφορία της τάξης του ΤΒ (γενικά σε άλλο σέρβερ).
Λοιπόν για μεγάλη μου έκπληξη ανακάλυψα κάπου στα Program Files του κεντρικού κόμβου ένα αρχείο .mdb (MS Access 2000), το οποίο φαίνεται ότι περιέχει ορισμένες ρυθμισούλες για την όλη εφαρμογή. Ουσιαστικά καμιά εικοσιπενταριά ζεύγη
κλειδιού-τιμής(ων). Για παράδειγμα:
{{nodes}, {node1.domain.gr, node2.domain.gr, node3.domain.gr}}
{{user_roles},{admin,executive,guest}}
Πρόκειται δηλαδή για semi-persistent πληροφορίες που το GUI και διάφορα services του κεντρικού κόμβου πρέπει να διαβάζουν/γράφουν πολύ συχνά (ίσως και μερικές δεκάδες φορές για κάθε request) και που δεν είναι πρακτικό να τις έχει στο RDBMS μαζί με το 1ΤΒ των κυρίως δεδομένων.
Προσωπικά όμως αναρωτιέμαι αν ο πρακτικότερος τρόπος να αποθηκεύσεις λιγότερα από 30 ζεύγη κλειδιού-τιμής είναι να ορίσεις σχεδόν ισάριθμες σχέσεις (ας πούμε NODES: node_id as int, node_name as string) στην κάθεμιά από τις οποίες θα αποθηκεύεις το πολύ 5-6 records (στις περισσότερες μόνο 1), κι όλα αυτά σε μια από τις πιο αργές σχεσιακές βάσεις του κόσμου που αντικειμενικά θα ζορίζεται με τις εκατοντάδες ταυτόχρονες αιτήσεις που θα δέχεται (έμμεσα) από τους υπόλοιπους κόμβους. Γιατί αυτό έκαναν τα τυπάκια που έφτιαξαν αυτό το πράγμα.
Οι σχεσιακές βάσεις δεδομένων χρησιμοποιούνται πολύ συχνά σαν μέθοδος αποθήκευσης από Web εφαρμογές και από Desktop εφαρμογές φτιαγμένες με RAD εργαλεία (και τυπικά σε VB, όπου βέβαια η ΒΔ είναι Access. Περιττό να σας πω ότι το GUI της εφαρμογής που ασχολούμαι βρωμάει VB από χιλιόμετρα). Κατά τη γνώμη μου αυτό το πράγμα έχει γενικευτεί τόσο πολύ, που πολλοί προγραμματιστές φαίνεται να έχουν ξεχάσει ότι μια σχεσιακή ΒΔ δεν είναι πάντα η καλύτερη μέθοδος αποθήκευσης. Ούτε από πλευράς επιδόσεων, ούτε από πλευράς προγραμματιστικού φόρτου, ούτε (τελικά) από πλευράς αρχιτεκτονικής κομψότητας.
Στη συγκεκριμένη περίπτωση, έχεις ρε φίλε 25 ζευγαράκια κλειδιού και τιμής. Ε, βάλτα στο Windows Registry. Βάλτα σε μια μη σχεσιακή ΒΔ, όπως η BerkeleyDB. Κάντα serialize με τον πιο πρόχειρο τρόπο και πέτα τα χύμα σε ένα .dat. Ποιος ο λόγος να κάνεις τη ζωή σου δύσκολη; Δηλαδή πραγματικά ρε παιδιά δεν καταλαβαίνω, να κέρδιζε κάτι σε κώδικα, ταχύτητα ή λειτουργικότητα με αυτή την επιλογή ΟΚ, αλλά να το κάνει… από συνήθεια; Σε εφαρμογή με soft real-time constraints που κάνει ένα διάολο λεφτά;
Συμπέρασμα: προγραμματιστές υπάρχουν πολλοί, αλλά προγραμματιστές με στοιχειώδες ταλέντο και αίσθηση του ότι δίνουν εντολές σε ένα πραγματικό μηχάνημα που θέλει μη μηδενικό χρόνο να τις επεξεργαστεί ελάχιστοι.
April 5th, 2007 at 8:26 am
(*Open sourced tools of the trade rant*)
Οταν ακούω εργαλειό RAD βγάζω φουσκάλες. Δυό χρόνια “προγραμμάτιζα” -σκατά προγραμμάτιζα, LEGO συναρμολογούσα- σε μια τέτοια παπαριά. Αυτά τα εργαλεία φτιάχτηκαν με σκοπό να επιτρέπουν στους άσχετους και ημιάσχετους (οικονομικούς θεολόγ^Η^Η^Η^Η^Η^Ηεπιστήμονες, φτηνά παιδάκια που μόλις βγάλανε μια σχολή) με στοιχειώδεις γνώσεις χειρισμού Η/Υ να γράφουν προγράμματα.
Και φυσικά το κάθε σαϊνι εργοδότης αντι να πληρώσει δέκα σοβαρούς παλιούς προγραμματιστές, θα θαμπώσει τον πελάτη με τα “εργαλεία τετάρτης γενεάς” και θα “υλοποιήσει” πρότυπο της εφαρμογής σε χρόνο dt (όσο χρειάζεται μέχρι να παραδώσει την εφαρμογή)- κατα προτίμηση με παιδάκια εκπαιδευόμενα ή με νοικιασμένους εργαζόμενους. Ελα όμως που με το που θα βάλει η βάση ένα μήνα στοιχεία παραγωγής θα αρχίσουν τα μπουκώματα…
(Και μετά έρχεται το συμβόλαιο συντήρησης και οι βελτιώσεις. Εκεί να δεις άρμεγμα- η χαρά του βαμπιροκατασκευαστη εφαρμογών. Συμβουλή: Τα λεφτά δε στα φέρνει η εφαρμογή που τρέχει άψογα, αλλά αυτή που σέρνεται- ειδικά αν δεν μπορούν να κάνουν αλλιώς *χοχοχο…*)
April 5th, 2007 at 8:57 am
Σίγουρα διαβάζονται οι τιμές σε κάθε κλήση; Μήπως τις έχει απλά στη μνήμη και κάνει τις αλλαγές εκεί, ενώ κάθε t λεπτά τα γράφει στο mdb;
Γιατί δε νομίζω ότι η Access (JetEngine ή όπως λέγεται) μπορεί να ικανοποιήσει 100άδες ταυτόχρονες κλήσεις ούτε στο όνειρό του…
Οπότε δες μήπως λειτουργεί κάτι σαν buffer ανάμεσα στο mdb και τα service.
April 5th, 2007 at 10:02 am
γενικά έχεις δίκιο αλλά ηθελα να πω αυτό που είπε ηδη ο Dimitris η access ειναι της πλάκας βασή ..ας την ονομάσουμε εφαρμογή - η οποία ουσιαστικά ειναι single threaded με την εννοια οτι δεν επιτρεπει πολλαπλές κλησεις απο διαφορετικους πελάτες, άρα απλα επειδη ηταν ευκολο να ριξουν ενα control στην φορμα να σεταρουν το connection και να διαβάσουν τις τιμες…δεν το έκαναν με κάποιο property file πχ που μπορει να τους έπαιρνε πιο πολυ ωρα να ανοιξουν το αρχειο να το διαβάσουν ισως να γραψουν νεες τιμές!
April 5th, 2007 at 10:13 am
πιγκουίνε τα είπες όλα.
April 5th, 2007 at 10:32 am
Η penguin_witch με κάλυψε. Πλημμύρισε η Ελλάδα με ημιάσχετους “προγραμματιστές” σαν αυτούς που ανέφερε σε μια συνέντευξη του ο Bjarne Stroustrup:
Και όταν τα πράματα πάνε στραβά (που θα πάνε) χρυσοπληρώνουμε τον κομάντο προγραμματιστή να ξεσκατώσει.
April 5th, 2007 at 11:03 am
Και εδώ, ψάρι, είναι ακριβώς που πιάνει τόπο η μαρξιστική υπεραξία. Έχεις έναν υπαλληλάκο που τον πληρώνεις για λογιστή, τον στέλνεις με επιδοτούμενα σεμινάρια και σου γυρνάει λογιστής και προγράμερ μαζί.
Δύο σε ένα.
Από εκεί βγαίνει το κέρδος.
April 5th, 2007 at 11:05 am
αντέντουμ
Το οποίο κέρδος δεν το βγάζεις απ’ τον πελάτη. Όοοχι. Το βγάζεις από τον ανταγωνιστή, που δεν σκέφτηκε να στείλει τον δικό του κωπηλάτη σε επιδοτούμενα και αναγκάζεται να προσλάβει στη γαλέρα του κανονικό προγράμερ.
April 5th, 2007 at 11:54 am
Μα δε μίλησα για Ελλάδα. Αν μπορούσα να πω το όνομα της εταιρείας και το προϊόν θα παθαίνατε την πλάκα σας.
April 5th, 2007 at 12:00 pm
Αφού πρόκειται για access 2000 τότε, κατά πάσα λογική πιθανότητα, υπάρχουν εγκατεστημένα και τα xml services της ms. Οπότε ακόμα και μέσα από vb6 χωρίς κανένα έξτρα κόπο θα μπορούσε να κάνει τη δουλειά του απλά, γρήγορα και κομψά.
April 5th, 2007 at 12:10 pm
“Μα δε μίλησα για Ελλάδα”
Ναι αλλά ο σχολιασμός έχει την δική του δυναμική. Εσύ το ελεύθερο βολέ κι εμείς πάσες.
April 5th, 2007 at 12:31 pm
Κατ’αρχήν υπάρχουν πολλά θέματα ανοιχτά.
1) Πράγματι εφόσον μιλάμε για key-value attributes ένα BerkeleyDB είναι επιθυμητότερο από ένα .mdb. Αυτό όμως προϋποθέτει να μην έχει VB author, αλλά προγραμματιστή. Το πιο πιθανό είναι πως κάποια στιγμή χρειάστηκε να υλοποιηθεί ο συγκεκριμένος μηχανισμός, έγινε “στα γρήγορα” σαν quιck-hack για να τελειώνουμε και “να το φτιάξουμε μετά” και έμεινε. Εάν δε έφυγε και ο προγραμματιστής που το υλοποίησε, κανένας δεν θα το πειράξει.
2) Το να αποθηκευτούν στο registry οι τιμές είναι ακόμα καλύτερο και από το BerkeleyDB γιατί ο VB author έχει API για να διαβάζει το registry.
3) Φυσικά και μπορείς σε μια βάση του ενός TB να βάλεις και αυτές τις τιμές μέσα και να τις ρωτάει το σύστημα. Φυσικά αυτό σημαίνει πως πρέπει να προσέξεις περισσότερο το indexing και το partitioning της βάσης (γιατί με μεγάλη πιθανότητα υπάρχει locality στα data και δεν ρωτάνε όλοι, όλη την ώρα σε όλο το εύρος του ενός TB - διαφορετικά πρέπει να αλλάξεις εφαρμογή και να χρησιμοποιήσεις Kdb).
4) Το ότι δεν είναι Ελληνική εφαρμογή δεν σημαίνει πως δεν υπάρχουν και μη Ελ με τις ίδιες απόψεις στον κώδικα.
@penguin_witch:
Το παράδειγμα του Θεολόγου με MSc in Computation είναι το πιο συχνό που χρησιμοποιώ κι εγώ!
April 5th, 2007 at 5:15 pm
“Συμπέρασμα: προγραμματιστές υπάρχουν πολλοί, αλλά προγραμματιστές με στοιχειώδες ταλέντο και αίσθηση του ότι δίνουν εντολές σε ένα πραγματικό μηχάνημα που θέλει μη μηδενικό χρόνο να τις επεξεργαστεί ελάχιστοι.”
Και καλά ρε J, τόσα χρόνια στον χώρο, τώρα το συμπεραίνεις;
Έτσι κι αλλιώς αυτό αποτελεί γενικό κανόνα σε όλες τις δουλειές που έχουν μια πολυπλοκότητα πέραν του “Α”.
April 6th, 2007 at 12:11 am
Δικός μας και εσύ λοιπόν…
Κάνω λάθος που μου βρωμάει S.A.P ή είμαι απλά προκατειλλημένος?
Χο χο χο!!
April 7th, 2007 at 3:48 am
Στη δουλειά μου προσέλαβαν έναν νέο προγραμματιστή “ψαγμένο και με εμπειρία” (τα λόγια του manager), και με τον τίτλο του senior. Όλα καλά; Ναι, μέχρι που ανακάλυψα ότι πληρώνεται 1,5 φορά παραπάνω, και δε γνωρίζει βασικά πράγματα.
Πόσο βασικά; Ας πούμε για παράδειγμα, την έννοια του serialization και την υλοποίησή του σε .net (τονίζω τα 4 χρόνια εμπειρίας σε .net περιβάλλον, σε δικτυακό προγραμματισμό και distributed συστήματα).
Ή τον λόγο ύπαρξης των db transactions (αφού έμαθε τι σημαίνει transaction, διαμαρτυρήθηκε με ύφος ειδικού, λέγοντας “μα δε χρειάζεται κάτι τέτοιο, το όλο batch διαρκεί μερικά μόλις msec”).
Ευτυχώς αποχωρώ σύντομα από εκεί, και δε θα υποστώ το μαρτύριο να διορθώνω τις αντοκουμεντάριστες σπαγγέτι (code) μαλακίες, τα undisposed αντικείμενα και την παντελή έλλειψη αρχιτεκτονικής για πολύ ακόμα.
Δεν έχω πρόβλημα με το RAD, αλλά με την α-λα δημοσιουπαλληλική αντιμετώπιση ορισμένων ανθρώπων προς τα εργαλεία αυτά. Μαθαίνει ο δικός σου 2-3 εντολές, και μετά επαναπαύεται, με αποτέλεσμα να καταλήγουμε σε τέτοιες περιπτώσεις: http://worsethanfailure.com/
April 7th, 2007 at 8:30 am
Ναι, μέχρι που ανακάλυψα ότι πληρώνεται 1,5 φορά παραπάνω, και δε γνωρίζει βασικά πράγματα.
Χεχ! Δηλαδή εκεί που εσύ (και εγώ) ασχολείσαι με το να γίνεσαι καλύτερος στη δουλειά σου, ο άλλος ασχολείται με το πως θα φαίνεται καλύτερος.
“μα δε χρειάζεται κάτι τέτοιο, το όλο batch διαρκεί μερικά μόλις msec”
Αγαπητό Borg δεν είσαι μόνος σου:
- Δε μπορώ να καταλάβω γιατί γίνεται τόση φασαρία με τα search engines. Ένα που έφτιαξα χτες στην Access δουλεύει μια χαρά.
April 7th, 2007 at 1:54 pm
Προσπάθησα να το παρακολουθήσω το κείμενο αλλά τελικά ήταν way too geeky for me, but cool
April 7th, 2007 at 4:03 pm
# j95 Says:
April 5th, 2007 at 11:54 am
Μα δε μίλησα για Ελλάδα. Αν μπορούσα να πω το όνομα της εταιρείας και το προϊόν θα παθαίνατε την πλάκα σας.
Σιγά, αγάμητε τραμπάκουλα, μη σε προσέλαβε ο Βασίλης Πύλες να του προγραμματίσεις το καζανάκι της χέστρας…
κάγκουρα…
April 7th, 2007 at 4:57 pm
Κι εσύ μου έλειψες ανώνυμε
April 9th, 2007 at 5:53 am
Χεχ! Δηλαδή εκεί που εσύ (και εγώ) ασχολείσαι με το να γίνεσαι καλύτερος στη δουλειά σου, ο άλλος ασχολείται με το πως θα φαίνεται καλύτερος.
Αυτό δεν είναι ένα από τα προβλήματα της Ελλάδας γενικότερα; Φιγούρα στο maximum, ζαχ… “ουσία” στο μηδέν.
April 11th, 2007 at 11:03 pm
Ο Βριπιδας εχει τιποτα να πει; Ή φοβαται μην αποκαλυψει την αγνοια του;
——–
ΜΗΝΥΜΑ ΠΡΟΣ ΒΡΙΠΙΔΑ
Μαλακα βρηκα γαμω τους τροπους να μην χρησιμοποιουμε GoogleTalk κτλ για να επικοινωνουμε. Απλα θα καθορισουμε ενα μπλογκ (οπως πχ το παρον) και θα αφηνουμε εκει μηνυματα ο ενας στον αλλο. Σε καποια φαση θα συμφωνησουμε και εναν κωδικα ωστε να διασφαλισουμε το απορρητο της επικοινωνιας μας. Πχ:
Ενταξει με τον θειο Σαμ, μαλλον θα παω να δουλεψουμε μαζι.
Καταλαβες ε?
April 16th, 2007 at 1:58 pm
???
April 16th, 2007 at 3:32 pm
Καλα γαμησε το αμα ειναι να καθομαι να στο εξηγω μια ωρα.
Θα σε παρω αργοτερα να σου πω τηλεφωνικως. Ο j το εχει κλεισει σχεδον το μαγαζι οποτε μπορουμε να γραφουμε στους τοιχους μηνυματα ο ενας στον αλλον.
April 16th, 2007 at 3:35 pm
όχι δε μπορείτε.
ρωτήστε και τον άλλον που όταν το παράκανε κάθησα κι έγραψα καμιά 250αριά regexes στο wp-comments-post.php και τώρα όποτε προσπαθεί να ποστάρει το blog του λέει “FUCK OFF”.
April 16th, 2007 at 7:58 pm
Ειναι προφανες πως εχετε μια σχεση αγαπης-μισους εσεις τα δυο. Εμενα τι με βαζετε στην μεση;
April 16th, 2007 at 8:40 pm
Καλα ρε μαστορα, μην απαντας τοοοσο σοβαρα, μια πλακουαρ καμναμε.
Βριπιδη, για αλλη μια φορα δεν ξερεις τι λες, εχεις καταντησει μια αηδια και μιση, για το θεο δηλαδη.
April 16th, 2007 at 10:07 pm
Γυρνα πίσω!!!
April 17th, 2007 at 10:39 am
Άσχετο, αλλά γύρνααα!
April 17th, 2007 at 2:21 pm
με τίποτα.
αρκετά ασχολήθηκα με βλακείες.
April 17th, 2007 at 2:34 pm
Επειδή το έπαιρνες στα σοβαρά. Δεν σου κολλάνε ένσημα εκεί, είναι ok για μια δυο σαχλαμάρες μόνο.
April 17th, 2007 at 3:40 pm
ΜΕΤΑΦΕΡΘΗΚΑΜΕ!
ΤΙ ΚΑΝΕΙ ΕΝΑ ΛΑΘΟΣ ΚΛΙΚ….
Για τεχνικους λόγους που δεν μου δινουν τη δυνατοτητα να μπω στο προηγουμενο μπλογκ, το ιστολογιο μεταφερεται εδω. Το προηγουμενο θα λειτουργει ως αρχείο. Μην αφηνετε σχολια στο προηγουμενο διοτι δεν μπορω να μπω να τα απαντησω.
Αντε κι αλλη φορα να μαθω να παιζω με τα κουμπια!
April 17th, 2007 at 3:44 pm
sorry?
April 17th, 2007 at 4:05 pm
Ρέ Τ. άσε τόν άνθρωπο! Τό ένα έκτο τού χρόνου πού αφιέρωνε εκεί, άν τό στάξει εδώ κι αράξει, θά έχουμε περισσότερα τύπου the-power-of-love…
April 17th, 2007 at 4:15 pm
Εννοείται πως δε θέλω να τον ζαλίσω. Ήθελα απλώς να του δείξω πόσο μας λείπει.
Ευαγγέλαξ, είδες τι τρυφερότητες χάνεις που δεν ανοίγεις τα κομμεντάρια στο μπλογκάκι σου;
April 17th, 2007 at 6:10 pm
πλάκα έχετε!
(όχι όλοι :P)
April 17th, 2007 at 10:41 pm
Re filaraki, an den evaze to Access, mporei na xanontoysan kapoia fraga gia th microsoft kai kati mizes apo toys paparhdes poy oysiastika symperilavane third-party software (Access) mesa sth paparia poy ftiaksane. Oysiastika ftiaksane ena “licence” parapanw gia th microsoft.
ZHTW TO OPEN SOURCE !
ZHTWWWWW !
April 18th, 2007 at 9:23 am
Εγώ τίς χάνω; Σιγά μήν παίρναν απόφαση νά μετακυλισθούν σέ σχόλια άλλου βλόγ!
April 20th, 2007 at 10:49 pm
@Mastoyras:
Μη μας κάνεις να γελάμε με απλοϊκούς υπολογισμούς. Εφόσον μιλάμε για μια εφαρμογή που διαχειρίζεται / διακινεί 1TB, τότε μιλάμε για μια εφαρμογή που έχει κόστος ~100Κ Euro. Τι είναι αυτό που σε κάνει να πιστεύεις πως η Microsoft βγάζει λεφτά από την Access στη συγκεκριμένη εφαρμογή και όχι από τα υπόλοιπα;
(Άσε που με την υπόθεση πως η εφαρμογή τρέχει στη SQL Server, η Access έχει δοθεί δωρεάν).
April 22nd, 2007 at 6:42 pm
ρε penguin witch kai χ, πολυ κομπλεξ βγαλατε….μπας και ειστε στο κκε??εγω ηλεκτρονικος ειμαι και ξερω c kai assembly, πρεπει ο εργοδοτης μου να προσλαβει πληροφορικαριο για να προγραμματιζει τους μικροεπεξεργαστες?οεο?
April 23rd, 2007 at 12:25 am
@mekanixz:
Και όλοι στις μέρες μας είναι γιατροί επίσης και κάνουν διαγνώσεις εκ του προχείρου με βάση τον πόνο που δηλώνει ο ασθενής. Σου προτείνω να βρεις τη συνέχεια του ρητού που χρησιμοποίησε για τίτλο ο j95 (when you hold a hammer …) και να τη σκεφτείς.
April 23rd, 2007 at 5:39 pm
@adamo
καλα,αμα ειναι να το χεσουμε το ζητημα τι να σου πω…
αμα σου καει μια λαμπα φωναξε ηλεκτρολογο….
Με πτυχιο τουλαχιστον ΤΕΙ,αμ πως,οχι προχειροδουλειες….
Να σου κανει και διατριβη για το πως θα την αλλαξει….
ημαρτον…..
April 23rd, 2007 at 7:13 pm
@mekanixz:
Είμαι ο εντελώς λάθος άνθρωπος για το παράδειγμά σου.
December 23rd, 2007 at 5:19 pm
Γεια σου φιλε μου!
Λοιπον νομιζω οτι εισαι αυτος που ψαχνω.
Θελω αν γινεται να μου δωσεις λιγα απο τα φωτα σου!
Πριν λιγες μερες εκανα format στο PC μου. Εκανα ομως μια βλεκεια. ΤΗΝ ΒΛΑΚΕΙΑ! Πηγα να κανω το φορματ στον εξωτερικο μου δισκο που εχω το αρχειο μου. Ετσι λοιπον στο μενου του format πατησα το L για διαγραφη του χωρου και C για δημιουργια. Μετα ειδα το λαθος μου και εκανα το format στον αλλο σκληρο. Τωρα δεν μου ανοιγει φυσικα ο εξωτερικος και τον βλεπει σαν αδιαμορφωτο.
Μπορω να τον επαναφερω? Προσπαθησα με μερικα προγραμματακια αλλα δεν τα καταφερα. Εγω φταιω παντως. Ξερεις αν τον παω σε καποιο μαγαζι αν θα με εξυπηρετησουν? Προτεινεις καπου?
Ευχαριστω προκαταβολικα
October 29th, 2008 at 1:51 pm
bingo free no download…
onanism formed wrath tariffs.exalted …