@pgsql

Страница 599 из 1062
Мытко
11.12.2017
21:38:27
Читал на оф. вики вводную часть

Александр
11.12.2017
21:38:59
Выбирать надо список чатов с кол-вом непрочитанных сообщений. Остальное вроде стандартно - список сообщений чата с фильтрами по дате обновления, с пагинацией, инфа о чате, онфа о прочитанности сообщения

Может, есть более комфортная или быстрая схема работы? Подозреваю, что когда-нибудь захотят скрывать сообщения для себя, не из чата

Чаты групповые

Google
Alex
11.12.2017
21:43:31
Зачем чат писать в бд ?

Александр
11.12.2017
21:46:56
Чтобы кудо-то сохранять сообщения)

Nikolai
11.12.2017
21:46:59
Ещё варианты?)

Мытко
11.12.2017
21:47:34
В плейн тексте хранить сообщения и индексы самому делать

Yaroslav
11.12.2017
21:48:27
Чаты групповые
А зачем id в chat_user? Что такое last_read_id, id последнего прочитанного пользователем сообщения в этом чате? А вообще, какой именно чат моделируется? Например, получается, что все сообщения "ничьи"?

Александр
11.12.2017
21:48:31
Ага, у меня это получится лучше, чем у недалёких разработв бд)

last_read_id - да, id последнего прочитанного пользователем сообщения в этом чате Ну, обычный чат) По поводу "ничьи" - сорян, когда накидывал схему для чата, забыл - в messages есть user_id

Мытко
11.12.2017
21:52:36
Я так понимаю, что он очень простой

Александр
11.12.2017
21:53:05


Добавил user_id и изменил связи в схеме с user_message

Yaroslav
11.12.2017
21:54:40
last_read_id - да, id последнего прочитанного пользователем сообщения в этом чате Ну, обычный чат) По поводу "ничьи" - сорян, когда накидывал схему для чата, забыл - в messages есть user_id
И как Вы этот last_read_id собираетесь поддерживать? Это ссылка на id в messages (где FK, в таком случае)? А этот id в messages генерируется sequence (который, кстати, не обязан выдавать возрастающие со временем значения в параллельных процессах)?

Александр
11.12.2017
21:54:52


Google
Yaroslav
11.12.2017
21:55:27
Я так понимаю, что он очень простой
Про логическую? В основном, в документации....

Мытко
11.12.2017
21:55:41
А есть смысл читать какие-то книги, где более подробно об этом рассказывается?

Александр
11.12.2017
21:56:28
не нарисовал

Поправил) https://drive.google.com/file/d/1Rouq7WyJeWo5c47U0k-RBaaJ0Eagz9Tr/view?usp=sharing

Александр
11.12.2017
21:59:13
Это единственное место, где можно указать последнее прочитанное сообщение. Там конкретный пользователь в конкретном чате. А клиенту нужно галочку о прочтении ставить

Мытко
11.12.2017
21:59:53
А Вы это видели в какой-то книге? Она же в vanilla PostgreSQL только что появилась...
Не видел. Я кроме доки по постгресу ничего не читал

Yaroslav
11.12.2017
22:00:20
На неё же даже ничего не ссылается, какой вообще смысл в суррогатном ключе в таком случае?

Не видел. Я кроме доки по постгресу ничего не читал
Я вот тоже в книгах этого ещё не видел.

Александр
11.12.2017
22:01:59
Ещё раз —- зачем в этой таблице _поле_ id?
Понял, про что вы) Проще работать. А она накладывает какую-то нагрузку?

Yaroslav
11.12.2017
22:02:43
Понял, про что вы) Проще работать. А она накладывает какую-то нагрузку?
Не существенную. Просто смысла в нём никакого нет. ;)

Александр
11.12.2017
22:04:20
Не думаю, что это как-то ускорит/замедлит/увеличит комфорт работы с базой)

