Distributed-Reservation-System
- User browses through Rooms available for a given date range
- User reserves a type of Room in a particular Hotel
- On check-in, hotel manager assigns a Room of that type to the user
- User reserves a Room
- User cancels a resevation
- New Hotel or room is added
- Browsing through hotel catalog
- Browsing through hotel features
- Our system is read-heavy -- Significantly higher amount of READ than WRITE.
- GET /api/v1/reservations
- GET /api/v1/reservations/123
- POST /api/v1/reservations
- DELETE /api/v1/reservations/123
- Let's go with a relational database i.e PostgreSQL
- Why:
- ACID properties, transactional guarantees
- Easier Locking mechanisms
- Data can be easily sharded for scalability eg based on the hotelIDs
- Easier to model hotel and resevation data
- More READs than WRITEs
- Mostly CRUD Operations