Why are we using distributed locking since we are already taking care that same seats cannot be booked by different users using transaction isolation level ?
How are you making sure that in approach 1 there will be no overlapping entries. when two concurrent users trying to block same seat at same epoch.
my guess is when creating reservation (startTime-endTime entry) you are using select for update kind of thing and then checking if reservation already exist for currTime if not then creating reservation entry.
and for other transactions (like doing payment) just checking where there is an active reservation for currTime.
Nag
I see , some fundamental problems here. although using RDBMS is the only best option. row locking is a problem. If we have 15 seats in a Row(Theatre screen) multiple users may want to book different seats in the same Row . Row locking puts everyone on hold and concurrent users accessing/booking does not scale at all.