@pgsql

Страница 909 из 1062
Mikhail
30.07.2018
14:42:53
хм

а тут бан по маске не канает?

ко?TEXHIK
30.07.2018
14:43:53
да он меняет небось куски. уже были идеи сделать по длине. пока чёт не вижу этого такого бота

Денис
30.07.2018
14:50:46
@bondarden посмотрите, какие локали у вас в системах установлены и там, и там, locale -a
Привел два сервера к идентичному состоянию. На обоих в locale -a есть одна и та же локаль ru_RU.utf8 На обоих серверах создал одну и ту же базу данных командой: createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -T template0 test Затем подключился к этой базе и создал там коллате CREATE COLLATION numeric (provider = icu, locale = 'uni-u-kn-true'); В итоге результат проверки разный :( SELECT '2' < '10' COLLATE numeric; == false Что еще смотреть?

Google
Fike
30.07.2018
15:09:29
У нас @Cyberdyne_Systems_bot стоит, он не очень эээ интуитивный, но этих ребят отсеивает. Для работы достаточно было просто добавить его админом с доступом к сообщениям/юзерам.

ко?TEXHIK
30.07.2018
15:12:06
Удваиваю
утраиваю, думал он в этом чате)

Igor
30.07.2018
16:26:26
Привет! Никто не в курсе, Alter Table может выполнять только овнер?

Jim
30.07.2018
16:27:26
либо тот у кого есть права. емнип

Alexander
30.07.2018
16:29:31
Разрослась одна из таблиц, а места на диске не хватает, чтобы сделать vacuum full. Другие таблицы минимального размера. Индексы тоже ужаты. Как схлопнуть файл таблицы не используя vacuum full??

Igor
30.07.2018
16:31:02
либо тот у кого есть права. емнип
права на запись и на чтение я запросто раздаю, а по поводу alter table на стекоферфлоу посоветовали изврат типа ALTER ROLE user6 NOINHERIT; GRANT object_owner TO user6;

Jim
30.07.2018
16:32:45
ну вообще вроде бы роли рулят. кмк можно роли раздавать нужнвм юзерам

Igor
30.07.2018
16:35:35
ну вообще вроде бы роли рулят. кмк можно роли раздавать нужнвм юзерам
Я что-то никак не могу понять, как можно дать права делать ALTER TABLE юзеру, у которого та же роль что и у того, который создавал эту таблицу

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

Yukari
30.07.2018
16:57:45
grant all on table to user?

Да. Лучше ролью.

Google
Vladimir
30.07.2018
17:00:31
grant all on table to user?
All не поможет

Alexander
30.07.2018
17:03:03
pg_repack
Спасибо! Но он требует столько же места, сколько занимает таблица. А его нет совсем. Копаю в эту сторону - https://github.com/dataegret/pgcompacttable

Yukari
30.07.2018
17:03:27
All не поможет
Да, вы правы. Роль с правами владельца схемы спасет.

Igor
30.07.2018
17:08:33
По-моему оптимальней будет всем одну роль присвоить ALTER USER user SET ROLE rw;

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

Vladimir
30.07.2018
17:17:21
Igor
30.07.2018
17:19:48
у роли есть права на изменение схемы С и U

соответвенно после этой команды, вледельцем будет уже роль

Konstantin
30.07.2018
17:57:07
как эти боты достали(

ко?TEXHIK
30.07.2018
17:59:53
как эти боты достали(
Да надо админов достать, чтоб бота добавили

Alexandr
30.07.2018
18:46:58
Не надо админов доставать ;-) Они PG занимаются ;-)

Sergey
30.07.2018
19:06:55
А существует ли какие-нибудь шаблоны проектирования для проектирования схем БД?

Alexandr
30.07.2018
19:16:11
Нормальные формы ;)

Sergey
30.07.2018
19:18:11
В смысле?
Например, есть сущность группа, есть сущность юзер, есть сущность задачи, которые принадлежат и группе и юзеру, внутри группы у юзеров различные роли. По сути задачи это в некоторым смысле ресурсы группы. Ресурсы можно расшарить между другими группами/юзерами. Какие-нибудь подходы к проектированию подобного рода бд

Yaroslav
30.07.2018
19:21:06
Ну мб хватает
Ну так попробуйте... кстати, нормализации не всегда хватает в подобных задачах, но с неё стоит начинать.

Sergey
30.07.2018
19:26:44
Но вообще, а что если ряд сущностей имеют часть одинаковых полей. Например, сущность TextNews: - title - description PromotionNews: - title - description - promotion_id - image VideoNews: - title - desctiption - video И в таком духе

Google
Sergey
30.07.2018
19:30:07
И при этом бэкенд должен отдавать список всех типов новостей. Я конечно, понимаю, что нормализация творит чудеса, но на самом деле кроме создания трёх таблиц мне ничего лучше не предложили

Yaroslav
30.07.2018
19:33:37
И при этом бэкенд должен отдавать список всех типов новостей. Я конечно, понимаю, что нормализация творит чудеса, но на самом деле кроме создания трёх таблиц мне ничего лучше не предложили
А, ну да, это как раз случай, когда не творит. ;) А чем Вам не нравятся три таблицы? И какие конкретно три таблицы (тут может быть много вариантов, как ни странно)?

