drumforhim Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Θα ήθελα να ρωτήσω τη γνώμη σας για τη συγκεκριμένη τεχνολογία. Έχω διαβάσει κάποια άρθρα σχετικά, αλλά δεν ξέρω τι γίνεται στην Ελλάδα σε σχέση με το θέμα αυτό. Θέλω να πω χρησιμοποιείται καθόλου; Διάβασα ότι το facebook,twitter,netflix και άλλοι τη χρησιμοποιούν διότι είναι πολύ πιο γρήγορη η ανάγνωση των δεδομένων και αποδίδει πολύ όταν πολλοί χρήστες διαβάζουν δεδομένα από τη βάση.
Uberalles_gr Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Πολύ ενδιαφέρον θέμα.. Όποιος γνωρίζει ας μας κατατοπίσει και εμάς! 2
x_maras Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Οι NoSQL βάσεις είναι πολύ μεγάλο θέμα... Σχετικά με το αν χρησιμοποιούνται στην Ελλάδα δεν έχει να κάνει με το αν υπάρχουν εφαρμογές επιπέδου facebook και twitter, αλλά αν υπάρχουν εφαρμογές που το data-model τους ή κάποιο μέρος του, δε ταιριάζει σε μια relational database. π.χ. Σκέψου το μοντέλο του facebook (απλοποιημένο). Έχεις ένα Person που έχει κάποιες ιδιότητες και μπορεί επίσης να έχει σχέσεις με άλλα Persons. Λόγο του τρόπου που αποθηκεύεις αυτά τα δεδομένα σε μια relational βάση (tables), θα σου κοστίσει περισσότερο να εκτελέσεις queries του τύπου "Δείξε μου τους φίλους, του φίλου μου, που έχουμε από κοινού". Σε παρόμοια ερωτήματα οι NoSQL είναι πιο αποδοτικές για το λόγο ότι την έχεις σχεδιάσει πάνω σε αυτό το μοντέλο. Ένα ακόμη πιο δύσκολο παράδειγμα είναι αυτό του linkedin, όπου βρίσκεις την απόσταση μεταξύ 2 χρηστών (Me->My Connections <--> Your Connections<-You) Τώρα το αν είναι πιο γρήγορη ή όχι έχει να κάνει και με το caching. Δε νομίζω να υπάρχει σοβαρή εφαρμογή που χρησιμοποιεί είτε βάσεις της μίας είτε της άλλης κατηγορίας και να μη χρησιμοποιεί caching. To θέμα είναι πάντα πως θα αποθηκευτούν καλύτερα τα δεδομένα σου και πως θα εκτελέσεις τα απαραίτητα για την εφαρμογή σου queries πιο αποδοτικά. Μπορείς να χρησιμοποιήσεις πάνω απο μία τεχνολογίες για να κάνουν η κάθε μία αυτό που μπορούν καλύτερα! π.χ. στην εταιρεία που δουλεύω (εξυπηρετεί περίπου 30K ενεργούς χρήστες) χρησιμοποιούμε MySQL και τη Redis (key-value db) σαν συμπληρωματική για να εξυπηρετεί το graph-data-model κομμάτι + pubsub, msg queue. Επίσης τη Memcached για caching (την οποία αντικαθηστούμε με τη Redis) και τη Sphinx σαν search engine. Οπως βλέπεις υπάρχουν 4 διαφορετικές τεχνολογίες που έχουν νά κάνουν με τα data και ο λόγος είναι ότι η κάθε μία κάνει καλύτερα αυτό που εχει σχεδιαστεί να κάνει. Τέλος η άποψή μου είναι ότι αν το μοντέλο σου ταιριάζει στη βάση σου τότε δούλεψε λίγο το caching σου και η εφαρμογη σου θα πετάει. Διαφορετικά σήκωσε τα μανίκια και ξαναγράψε το data layer σου, προσθέτοντας την κατάλληλη nosql τεχνολογία (+caching ). για διάβασμα 1
Uberalles_gr Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Συγγνώμη αλλά σε μία σελίδα που τραβάει τα δεδομένα από μια βάση έχει σχέση έχει το caching;;; Γιατί νομίζω ότι είναι καθαρά θέμα τα queries που κάνεις, το πως έχεις φτιάξει την βάση σου, τα indexes που έχεις βάλει στα tables της βάσης σου...
dewn735 Δημοσ. 30 Σεπτεμβρίου 2012 Δημοσ. 30 Σεπτεμβρίου 2012 Συγγνώμη αλλά σε μία σελίδα που τραβάει τα δεδομένα από μια βάση έχει σχέση έχει το caching;;; Γιατί νομίζω ότι είναι καθαρά θέμα τα queries που κάνεις, το πως έχεις φτιάξει την βάση σου, τα indexes που έχεις βάλει στα tables της βάσης σου... Από ένα σημείο και μετά, τα queries επαναλαμβάνονται και τα αποτελέσματα δεν αλλάζουν και τόσο συχνά όσο νομίζουμε. Δε θα κάτσεις να κάνεις κάτι τέτοιο σε κάτι που μπορεί να αλλάζει κάθε λεπτό (πχ το stock ενός προϊόντος, ή τα σχόλια σε ένα blog), αλλά τουλάχιστον τη λίστα των προϊόντων ή ακόμα και τη περιγραφή τους μπορείς να τα κάνεις cache - έστω και για 10 λεπτά. Φυσικά μιλάμε για σελίδες με μεγάλο όγκο επισκεπτών και πολλαπλά requests στη βάση
x_maras Δημοσ. 1 Οκτωβρίου 2012 Δημοσ. 1 Οκτωβρίου 2012 Όπως λέει και ο dewn735, πολλά από τα queries είναι τα ίδια. Οπότε είναι καλό να τα παίρνεις από τη μνήμη. Επίσης υπάρχουν περιπτώσεις που κατά την πλοήγησή σου δε χτυπάς καθόλου (ή σχεδόν) τη βάση για δεδομένα. π.χ. Μια εφαρμογή που πρέπει να κάνει 100 hits στη βάση, για μια σελίδα μπορεί να πάρει 6-7 δευτερόλεπτα να εμφανιστεί πλήρως (συμπεριλαμβανωμένων των templates). Cached, μπορεί να πάρει 0.5 δευτερα. Σκέψου ότι κάθε φορά που κάνεις κάποιο update στα data, π.χ. κάνεις edit το κείμενο ενός άρθρου. 1ον θα γράψεις τα data στη βαση. 2ον θα σβήσεις την εγγραφή από τη cache. 3ον θα εμφανίσεις το άρθρο μετά το edit παίρνοντάς το από τη βάση. 4ον θα ελέγξεις την cache σου και από τη στιγμή που δεν υπάρχει εγγραφή (μόλις την έσβησες) θα γράψεις τα καινούρια δεδομένα. Κατ' αυτό το τρόπο έχεις μια μικρή καθυστέρηση που είναι λογική μετά από ένα edit, αλλά σε κάθε άλλη ανάγνωση θα το παίρνεις πολύ γρήγορα από τη cache σου. Τώρα αυτοί που θα checkαρουν το άρθρο αφού έχει γραφτεί στη βάση και πριν γραφτεί στη cache θα έχουν καθυστέρηση στην ανάγνωση, αλλά το ποσοστό είναι πολύ μικρό και μπορείς να το θυσιάσεις. Επίσης για δεδομένα που αλλάζουν πολύ συχνά, μπορείς να χρησιμοποιήσεις μια in-memory βάση, όπως η Redis. π.χ. με τη Redis, το παραπάνω σενάριο θα έχει 3 βήματα. 1ο διαβάζεις το άρθρο από τη μνήμη και το κάνεις edit. 2ο Τα data γράφονται στη μνήμη και τα παίρνεις γρήγορα σε κάθε ανάγνωση κι εσύ και κάθε χρήστης. Το τρίτο βήμα είναι ότι μπορείς να ρυθμίσεις τη Redis να γράψει στο δίσκο ανά κάποιο χρονικό διάστημα (10 seconds). υ.γ. Στις 2 πρώτες παραγράφους σαν βάση εννοώ κάποια relational βάση, π.χ. mysql
Uberalles_gr Δημοσ. 1 Οκτωβρίου 2012 Δημοσ. 1 Οκτωβρίου 2012 Ωραία κατανοητό αλλά ας επικεντρωθούμε στον τίτλο του θέματος. Είχα διαβάσει μια περίοδο για noSql αλλά με δυσκολία καταλάβαινα τι γινότανε.. H google τέτοια τεχνολογία δεν χρησιμοποιεί;;
defacer Δημοσ. 1 Οκτωβρίου 2012 Δημοσ. 1 Οκτωβρίου 2012 "NoSQL" είναι ένας όρος-ομπρέλα που περιλαμβάνει πάρα μα πάρα πολλές υλοποιήσεις από data stores. Επομένως το "NoSQL" δε σημαίνει και πολλά από μόνο του πέρα από αυτά που λέει στις 2 πρώτες γραμμές στη Wikipedia: δεν δουλεύουν με τη λογική των tables και δεν χρησιμοποιούν σύνταξη SQL για να γράφονται τα queries. Ή, όπως το διάβασα αλλού, NoSQL is not a tool, but an ecosystem composed of several complimentary and competing tools. Το θέμα είναι πολύ ενδιαφέρον και θα ήθελα να συνεισφέρω αλλά αυτή τη στιγμή δεν είναι δυνατόν, οπότε επιφυλάσσομαι για μια απ' αυτές τις μέρες όταν υπάρξει αρκετός χρόνος. Μέχρι τότε, όποιος ενδιαφέρεται ας διαβάσει τι είναι το CAP theorem γιατί χωρίς αυτό δεν πας πουθενά.
Uberalles_gr Δημοσ. 1 Οκτωβρίου 2012 Δημοσ. 1 Οκτωβρίου 2012 Θα αναμένουμε defacer για όποτε βρεις χρόνο.
x_maras Δημοσ. 1 Οκτωβρίου 2012 Δημοσ. 1 Οκτωβρίου 2012 Επιστροφή στο θέμα... Οπως λέει ο defacer το noSQL ή nonSQL κλπ είναι γενική ονομασία. Πιο πάνω έδωσα ένα link με μια λίστα, χωρισμένη σε διάφορες κατηγορίες (key/value, document, etc.), με κάθε μία έχει διαφορετικά "χαρίσματα". Τις χρησιμοποιείς ανάλογα με τις ανάγκες σου. Σαν απάντηση λοιπόν στην αρχική ερώτηση, θα δώσω ότι "όχι δεν είναι πάντα καλύτερες!" Τέλος όσον αφορά τη google και το τι χρησιμοποιεί, γνωρίζω ότι "επίσης" χρησιμοποιεί μία column store την BigTable. Αν παίξεις λίγο με το app engine της google θα δεις πως δουλεύει περίπου Διάβασα και αυτό πρόσφατα σχετικά με τη google να πηγαίνει από noSQL σε newSQL. Δεν είμαι σίγουρος γι' αυτό που γράφω σε αυτή τη πρόταση, αλλά ίσως μπορείς να δοκιμάσεις περίπου τι μπορεί να είναι αυτό το newSQL αν παίξεις με τo Google Cloud SQL.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα