История изменений
Исправление KivApple, (текущая версия) :
Сервер может выдавать юзеру UUID последней отправленной им мессаги в каждый чат. Ну и ещё надеятся на то, что сервер успеет удалить черновик, пока сообщение юзера уползёт вверх (когда бекэнд получает команду на отправку сообщения, он после вставки сообщения в MESSAGES, удаляет его из DRAFTS, даже если это не одна транзакция, в любом случае между двумя операциями пройдут секунды, а на случай краша бекэнда можно предусмотреть очередь операций, которая обеспечит ретрай удаления).
А вообще у меня есть ощущение, что ты просто придумываешь себе проблемы. Используй БД с транзакциями (не вижу смысла шардить по таблицам, а не по юзерам или чатам, например) или накостыль транзакции поверх.
Исправление KivApple, :
Сервер может выдавать юзеру UUID последней отправленной им мессаги в каждый чат. Ну и ещё надеятся на то, что сервер успеет удалить черновик, пока сообщение юзера уползёт вверх (когда бекэнд получает команду на отправку сообщения, он после вставки сообщения в MESSAGES, удаляет его из DRAFTS, даже если это не одна транзакция, в любом случае между двумя операциями пройдут секунды, а на случай краша бекэнда можно предусмотреть очередь операций, которая обеспечит ретрай удаления).
А вообще у меня есть ощущение, что ты просто придумываешь себе проблемы. Используй БД с транзакциями (не вижу смысла шардить по таблицам, а не по юзерам, например) или накостыль транзакции поверх.
Исходная версия KivApple, :
Сервер может выдавать юзеру UUID последней отправленной им мессаги в каждый чат. Ну и ещё надеятся на то, что сервер успеет удалить черновик, пока сообщение юзера уползёт вверх (когда бекэнд получает команду на отправку сообщения, он после вставки сообщения в MESSAGES, удаляет его из DRAFTS, даже если это не одна транзакция, в любом случае между двумя операциями пройдут секунды, а на случай краша бекэнда можно предусмотреть очередь операций, которая обеспечит ретрай удаления).