Size: a a a

pgsql – PostgreSQL

2021 June 18

KM

Kody Maverick in pgsql – PostgreSQL
Вообще я пытаюсь абстрактно понять как все будет работать. Мне нужно создать БД для простого мессенджера.
Я вот и хочу понять, в одной таблице хранить все сообщения или для каждого диалога создавать новую
источник

ch

central hardware in pgsql – PostgreSQL
в любом когда не экранированный ввод?
источник

IS

Ivan Serov in pgsql – PostgreSQL
Как это понять?
источник

V

Vinod_7508 in pgsql – PostgreSQL
Hello Zomato guy😂
источник

ch

central hardware in pgsql – PostgreSQL
все равно не понятно зачем вам составной ключ
источник

IS

Ivan Serov in pgsql – PostgreSQL
Вот пример:
EXECUTE format('INSERT INTO commits(foo)
               VALUES($1);') using foo;

В этом случае execute  будет безопасным, если foo приходит извне?
источник

KS

Khikmat Shaykhaliev in pgsql – PostgreSQL
Добрый день ребят)
Один вопросик.
есть уже бд можно из нее как ниб сгенерировать диаграмму ?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
некоторые GUI это умеют. Navicat точно, про остальные не скажу…
источник

KS

Khikmat Shaykhaliev in pgsql – PostgreSQL
👌
источник

KM

Kody Maverick in pgsql – PostgreSQL
Чтобы каждое сообщение начиналось с 1 и инкреминтировалось, т.к. у меня у каждого сообщения будет атрибут key=id
источник

ch

central hardware in pgsql – PostgreSQL
Зачем?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
Да поймите же наконец, что это бессмысленно и вредно
вот сейчас у вас сообщения каждого пользователя имеют свою нумерацию
а потом вы вспоминаете, что пользователь пишет не просто так а кому то, прикольно
и этих кого-то может быть много

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

и таких подводный камней будет масса, с вашей инкрементацией
не наступайте на грабли ))
источник

AM

Aleksey Maslyukov in pgsql – PostgreSQL
Согласен с коллегой выше - это не нужно. Сквозная нумерация ВСЕХ сообщений будет работать как нужно. Посмотрите как в телеграмме сообщения нумеруются - залезьте на telegram api. Если нужна сортировка - то она прекрасно будет работать на сквозной нумерации да и таймстэмп собщения все равно добавлять. Локать запись при чтении - это вам гемора на будущее - обрабатывать конкурирующие локи, зависшие локи и прочие прелести. Короче не нужно даже думать в этом направлении.
источник

AM

Aleksey Maslyukov in pgsql – PostgreSQL
Как говорится - на проблему нужно смотреть проще, а искать решения ширше 😂
источник

KM

Kody Maverick in pgsql – PostgreSQL
Кажется я понял. Остался последний момент. Например, пользователь захочет удалить сообщение, то чтобы запрос отправить, то необходимо знать какой id сообщения удалять. Вот я и хочу, чтобы при отправке сообщения сайт к сообщению добавлял атрибут с айди из базы для этого сообщения
источник

AM

Aleksey Maslyukov in pgsql – PostgreSQL
Как минимум пользователь должен выбрать сообщение, которое хочет удалить - а раз выбрал, то его все атрибуты втч id известны... Не?
источник

KM

Kody Maverick in pgsql – PostgreSQL
Да, известны должны быть. Но допустим идет запись нового сообщения в бд, где сообщения все по порядку идут как вы и сказали. Как я могу узнать айди этого сообщения, чтобы потом вернуть на сайт?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
получить последние n сообщений , как вариант )
но это уже вопрос архитектуры кода, а не структуры базы
источник

AM

Aleksey Maslyukov in pgsql – PostgreSQL
INSERT ... RETURNING вам в помощь
источник

ch

central hardware in pgsql – PostgreSQL
у вас же клиенты напрямую ходить в базу не будут это однозначно, а сервер уже может либо дождаться пока вставка пройдет или заранее резервирвать id, это уже вопрос к тому как сервер написан и вернуть клиенту
источник