
Evgeniy
16.03.2018
15:36:21
она правда не про постгрес

Mike Chuguniy
16.03.2018
15:36:31
:D
Чегой-то меня на старое, доброе, вечное потянуло...

Google

Mike Chuguniy
16.03.2018
15:38:01

Darafei
16.03.2018
15:45:25

Evgeniy
16.03.2018
15:51:46
я могу в социальные бонусы дописать к колбасе возможность посмотреть на постгрес!
с паролем у суперюзера
вот это все

ros
16.03.2018
15:59:01
Не светить postgresql наружу
проблема не в том что постгря светится, а в том что на хосте с создается пользаватель postgres и некоторые умники задают ему пароль postgres чтоб не забыть.
сама атака идет через ssh.
покрайней мере я с таким столкнулся у одних сайтописатилей. не могли понять откуда майнер ставится)

nietzschebrod
16.03.2018
17:51:06
Господи парольная авторизация на сисяш

Миша
16.03.2018
19:39:43
Стоит ли юзать json поля в базе. В pgsql эта тема я смотрю сильно развита, есть jsonb с кучей прикольных штук. Может есть хорошая статейка на эту тему? В моем случае переводы полей в jsonb.

Yaroslav
16.03.2018
19:47:48

Миша
16.03.2018
19:53:08

Yaroslav
16.03.2018
19:54:05

Миша
16.03.2018
19:58:35

Yaroslav
16.03.2018
20:00:51
А ищите вы их как? По идентификатору статьи?
Мне кажется, что вряд ли JSONb будет быстрее, чем просто:
translation(article_id, language, text).

Google

Darafei
16.03.2018
20:07:13
а вам когда-нибудь нужны два языка одновременно?

Alex
16.03.2018
20:35:39

Murrain
16.03.2018
20:38:11

Павел
17.03.2018
08:02:04
Привет всем!
Есть такая таблица Table:
id - автоинкремент
date_time - текущее время
...... тут еще всякие поля.
Вставляю данные:
INSERT INTO Table SELECT now() .... тут ещё всякие значения.
Получаю ошибку: столбец "id" имеет тип integer, а выражение - timestamp with time zone (символ 752)
Ожидаю, что автоинкремент будет автоматически нкрементироваться.
Если это не верное ожидание, то что надо вставлять в id?

Vitalii
17.03.2018
08:38:07
nsert into table (date_time) ... ?

Павел
17.03.2018
08:41:18

Vitalii
17.03.2018
08:42:06
INSERT INTO Table (date_time, amount) SELECT now(), cons.amount FROM cons

Павел
17.03.2018
08:42:37

Миша
17.03.2018
11:17:45
Как назвать таблицу в которой хранятся связки. Типа user_id segment_id

Alexey7
17.03.2018
11:35:08
user_segment и назови

Ilya
17.03.2018
16:49:00

Oleg
17.03.2018
17:59:36
Встречайте mysql пользователя

Sergey
17.03.2018
18:09:24
мое вам сочувствие

Ilya
17.03.2018
18:09:50

lenar
17.03.2018
18:10:26
и аватарка в тему)


Daniel
17.03.2018
18:41:27
Всем привет. У меня казалось бы простая задача, но что-то не могу сообразить как лучше зайти.
Есть дерево категорий огромной вложенности. Нужно по определенным параметрам (where), с сортировкой, лимитами и оффсет, вывести, допустим, 5 записей категории 1. Для каждой из 5 записей категории 1 сделать выборку по параметрам 5 дочерних элементов, также с сортировкой - назовем это категорией 2. Если для записи из категории 1 не находится пары в категории 2 (например на прошла по where), то эта запись (из категории 1) не должна участвовать в запросе. Далее также выбираем категории 3, 4, 5. Если мы составили дерево вплоть до 4 категории, но на 5 мы не нашли элементов по параметрам - вся ветка не учитывается. Надеюсь понятно объяснил. При этом очень важно иметь возможность нормально сортировать данные, делать offset и limit.
Пытался делать JOINами и через WITH - все получается и с приемлемой скоростью. Но проблема в том, что мне нужно для каждого уровня задавать свои лимиты, сортировку, отступ, а не для всего результата выборки в целом.
Куда в такой ситуации смотреть?


Alexander
17.03.2018
19:34:00
Приветствую!
Сложно по такому описанию что-то конкретное посоветовать.
Могу только сказать, что ORDER BY, LIMIT и OFFSET можно делать не только в конце, но также и внутри WITH, а также вообще любого подзапроса.

Google

Daniel
17.03.2018
19:44:41
я пытаюсь грубо говоря сделать граф. если у категорий вверху есть нужные потомки подпадающие под условие, то нужно вывести эти верхние категории вместе с вложенными, но не больше такого-то кол-ва
внутри JOIN я не могу сделать limit, потому что на следующем шаге данные будут джойнится уже к ограниченному множеству. а мне нужно установить связность, а уже потом отрезать лишнее. вот как-то так


