Βάση δεδομένων και DBMS: ποιος κάνει τι
What you'll learn
- να ξεχωρίζεις τη βάση δεδομένων (την οργανωμένη αποθήκη) από το , δηλαδή το πρόγραμμα που εκτελεί ερωτήματα SQL και διαχειρίζεται τα δεδομένα
- να εξηγείς τη διαδρομή «SQL → DBMS → αποτέλεσμα» και γιατί ένας σωρός από αρχεία Excel δεν αντέχει χιλιάδες ταυτόχρονους χρήστες
- να απαριθμείς τι σου προσφέρει ένα DBMS πέρα από τα «απλά αρχεία»: συναλλαγές, ημερολόγιο ανάκτησης (), δικαιώματα πρόσβασης (
GRANT), ελέγχους ακεραιότητας
Κεφάλαιο 1 — «Ο χάρτης του αρχείου»
Το στιγμιότυπο του «Kotomarket» δεν είναι πια σήμα από νεκρό domain. Βρίσκεται σε θάλαμο καραντίνας στον σταθμό «Vault-9», και κάτω από την τελευταία γραμμή του στέκει ακόμη η ίδια υπογραφή: «K.». Το πρωί, στο ολογραφικό σου πάνελ αναβοσβήνει μια νέα εγγραφή: «Άδεια: ευρετήριο αρχείου. Εκδόθηκε από: μονάδα S.Q.L.» Η πόρτα της αποθήκης γλιστράει στο πλάι· πίσω της, μέσα σε κεχριμπαρένιο φως, τα ράφια των διακομιστών βουίζουν σταθερά.
QUERY: Πριν διαβάσεις τη μνήμη κάποιου άλλου, μάθε πώς είναι φτιαγμένη. Ας αρχίσουμε από τα βασικά: τι είναι εδώ η αποθήκη και ποιος τη φυλάει.
Βάση δεδομένων και DBMS
Η βάση δεδομένων είναι μια οργανωμένη αποθήκη. Στο στιγμιότυπο του «Kotomarket» υπάρχουν αγοραστές, προϊόντα, παραγγελίες και συμβάντα: όχι σκορπισμένα σε αρχεία, αλλά τοποθετημένα σε δομή που βγάζει νόημα. Γι' αυτό μπορούν να διαβαστούν ακόμη και εκατόν εξήντα χρόνια αργότερα.
Όμως η αποθήκη από μόνη της δεν απαντά σε ερωτήσεις. Χρειάζεται ένα πρόγραμμα που ξέρει να δημιουργεί πίνακες, να καταχωρεί νέες παραγγελίες, να διαβάζει δεδομένα και να φροντίζει να μη σπάνε οι συνδέσεις. Αυτό είναι το (σύστημα διαχείρισης βάσεων δεδομένων). Παραδείγματα: PostgreSQL, MySQL, ClickHouse. Το στιγμιότυπό μας είναι βάση PostgreSQL και μιλά ακόμη την ίδια SQL που μιλούσε όσο λειτουργούσε το κατάστημα.
Γράφεις ένα ερώτημα σε SQL → το στέλνεις στο DBMS → το DBMS ανασύρει τα δεδομένα που ζήτησες και επιστρέφει το αποτέλεσμα. Το Excel είναι μια χαρά για έναν προσωπικό πίνακα, αλλά όχι για ένα κατάστημα όπου χιλιάδες χρήστες κοιτούν προϊόντα, κάνουν παραγγελίες και αφήνουν συμβάντα στο σύστημα την ίδια στιγμή.