Sergey
30.07.2018
19:45:28
А, ну да, это как раз случай, когда не творит. ;) А чем Вам не нравятся три таблицы? И какие конкретно три таблицы (тут может быть много вариантов, как ни странно)?
Ну как раз подобные таблички, только их немного больше(на пару-тройку штук). Якобы есть разные типы новостей с разной информацией, эти новости объединяются в некую группу новостей. На фронт нужно отдавать не просто заголовки всех новостей в определенной группе, а якобы список новостей разных типов. Что-то вроде: group/13/ [ 'news': { full TextNews info }, { full PromotionNews info }, { full VideoNews info } ]

Andrei
30.07.2018
19:45:34
Тут вообще можно одной обойтись

С енумом и jsonb

Sergey
30.07.2018
19:46:17
С енумом и jsonb
Ну не совсем пойдет

Например, если поиск нужен

Andrei
30.07.2018
19:46:34
И?

Тайтл и боди в отдельные поля с фулл текст серчем

Всю лишнюю мишуру в jsonb

Который отлично индексируется

Yaroslav
30.07.2018
19:47:46
И?
А я поддержу @bdgwsh — нечего сразу в EAV и его аналоги бросаться (только если уж другого выхода совсем нет).

Yaroslav
30.07.2018
19:49:32
Который отлично индексируется
Не отлично, на самом деле (разве что "поля" вытаскивать в функциональные индексы). И потом получается "сейчас мы запросто напишем свою СУБД внутри вашей СУБД!". ;)

Короче говоря, это похоже на наследование или же разную классификацию одной и той же сущности. Используемые схемы зависят от конкретных деталей.

Sergey
30.07.2018
19:53:37
Для подобных задач есть более-менее "стандартные" подходы без использования JSON и т.п.... сразу скажу, все не без недостатков, IMHO.
В голову ничего кроме создания одной единой таблички, нескольких табличек, вынесения общих полей в ещё одну табличку или использования json не приходит

Evgeniy
30.07.2018
19:54:00
больше табличек богу табличек

как насчет сделать по табличке на каждую сущность и успокоиться

придумывают себе гемор на ровном месте

Sergey
30.07.2018
19:54:59
Только бог табличек сломается, если будет на нескольких табличках одновременно сидеть

Google
Andrei
30.07.2018
19:56:25
только потом будут добавляться все новые и новые таблички, и поддерживать эту ерунду будет все сложнее

Admin
ERROR: S client not available

Andrei
30.07.2018
19:57:57
средствами ОРМ такое процессить - врагу не пожелаешь

Evgeniy
30.07.2018
19:58:23
программировать вообще сложно

Yaroslav
30.07.2018
19:59:41
1. чем плохи функциональные индексы? 2. про свою СУБД не совесм понял
Они плохи тем, что это избыточный уровень абстракции: сначала засунули то, что должно было бы быть полем, в JSON, потом достаём оттуда... Кстати, засунув поле в JSON, вы тихо теряете кое-какие constraints, обычно. Т.е. это совсем не одно и то же.

Andrei
30.07.2018
20:00:39
я стараюсь не совать в JSONb поля, которые отвечают за целостность модели данных

Yaroslav
30.07.2018
20:02:46
Спасибо. У меня орм
Ну, что тут скажешь... что он Вам позволит, то вы и сделаете, наверное. "ORMs make easy things easier, and hard things impossible". ;)

Andrei
30.07.2018
20:03:04
Но вообще, а что если ряд сущностей имеют часть одинаковых полей. Например, сущность TextNews: - title - description PromotionNews: - title - description - promotion_id - image VideoNews: - title - desctiption - video И в таком духе
вот здесь вот например, едиснвтенное поле, которое стоит оговорить - это promotion_id, если не критично - его можно всунуть в JSONb и проиндексировать, в противном случае - в отдельную таблицы многие-ко-многим

всякие имеджи и видео в большинстве случаем можно без потерь хранить в джийсонине

т.к. нужны они только на выдаче резалта

меня сейчас переключили на один интересный нагруженный веб-проект

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

blkmrkt
30.07.2018
20:05:01
да что и говорить, пришлось ОС переустанавливать ?

Andrei
30.07.2018
20:06:09
запилили все через функции, на выход отдаем апликухе джейсонину с резалтом - с производительностью все стало ОК

Google
Andrei
30.07.2018
20:06:28
девы так обрадовались, что теперь все самые сложные места перепиливаем на функции

Andrei
30.07.2018
20:06:50
с одной стороны плохо, что мы жестко впилились в постгрес

но у нас нету планов бегать в другие БД, есть несколько HL/HA проектов с базами по 100Tb

с которыми особых проблем не испытываем

А constraint-ы самих этих полей?
Ваш сорказм мне не понятен

я НЕ ХРАНЮ в JSONb атрибуты связей с другими таблицами

если поле мне нужно для целостности данных, то оно будет отедльным полноценным полем

Yaroslav
30.07.2018
20:09:46
Ваш сорказм мне не понятен
Это не "сорказм", это вопрос. Т.е. было "human_weight CHECK (value>0)" (или REFERENCES), а стало?

с одной стороны плохо, что мы жестко впилились в постгрес
Да эта "кроссплатформенность" в отношении СУБД — вообще в нетривиальных случаях пустые мечты.

Andrei
30.07.2018
20:11:55
blkmrkt
31.07.2018
05:29:07
Вот это да! Возился сутки с медленным поиском, оказалось что нужно было изменить random_page_cost с 4.0 на 2.0. Теперь он делает bitmap heap scan вместо seq scan на 6TB таблице

Mike Chuguniy
31.07.2018
05:33:02
@blkmrkt а скорость выполнения запроса как изменилась?

blkmrkt
31.07.2018
05:33:35
может еще кеш прогрелся пока я тестил, не знаю

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