This is Railway Reservation & Routing system.
Old approach
Monolithic DB system : Implemented using SQL DB (PostgreSQL) only by aquiring Row level locks in DB with Serialized transactions.
Currently implementing
Polyglot Persistence system : Utilizing Neo4j for Routing queries & PostgreSQL for general queries like user data. Redis Redlock for distributed locking of resorces/data as this is a multi database system.
trains: [ train_id, train_name, source , destination, timing ]coaches: [ id, train_id, coach_name , available_seats ]seats: [ id, seat_number, coach_id, booking_id ]bookings: [ id, user_id, train_id , source, destination, coach_name, number_of seats ]users: [ user_id, name, password ]admin: [ keys ]