Database and DBMS
A database is an organized store. The Kotomarket holds buyers, products, orders, and events — not scattered across files, but in a clear structure. That’s exactly why it can still be read a hundred and sixty years later.
But the store itself doesn’t answer questions. You need a program that can create tables, record new orders, read data, and make sure the links never break. That’s a (database management system). Examples: PostgreSQL, MySQL, ClickHouse. Our snapshot is a PostgreSQL database, and it still speaks the same SQL it did when the shop was alive.
You write a query in SQL → send it to the DBMS → the DBMS fetches the data you asked for and returns the result. Excel is fine for a personal spreadsheet, but not for a shop where thousands of users browse products, place orders, and leave events in the system all at once.
Τι μπορεί να κάνει ένα DBMS που δεν μπορούν τα «απλά αρχεία»
Ίσως φαίνεται πως το κατάστημα θα μπορούσε να ζήσει και χωρίς : να γράφει τις παραγγελίες σε CSV ή Excel. Σε κλίμακα προσωπικού σημειωματάριου αυτό δουλεύει. Μόλις όμως εμφανιστούν οι ανάγκες για τις οποίες φτιάχτηκαν τα DBMS, τα απλά αρχεία δεν αρκούν.
- Ταυτόχρονη πρόσβαση. Όσο λειτουργούσε το «Kotomarket», οι αγοραστές έκαναν παραγγελίες ταυτόχρονα. Δύο διεργασίες που γράφουν στο ίδιο αρχείο μπορούν να σβήσουν η μία τις αλλαγές της άλλης· το DBMS εκτελεί τις αλλαγές ως συναλλαγές και χειρίζεται μόνο του την παράλληλη δουλειά. Η PostgreSQL το κάνει αυτό μέσω του μηχανισμού : όσοι διαβάζουν δεν μπλοκάρουν όσους γράφουν, και αντίστροφα.
- Ανάκτηση μετά από αστοχία. Αν κοπεί το ρεύμα στη μέση μιας εγγραφής, ένα αρχείο μπορεί να χαλάσει και να μη φαίνεται ποιο μισό της παραγγελίας πρόλαβε να αποθηκευτεί. Το DBMS καταγράφει πρώτα την αλλαγή σε ημερολόγιο (στην PostgreSQL, το , write-ahead log) και μετά την αστοχία το χρησιμοποιεί για ανάκτηση: η παραγγελία είτε γράφεται ολόκληρη είτε δεν γράφεται καθόλου.
- Δικαιώματα πρόσβασης. Ένα αρχείο συνήθως ανοίγει είτε ολόκληρο είτε καθόλου. Στο DBMS τα δικαιώματα είναι λεπτομερή, ακόμη και σε επίπεδο μεμονωμένου πίνακα:
-- Στον αναλυτή — μόνο ανάγνωση των παραγγελιών, χωρίς δικαίωμα αλλαγής τους
GRANT SELECT ON orders TO analyst;
- Ακεραιότητα. Το DBMS δεν θα δεχτεί παραγγελία με τιμή γραμμένη ως κείμενο ή με αναφορά σε αγοραστή που δεν υπάρχει: οι τύποι των στηλών και οι περιορισμοί ελέγχονται σε κάθε εγγραφή. Ένα απλό αρχείο δεν ελέγχει από μόνο του τι περιέχει.
- Δηλωτικές ερωτήσεις. «Δείξε μου τις παραγγελίες πάνω από 5000» — μία γραμμή SQL. Με ένα αρχείο, την ίδια δουλειά θα την έκανε πρόγραμμα που κάποιος πρέπει να γράψει και να μη λαθέψει.
Το είναι ο ακούραστος μεσάζων ανάμεσα σ' εσένα και τα δεδομένα: δέχεται ερωτήματα SQL, τα εκτελεί και δεν αφήνει τη βάση να γίνει χάος. Στο μάθημα δουλεύουμε με PostgreSQL, που ζητιέται συχνά σε θέσεις ανάλυσης δεδομένων και backend. Τον φύλακα τον γνώρισες. Πριν όμως ανοίξει το ευρετήριο του στιγμιότυπού μας, ο QUERY σε οδηγεί στο διπλανό τμήμα, στο μητρώο των άλλων αρχείων της παλιάς Γης, για να καταλάβεις γιατί επέζησε ακέραιο ακριβώς το δικό μας.
Interview question
Ερώτηση συνέντευξης: σε τι διαφέρει μια βάση δεδομένων από ένα ; Γιατί να μην αποθηκεύει μια εφαρμογή τα δεδομένα της απλώς σε αρχεία;
Δυνατή απάντηση: η βάση δεδομένων είναι τα οργανωμένα δεδομένα, ενώ το DBMS είναι το πρόγραμμα που τα διαχειρίζεται (PostgreSQL, MySQL, ClickHouse). Τα αρχεία δεν λύνουν την ταυτόχρονη πρόσβαση (παράλληλες εγγραφές μπορεί να σβήσουν η μία την άλλη), δεν προσφέρουν αξιόπιστη ανάκτηση μετά από αστοχία (το DBMS κρατά ημερολόγιο και ολοκληρώνει ή ακυρώνει τις μισοτελειωμένες αλλαγές), ούτε έχουν λεπτομερή δικαιώματα και ελέγχους ακεραιότητας. Και το βασικότερο: το DBMS απαντά σε δηλωτικά ερωτήματα SQL, ενώ ένα αρχείο θα έπρεπε να το αναλύσεις με δικό σου κώδικα.