Pavel
17.03.2018
19:47:22
Всем привет. У меня казалось бы простая задача, но что-то не могу сообразить как лучше зайти.
Есть дерево категорий огромной вложенности. Нужно по определенным параметрам (where), с сортировкой, лимитами и оффсет, вывести, допустим, 5 записей категории 1. Для каждой из 5 записей категории 1 сделать выборку по параметрам 5 дочерних элементов, также с сортировкой - назовем это категорией 2. Если для записи из категории 1 не находится пары в категории 2 (например на прошла по where), то эта запись (из категории 1) не должна участвовать в запросе. Далее также выбираем категории 3, 4, 5. Если мы составили дерево вплоть до 4 категории, но на 5 мы не нашли элементов по параметрам - вся ветка не учитывается. Надеюсь понятно объяснил. При этом очень важно иметь возможность нормально сортировать данные, делать offset и limit.
Пытался делать JOINами и через WITH - все получается и с приемлемой скоростью. Но проблема в том, что мне нужно для каждого уровня задавать свои лимиты, сортировку, отступ, а не для всего результата выборки в целом.
Куда в такой ситуации смотреть?
Вложенные запросы не?


Daniel
17.03.2018
19:48:56
Вложенные запросы не?
думаю сейчас попробовать зайти через EXISTS, но придется тогда в несколько запросов делать наверное, если вообще получится. данные объемные, неясно что выйдет. или вы другое что-то имели ввиду?

Pavel
17.03.2018
19:49:46
Я не до конца понял задачу, но мысль такая, что отрезать лишнее на уровне дополнительных подзапросов

Daniel
17.03.2018
19:50:12
это было бы хорошее решение, но дело в том, что данные нужны от каждого уровня

Pavel
17.03.2018
19:50:20
А потом из джойнить
И неизвестно сколько и чего нужно будет?

Daniel
17.03.2018
19:50:58
придется минимум дважды делать одни и те же запросы по очень большой базе

Pavel
17.03.2018
19:51:35
Может есть смысл процедуру?
И внутри ее на каждом шаге отрезать лишнее

Alexander
17.03.2018
20:04:46

Daniel
17.03.2018
20:06:32
Может есть смысл процедуру?
возможно, но я в них не умею, поэтому пока не пробовал ) и тут придется не на каждом шаге, а по-строчно - совпало одно - идем вглубь (если так возможно делать). Потому что мы не можем отрезать данные после выборки на одном уровне - мы не знаем, есть ли у них связность с потомками подходящими под условие

Pavel
17.03.2018
20:07:49

Daniel
17.03.2018
20:08:21

Alexey
17.03.2018
20:09:46
А почему не получится сделать 5 джойнов с условиями на parent, для селекта и джойнов сделать фильтрацию, какую вы хотите, а потом посортить и в сортировке указать придется все поля из каждого уровня через запятую
Или кол-во join-ов заранее не известно?

Daniel
17.03.2018
20:11:31
может потребоваться для 5 категорий вывести 15 подкатегорий и для них 10 подподкатегорий. и т.д.

Google

Daniel
17.03.2018
20:11:50

Alexey
17.03.2018
20:24:24
Ну я могу ещё предложить тогда после этих join-ов сделать нумерацию каждого уровня. Видимо, если у тебя 5 уровней вложенности, то нужно 5 раз нумерацию сделать в каждом уровне, используя оконные функции. После нумерации профильтровать для первого уровня на <= 5, для второго - 15, 3-его - 10
Большой запрос получится, не бойся. С бизнес логикой, видимо, часто так

Daniel
17.03.2018
20:27:17
спасибо, попробую и этот вариант

Vitalii
17.03.2018
21:17:30
Есть ли какой-нибудь смысл делать из индекса частичный, добавив условие на not null, по индексируемому полю?

Darafei
17.03.2018
21:19:29
если там есть очень много нуллов - почему нет

1Bot
17.03.2018
21:31:24

vigo
17.03.2018
21:57:42
Почему многие используют для первичного ключа id int а не serial?

Yaroslav
17.03.2018
22:00:09

vigo
17.03.2018
22:00:54
Чат почитал и сделал вывод

Evgeniy
17.03.2018
22:03:49
а ты посмотри во что сериал превращается

Yaroslav
17.03.2018
22:04:56
Чат почитал и сделал вывод
Какой чат, этот?
Но та причина, которую я выше указал, мне кажется вообще единственно разумной для такого выбора...
А, ещё может быть cross-table sequence, но тогда он будет сначала создан, а потом всё равно указан в default при объявлении PK.

Darafei
17.03.2018
22:16:14

1Bot
17.03.2018
22:23:54

Alexey
18.03.2018
06:53:06

Vova
18.03.2018
19:12:20
Что происходит?))