172 похожих чатов

Насколько правильно создавать sequence для каждой записи в таблице? Кейс: Для каждого

сообщения в чате нужен автоинкремент message_id начинающийся с единицы. Т.е чтобы у каждого чата была своя последовательность

12 ответов

27 просмотров

Последовательность вам обеспечит любой монотонно растущий атрибут типа сквозного id в messages или времени отправки Зачем именно номер в пределах чата? То есть можно и его в базе хранить, но с какой целью? Он же вычислим. Оконной функцией, например

Pumpkin-🇺🇦 Автор вопроса
Roman Sergeev
Последовательность вам обеспечит любой монотонно р...

А если придётся выбирать range сообщений по id. Немного сложная выборка получается. И сообщения могут удаляться, тогда id у сообщений будут меняться при вычислениях

Pumpkin 🇺🇦
А если придётся выбирать range сообщений по id. Не...

Еще раз. Кому и зачем нужен порядковый номер сообщения, если отсортировать их, вероятно, можно и так? Как вы верно заметили, их, возможно, придётся удалять. Будете перенумеровывать весь контент чата?

У нашей компании один из основных профилей это мессенджеры, поэтому если честно тема бесконечная для дискуссии) все ОЧЕНЬ сильно зависит от того, что за месседжинг вы делаете и какие там будут фичи. Если очень издалека - да, порядковый номер там почти всегда очень и очень нужен, но как его реализовать уже сильно зависит от задач применения и уровня подготовки команды

что-то в вашей модели не так, раз вы столкнулись с такой странной задачей

Pumpkin-🇺🇦 Автор вопроса
Roman Sergeev
Еще раз. Кому и зачем нужен порядковый номер сообщ...

Порядковый номер для каждого сообщения в чате нужен для сортировки сообщений, и главное для того чтобы не было возможности увидеть общее количество сообщений в системе. То что остаются пробелы при удалении сообщений не важно

Pumpkin 🇺🇦
Порядковый номер для каждого сообщения в чате нуже...

Тогда statement_timestamp вам все решит - и сортировка и никак не связана с количеством

Нет. Харам. Синквенс — это считай таблица, их количество должно быть конечно, а не пропорционально количеству чатов.

Pumpkin 🇺🇦
А если придётся выбирать range сообщений по id. Не...

я конечно могу что-то не так понимать, но может быть linkedlist организовать в таблице вашей? зная id начала и конца можно получить необходимые сообщения, ну плюс при вставке и удалении не нужно будет ничего считать, нужно будет лишь ссылки поменять

Pumpkin 🇺🇦
Порядковый номер для каждого сообщения в чате нуже...

Обфускацию идентификаторов можно делать введением stateful промежуточного слоя. Например, сайт обращается к application server запросом вида "дайте мне 2-ую страницу моей выборки №1". В application server хранится, что для конкретного клиента его 1-ая выборка — это про чат chat_id, и последнее сообщение, показанное на 1-ой странице это message_id (это чтобы использовать key-driven pagination). За счёт этого сайт не видит, сколько всего сообщений в системе

Физика явления в чем? В одну и ту же микросекунду у вас может быть несколько сообщений. Ну так и пусть ключом будет время+код?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта