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

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

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

12 ответов

26 просмотров

Последовательность вам обеспечит любой монотонно растущий атрибут типа сквозного 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). За счёт этого сайт не видит, сколько всего сообщений в системе

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта