сообщения в чате нужен автоинкремент message_id начинающийся с единицы. Т.е чтобы у каждого чата была своя последовательность
Последовательность вам обеспечит любой монотонно растущий атрибут типа сквозного id в messages или времени отправки Зачем именно номер в пределах чата? То есть можно и его в базе хранить, но с какой целью? Он же вычислим. Оконной функцией, например
А если придётся выбирать range сообщений по id. Немного сложная выборка получается. И сообщения могут удаляться, тогда id у сообщений будут меняться при вычислениях
Еще раз. Кому и зачем нужен порядковый номер сообщения, если отсортировать их, вероятно, можно и так? Как вы верно заметили, их, возможно, придётся удалять. Будете перенумеровывать весь контент чата?
У нашей компании один из основных профилей это мессенджеры, поэтому если честно тема бесконечная для дискуссии) все ОЧЕНЬ сильно зависит от того, что за месседжинг вы делаете и какие там будут фичи. Если очень издалека - да, порядковый номер там почти всегда очень и очень нужен, но как его реализовать уже сильно зависит от задач применения и уровня подготовки команды
что-то в вашей модели не так, раз вы столкнулись с такой странной задачей
Порядковый номер для каждого сообщения в чате нужен для сортировки сообщений, и главное для того чтобы не было возможности увидеть общее количество сообщений в системе. То что остаются пробелы при удалении сообщений не важно
Тогда statement_timestamp вам все решит - и сортировка и никак не связана с количеством
Нет. Харам. Синквенс — это считай таблица, их количество должно быть конечно, а не пропорционально количеству чатов.
хуже - сообщений
я конечно могу что-то не так понимать, но может быть linkedlist организовать в таблице вашей? зная id начала и конца можно получить необходимые сообщения, ну плюс при вставке и удалении не нужно будет ничего считать, нужно будет лишь ссылки поменять
Обфускацию идентификаторов можно делать введением stateful промежуточного слоя. Например, сайт обращается к application server запросом вида "дайте мне 2-ую страницу моей выборки №1". В application server хранится, что для конкретного клиента его 1-ая выборка — это про чат chat_id, и последнее сообщение, показанное на 1-ой странице это message_id (это чтобы использовать key-driven pagination). За счёт этого сайт не видит, сколько всего сообщений в системе
Физика явления в чем? В одну и ту же микросекунду у вас может быть несколько сообщений. Ну так и пусть ключом будет время+код?
Обсуждают сегодня