Δεν είμαι σίγουρος αν ισχύει αυτό που ξέρω, για αυτό ήθελα να σας ρωτήσω τα εξής:
Αν έχω έναν πίνακα με το εξής σχήμα: (INT, CHAR(20), BOOLEAN) τότε ο συνολικός χώρος της κάθε καταχώρησης θα είναι 4+20+1 = 25bytes? Υπάρχουν overheads που δεν ξέρω; Πχ στους 20 χαρακτήρες συμπεριλαμβάνεται και ο null χαρακτήρας \0?
Απ'ότι διάβασε στα docs της MySql, το πλήθος στον CHAR εννοεί χαρακτήρες και όχι bytes, επομένως στα αγγλικά θα είναι ακριβώς 20bytes ενώ τα Ελληνικά που χρησιμοποιούν 2 bytes ανά χαρακτήρα , το συνολικό μέγεθος θα είναι 40bytes και όχι 20. Άρα αυτό που υπολόγισα παραπάνω είναι λάθος. Επομένως πως σκέφτομαι σε αυτήν την περίπτωση;
Τι γίνεται αν έχω πεδία όπως TEXT και DATE ή DATETIME ; Πως θα εκτιμήσω τα bytes;
Ότι άλλες συμβουλές μπορείτε να δώσετε θα το εκτιμούσα.
Ευχαριστώ
Εμφάνιση 1-12 από 12
-
02-01-20, 22:59 [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #1
-
03-01-20, 00:08 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #2
Εδώ τα εξηγεί όλα.
-
03-01-20, 00:12 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #3
Η κάθε βάση έχει τους δικούς της τύπους και μεγέθη. Δεν γνωρίζω να δίνουν λεπτομέρειες για τα headers όμως.
Για τη mysql μπορείς να δεις εδώ πόσο χώρο πιάνει ο κάθε τύπος δεδομένων. Από αυτό μπορείς να βγάλεις, περίπου πόσο πιάνει η κάθε εγγραφή και εν τέλη ολόκληρος ο πίνακας. Βέβαια υπάρχουν και τα Indexes, στατιστικά κτλ που δεν γνωρίζω αν μπορείς να τα υπολογίσεις κάπως, κάπου διάβασα ότι κάθε καταχώρηση στο Index είναι 6 bytes, αλλά δεν το γνωρίζω σίγουρα.
Για το CHAR(20) δεν χρειάζεσαι NULL γιατί εμφανίζει απλά τους 20 χαρακτήρες (οπότε δεν πάει +1) ενώ για Για το varchar χρειάζεται.
Στη MySQL μπορείς να τρέξεις το ακόλουθο ερώτημα για να δεις πόσο χώρο πιάνει στο δίσκο ένας πίνακας:
Κώδικας:SELECT table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "$DB_NAME" AND table_name = "$TABLE_NAME";
-
03-01-20, 03:11 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #4
Ωραία το έπιασα παιδιά. Με βάση την παρακάτω βάση, αυτό που θα αυξάνετε ποιο πολύ είναι οι users και τα appointments. Τα υπόλοιπα θα μένουν στατικά επειδή είναι πληροφορίες που θα δημιουργηθούν μια φορά και σπάνια θα αλλάζουν.
Επομένος με βάση τα δεδομένα που μου έδωσε ο πελάτης "Δεν έχω περισσότερους από 6,000 πελάτες και τα 2 κομμωτήρια που έχω δεν εξυπηρετούν πάνω από 60 ραντεβού την ημέρα".
users:
m_bonus = INTEGER = 4 bytes
m_username = CHAR(30) = 30 * 3 = 90 bytes
m_name = CHAR(30) = 30 * 3 = 90 bytes
m_surname = CHAR(30) = 30 * 3 = 90 bytes
m_email = CHAR(255) = 255 bytes
m_phone = CHAR(10) = 10 bytes
Σύνολο κάθε καταχώρησης: 539 bytes. Πες ότι φτάνει τους 10,000 πελάτες άρα 10,000 * 539 = 5,390,000 bytes = 5.39 MB .ΛΟΛ τελικά ο χώρος δεν είναι και τόσο ακριβός
apointments:
m_status = INTEGER = 4 bytes (εδω μπορώ και να το βελτιώσω αφού το status μπορεί να πάρει μόνο τις τιμές 0,1,2)
m_canceled = BOOLEAN = 1 bytes
m_hour = CHAR(5) = 5
m_date = 3 bytes
m_user_id = INTEGER = 4 bytes
m_barber_id = INTEGER = 4 bytes
m_service_id = INTEGER = 4 bytes
Σύνολο κάθε καταχώρησης: 25 bytes. Ας πούμε ότι την ημέρα έχουμε 100 ραντεβού * 25 = 2,500 bytes / ημέρα * 5 ημέρες = 12,500 bytes / εβδομάδα * 4 εμβδομάδες = 50,000 bytes / μήνα * 12 = 600,000 bytes / χρόνο = 0.6 ΜΒ / χρόνο.
Άρα αν η βάση γεμίζει με 0.6 ΜΒ / χρόνο τότε σε έναν απλό web hoster που δίνει 5gb σημαίνει ότι 5120MB / (0.6MB/χρόνο) = 8,533.33 χρόνια, δηλαδή θέλει 8 χιλιάδες χρόνια περίπου για να γεμίσει ο server σωστά; Δεν έβαλα τους χρήστες επειδή αποδίδουν 6mb, και οι άλλοι πίνακες κανονικά θα καταναλώνουν ΠΟΛΥ μικρότερο χώρο από τους χρήστες άρα οι χρήστες και οι άλλοι πινακές μπορούν να θεωρηθούν αμελητέοι.
Άρα 5gb κάνει την δουλειά και με το παραπάνω!!!
-
03-01-20, 04:23 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #5
Δεν έλεγξα προσεκτικά τα μαθηματικά σου, αλλά γενικά 6000 πελάτες δεν είναι τίποτα, καθώς θα κάνουν μια "αγορά" κάθε μήνα χοντρικά. Δεν πρόκειται να γεμίσει η βάση γρήγορα με τίποτα.
Γενικά πάντως, αν ο πελάτης σου λέει 6000, εσύ δεν πρέπει να στρογγυλοποιείς στο 10000, αλλά στο 60000. Ποτέ δεν πέφτουν έξω κατά ένα παράγοντα 2, όσο γλυκαίνονται με το τι μπορούν να κάνουν.
-
03-01-20, 08:44 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #6
-
03-01-20, 10:42 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #7
@babaliaris,
Οι υπολογισμοί αυτοί είναι πολύ χοντρικοί καθώς δεν υπολογίζεις:
1. Το χώρο για temporary/working tables
2. Το χώρο για τους εσωτερικούς πίνακες της βάσης
3. Indexes
4. Την κατανομή των εγγραφών στα pages της βάσης
5. Χώρο για backup
6. Πιθανό compression
7. Ενεργοποίηση ή όχι encryption
Μικρή είναι η βάση. Με xls ή Google Docs δεν κάνουν τη δουλειά τους ? Ένα sheet ανά μηνα & κομμωτήριο δεν φτάνει?
-
03-01-20, 12:28 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #8
Με έπιασες αδιάβαστο με αυτά που γράφεις
1. Το χώρο για temporary/working tables: temporary/working tables είναι όταν κάνεις ένα query πχ? Και το resulting dataset γίνεται ένα temporary table?
3. Indexes: Εννοείς τα indexes για ταχύτερα joins? Δεν ήξερα ότι ποιάνουν επιπλέον χώρο.
4. Την κατανομή των εγγραφών στα pages της βάσης: Δεν γνωρίζω καν τι είναι αυτό.
6. Πιθανό compression: Επίσης δεν ξέρω τι είναι.
Δηλαδή τα 5gb που δίνει ο web hoster είναι για τα πάντα; βάση + backup + ότι αρχείο ανεβάσω (php, js, css, εικόνες κτλ);
Τo ποιο πρόσφατο backup αντικαθιστά το παλιό ή μαζεύονται ένα ενα και σου γεμίζουν τον server;
- - - Updated - - -
Μόνο άντρες κουρεύειΤελευταία επεξεργασία από το μέλος babaliaris : 03-01-20 στις 12:27.
-
03-01-20, 12:36 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #9
5GB είναι υπέρ αρκετά για τη δουλειά που το θέλεις. Το παρακολουθείς και λίγο και αν δεις ότι πάει να γεμίσει κάνεις αναβάθμιση. Πρακτικά, αν δεν βάζεις φωτογραφιες, καταλόγους κτλ δεν θα γεμίσει ποτέ.
-
03-01-20, 14:49 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #10
Για τόσο λίγα αναμενόμενα writes, και η SQLite μία χαρά είναι, μη σου πώ καλύτερη.
-
03-01-20, 15:55 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #11
@babaliaris
Θέλει λίγο διάβασμα για το πως λειτουργεί ένα RDBMS. Με τόσο μικρούς όγκους, όμως μπορεί να είναι και χάσιμο χρόνου.
1. Το χώρο για temporary/working tables: temporary/working tables είναι όταν κάνεις ένα query πχ? Και το resulting dataset γίνεται ένα temporary table?: Ναι & Ναι
3. Indexes: Εννοείς τα indexes για ταχύτερα joins? Δεν ήξερα ότι ποιάνουν επιπλέον χώρο.: Tα indexes είναι φυσικά αρχεία, επιπλέον των πινάκων. Υπάρχει μεγάλη πιθανότητα το μέγεθος ενός index να είναι μεγαλύτερο από τον πίνακα.
4. Την κατανομή των εγγραφών στα pages της βάσης: Δεν γνωρίζω καν τι είναι αυτό. Αν έχεις όρεξη, πρέπει να διαβάσεις λίγο τα Internals μιας σχεσιακής βάσης δεδομένων. Ξεκίνα απ' εδώ. Θα σε βοηθήσει πάρα πολύ. Εκτός κι αν αποφασίσεις να ασχοληθείς με mongo db και αντίστοιχες τεχνολογίες.
6. Πιθανό compression: Επίσης δεν ξέρω τι είναι. Χρειάζεται διάβασμα.
Δηλαδή τα 5gb που δίνει ο web hoster είναι για τα πάντα; βάση + backup + ότι αρχείο ανεβάσω (php, js, css, εικόνες κτλ);
Τo ποιο πρόσφατο backup αντικαθιστά το παλιό ή μαζεύονται ένα ενα και σου γεμίζουν τον server; Δεν ξέρω, φαντάζομαι ότι περιλαμβάνει τα πάντα. Η πολιτική του backup είναι από μόνη της μεγάλη κουβέντα. Εξαρτάται πόσο πίσω χρειάζεται να γυρίσεις την εφαρμογή και τι ανοχές σε απώλεια δεδομένων έχει η κάθε εγκατάσταση.
-
03-01-20, 20:06 Απάντηση: [Βάσεις Δεδομένων]: Πως να εκτιμήσω τον χώρο κάθε καταχώρησης ενώς πίνακα; #12
Ακριβώς. Φωτογραφίες και βίντεο, σκέφτηκα να τα ανεβάσω σε hosters όπως YouTube για βιντεο και imgBB για φωτογραφίες. Δεν υπάρχει λόγος να τα έχω στον server μου. Κάποιοι μου πρότειναν CDN αλλά δεν υπάρχει νόημα, οι πελάτες του πελάτη μου είναι από Ελλάδα όλοι (2 μαγαζάκια έχει στην Χαλκιδική) και οι περισσότεροι είναι μένουν Χαλκιδική και λίγοι έρχονται από Θεσσαλονίκη. Ο server θα είναι από papaki.gr επειδή του προτιμώ, άρα όλα κομπλέ πιστεύω.
- - - Updated - - -
Α επίσης ξέρει κανείς τι limitations έχουν τα βασικά προγράμματα hosting, πχ το small πακέτο στο papaki.gr μου επιτρέπει να έχω triggers και stored procedures; Κάποτε κάποιος από εδώ (adslgr) μου είχε πει ότι υπάρχουν limitations στην mysql αλλά δεν θυμάμαι τι ήταν.
- - - Updated - - -
Επίσης υπάρχει κάποιος βασικός κανόνας ή φόρμουλα που να με επιτρέπει να εκτιμώ το traffic με βάση τους χρήστες; Πχ 100GB traffic πόσοι χρήστες μπορούν να συνδεθούν ταυτόχρονα χωρίς να πέσει το site?
Bookmarks