Нууу, лотерейные билеты же часто надо продавать. И по многу.
Если есть опасения, что база будет узким местом, почему бы не выделить DAO слой, который будет отвечать за получение билета, но реализовать его таким образом, чтобы он из базы доставал чанки, к примеру по 100-500 штук и отдавал их пользователям уже из памяти. У билет будет 3 состояния (для этого workflow)- "не продан", "зарезервирован", "продан". Этот DAO слой будет ответственным за то, чтобы эти статусы правильно обновлять. Такое решение усложнит програмную часть, но снимет ту нагрузку с базы, о которой говорилось выше.