Yaroslav
11.12.2017
22:08:13
Не думаю, что это как-то ускорит/замедлит/увеличит комфорт работы с базой)
<troll> Так почему бы тогда не добавить по парочке случайных полей в каждую из таблиц (с тем же обоснованием)? </troll> ;)

Александр
11.12.2017
22:10:39
ок, объясню: orm не умеет из коробки работать с композитными ключами у модели, ей нужен один primary ключ. В этом случае это не модель, а таблица связи, но это уже просто сила привычки) Ок, убрали id из таблиц связи

Тут как бы куб получается) 3 сущности друг с другом многие-ко-многим)

Yaroslav
11.12.2017
22:16:55
Тут как бы куб получается) 3 сущности друг с другом многие-ко-многим)
А (в одном из вариантов) что такое user_messages? Разве (почти) всей этой информации нет в других таблицах?

Google
Александр
11.12.2017
22:17:06
в postgres нет графов?)

Yaroslav
11.12.2017
22:18:59
в postgres нет графов?)
А зачем? В реляционках графы моделируются таблицей связей (from_node, to_node).

Александр
11.12.2017
22:19:36
А (в одном из вариантов) что такое user_messages? Разве (почти) всей этой информации нет в других таблицах?
Есть, но там есть мета-информация о конкретном сообщении пользователя (прочитанность). Возможно, когда-то понядобится у конкретного пользователя удалять сообщение. Тут фигня в том, что легко выбирать то, что нужно, но при добавлении сообщения все пользователям должны добавиться связи на это сообщение, а при присоединении пользователя к чату нужно добавить связи для пользователя на все сообщения чата

Александр
11.12.2017
22:23:36
Нет, не нужно, но есть подозрение, что появится функция "Удалить сообщение у себя"

Yaroslav
11.12.2017
22:25:59
Нет, не нужно, но есть подозрение, что появится функция "Удалить сообщение у себя"
Тогда Вам нужно модель уточнить, IMHO. Т.е. для себя определить, какие Вам нужны возможности, какие у Вас ограничения, и прикинуть запросы... Кстати, почему бы не посмотреть на готовые решения для аналогичных задач? Например, начиная отсюда: https://stackoverflow.com/questions/6541302/thread-messaging-system-database-schema-design

Александр
11.12.2017
22:30:53
Я смотрел, и всё сводится к этим 2-м вариантам, причем доминирует почему-то вариант с user_message, но я не могу понять, почему

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

Yaroslav
11.12.2017
22:33:30
Я смотрел, и всё сводится к этим 2-м вариантам, причем доминирует почему-то вариант с user_message, но я не могу понять, почему
Наверное, у них есть требование хранения "прочитанности" каждым пользователем для каждого сообщения. Если у Вас такого требования нет, то, казалось бы, и такая таблица Вам не нужна.

Александр
11.12.2017
22:34:38
Не думаю, что такое требование вообще резонно, если честно

Спасибо

Yaroslav
11.12.2017
22:37:40
Вариант без нее хорошо уменьшает нагрузку, но усложняет получение списка чатов с кол-вом непрочитанных сообщений
А в чём сложность-то? Вот производительность этого запроса может быть не очень, но тут уже простого (без недостатков) решения сходу и не придумаешь, мне кажется...

Ilia
12.12.2017
04:34:41
Маленький вопрос у меня возник. Где подробно можно почитать про репликацию в постгресе и так же про logical decoder'ы?
В документации на PG вероятнее лучше всего написано. Книг по PG крайне мало, на русском вообще одна была только. Вряд ли в книгах что то будет по репликации.

Александр
12.12.2017
06:37:16
нет, но популярные фреймворки так и работают - ror/django/laravel, чё там еще забыл)

Ilia
12.12.2017
06:51:26
Все ф топку!

Александр
12.12.2017
07:26:46
Так можно и на самописные фреймворки с багами вернуться)

