SQL vs NoSQL: Choosing a Database for a Booking System

The question that decides it
Can two writes touch the same record? If yes — seats, orders, balances — you want transactions. If no — analytics, catalogs, activity feeds — you can store documents and stay happy.
The query that settled it
Book a seat, atomically, or fail:
UPDATE seats
SET status = 'LOCKED', locked_by = $1
WHERE id = $2 AND status = 'FREE'
RETURNING id;
-- rows === 1 ? booked : taken
This is one statement in Postgres. In a document store, the same guarantee needs optimistic concurrency, a version field, and a retry loop in application code. Postgres wins for the booking core — not because NoSQL is bad, but because this problem is a transaction.
Where I would go NoSQL
Read-heavy, write-once data: the product catalog, search indexes, cached feed slices. There the flexible schema and horizontal scaling are genuinely better.
The honest takeaway
The choice is rarely "SQL or NoSQL". It is "transactional core, document edges" — and the boundary is drawn by the queries, not the hype.