What is a database?
Before SQL or Postgres, get clear on the pieces: raw data, a database, the DBMS that manages it, and how your app connects. This whole path exists so that by Level 7 you can **choose** an engine and **scale** from a handful of requests to billions — without skipping the fundamentals.
Data is facts your system cares about — users, orders, events. A database is an organized collection of that data designed for reliable storage and retrieval. A DBMS (database management system) is the software that stores, queries, secures, and recovers that collection. Spreadsheets hold data; they are not a DBMS.
Rendering diagram…
- Database server — process that accepts connections and runs queries
- Database client — tool or library that talks to the server (psql, DBeaver, your app)
- Database driver — language-specific adapter (node-postgres, JDBC, psycopg)
- Connection pooling — reuse connections instead of opening one per request
- Schema objects — tables, views, functions, triggers, indexes live inside the DBMS
Think of the DBMS as the operating system for your data: it owns durability, concurrency, and query execution — not just “storing files.”
A common beginner mix-up: the database (the collection, e.g. `shop`) vs the DBMS (PostgreSQL) vs the server (the process listening on port 5432). Your app never “talks to a table” directly — it talks to the server through a driver. Later levels add pooling, replicas, and extra stores — still on top of this picture.
Takeaways
- Data ≠ database ≠ DBMS — learn the distinction early
- Apps talk through drivers and usually a connection pool
- The server is responsible for correctness and recovery, not just storage