нет, но популярные фреймворки так и работают - ror/django/laravel, чё там еще забыл)
Они умеют работать с промежуточными таблицами без одного primary, но у модели должен быть один ключ, иначе обновить или удалить модель трудно (если, конечно, не висит уникальный составной ключ)

Google
Alex
12.12.2017
07:29:26
Самописные фреймворки могут быть написаны лучше

Александр
12.12.2017
07:30:08
Нуну, инди-разработчик типа круче тысячных коммьюнити

Alex
12.12.2017
07:30:34
Могут :)

Александр
12.12.2017
07:30:39
И у него есть на это время

Alex
12.12.2017
07:30:53
Но вообще это оффтоп

Александр
12.12.2017
07:32:00
Да, давай закругляться) лучше по чатам че-нибудь подскажите, вдруг можно проще сделать)

Лаврентий
12.12.2017
08:30:22
Подскажите, как сделать выгрузку выборки в формате sql , а не csv?

Лаврентий
12.12.2017
08:40:34
он же таблицы дампит, а мне надо выборку

Alexander
12.12.2017
08:41:58
дамп делает копи. Копи можно и руками сделать.

Anton [Mgn, az09@osm]
12.12.2017
08:42:02
а если вьюшку сдампить?

Alexander
12.12.2017
08:42:07
воспользуйтесь средствами какого-нибудь гуи

там можно экспортировать данные в виде скриптов уже практически везде

умели бы они еще сразу балк инсерт генерировать...

Лаврентий
12.12.2017
08:44:23
для миграции данных в другую субд

через pgadmin 3 не нашел как, там только csv

вариант создания новой таблицы и наполнения им данными из выборки как-то костыльно и некрасиво)

Alexander
12.12.2017
08:48:04
ну Datagrip точно умеет. Кто использует DBeaver, там же тоже есть этот функционал?

Valery
12.12.2017
11:13:08
Люди, подскажите пожалуйста, почему в бд очень много wait_eventов типа buffer_mapping или buffer_io ? Никто не сталкивался? Что значая данные события понятно.

Google
Artem
12.12.2017
11:24:10
ну Datagrip точно умеет. Кто использует DBeaver, там же тоже есть этот функционал?
я бы посоветовал navicat. во первых он может коннектиццо к разным DB, во вторых прекрасно реализует экспорт результата запроса в виде sql файла

Mike Chuguniy
12.12.2017
11:41:42
для миграции данных в другую субд
Тута (али здеся? всё время путаю...) либо искать средства на ресурсах целевой СУБД и прыгать, самоудовлетворяясь и набивая шишки, либо самописные костыли на php, python, perl, java, C/C++, asm...

Mikhail
12.12.2017
12:15:24
Всем привет! Есть проблема с работой pgbouncer. По lifetime pgbouncer рвет соединение с postgres, при этом не рвет соединение с клиентом. Как такие проблемы решать? Проблема в том, что pgbouncer сбрасывает состояние соединения, а клиент об этом даже не знает

Как вообще правильно работать клиенту с pgbouncer?

Max
12.12.2017
13:12:47
Привет! Нет соединения с postgre (pgadmin3). В конфах изменений не делал. Как исправить?

Лаврентий
12.12.2017
13:14:39
ошибка-то какая?

Alexander
12.12.2017
13:15:04
Для того, чтобы принимались любые соединения, нужно слушать не просто 127.0.0.1/32, а 0.0.0.0/32

Alexander
12.12.2017
13:16:32
Можете просто заменить 127.0.0.1/32 на 0.0.0.0/32 и перезагрузить postgresql сервер

Аггей
12.12.2017
13:16:58
Для того, чтобы принимались любые соединения, нужно слушать не просто 127.0.0.1/32, а 0.0.0.0/32
Он слушает * - это даже круче 0.0.0.0... А так да pg_hba поправить надо

nietzschebrod
12.12.2017
13:17:18
0.0.0.0/32 - это што

Max
12.12.2017
13:17:27
ошибка-то какая?
нет соединения

Страница 599 из 1062