
Pavel
15.01.2017
00:58:06
> Хотелось бы чего-то более элегантного.
Кота в нарядной шапочке и вжух?
Что может быть более элегантным чем каскадный внешний ключ?

Alex
15.01.2017
01:01:30
что-то типа
CREATE TABLE "a" (
"id" serial primary key not null,
"b_id" integer not null references "b"("id") on delete cascade
);
CREATE TABLE "b" (
"id" serial primary key not null,
FOREIGN KEY "b"("id") on delete cascade
);
Короче, чтобы без лишних, ненужных полей :)

Pavel
15.01.2017
01:23:00
create table a (id integer primary key);
create table b (id integer primary key);
alter table a add constraint "a_fkey" foreign key (id) references b(id) on update cascade on delete cascade deferrable initially deferred;
alter table b add constraint "b_fkey" foreign key (id) references a(id) on update cascade on delete cascade deferrable initially deferred;

Google

Pavel
15.01.2017
01:23:53
begin;
insert into a (id) values (42);
insert into b (id) values (42);
commit;вот так вставлять
@JWo1F

Shaz
15.01.2017
19:44:27
Не подскажете варианты как использовать elasticksearch для индексации баз в postgres?

Vladimir
15.01.2017
19:54:01
Shaz, у нас отдельный демон, который пишет в эластик новые данные из ПГ

Shaz
15.01.2017
20:02:50

Vladimir
15.01.2017
20:18:52
Сами написали, решенали "на коленке"
Данных немного, поэтому еще раз в 15 минут производим реиндекс на всякий случай

Fike
16.01.2017
00:20:54
если вы бездумно будете гонять данные из базы в эластик один в один, вы нахватаетесь проблем
если там где-нибудь неструктурированные данные с произвольными ключами - там вообще беда будет

Anton
16.01.2017
12:06:54
Коллеги, доброго дня, подскажите как можно реализовать блокировку пользователя после 5ти неудачных входов в систему за определенный период ( к примеру 10 минут ) ?

Michael
16.01.2017
12:08:00

Anton
16.01.2017
12:08:28
да.. про него же думал, но чего-то из коробочного нет ?

Dmitry
16.01.2017
12:26:23

Google

Sergey
16.01.2017
12:34:03
Использовать PAM?

Тигран
16.01.2017
12:34:22
и в ней же update какой то колонки подсчета входов и т.п.

Anton
16.01.2017
12:35:34
fail2ban как работает мне ясно, с остальным не особо понятно реализация блокирования пользователя после неудачных входов
subj ясен, думал что-то есть чего не знаю, спасибо !

inqfen
16.01.2017
12:44:38
если ip превысил попытки - добавляется туда

Alex
16.01.2017
13:29:36
Народ, а как сделать связь one-to-many, но так, чтобы как только удалились все зависимые записи, удалялся и сам элемент?
Например, у меня есть картинка, юзеры могут пересохранять ее к себе, но как только все ее удалили она должна уйти из БД.

Dmitriy
16.01.2017
13:35:53
разве что триггерами. Подсчитывать количество ссылок на запись в отдельном поле (one), как только станет 0 - удалять запись. При вставке в (many) инкрементить счетчик в (one)

Alex
16.01.2017
14:03:22
Т.е. легче мне будет сделать уже на сервере :)
Еще вопрос: прочитал про массивы в pgsql, круто. Но как настроить, чтобы у меня массив чисел был связан с айдишниками в другой таблице? Типа references?

Alexander
16.01.2017
14:30:00
никак, это было, но выпилили из-за перформанса

Alex
16.01.2017
14:33:26
пытаться обеспечивать консистентность данных на уровне хранимок или приложения

Andrey
16.01.2017
14:35:11

Kirill
16.01.2017
14:36:33
патч был, но не от постгреспро
некоторой функциональности можно и через check + триггеры добиться, просто оно как бы не всегда и нужно раз уж там массив

Alexander
16.01.2017
14:38:56
да, патч был в 9.2 или 9.3. можно найти в мейлинг листах

Vadim
17.01.2017
07:06:53

Kirill
17.01.2017
07:33:29
да, если кому интересно то вот описание в блоге 2ndquadrant http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

Vladislav
17.01.2017
07:38:15

Google

Vladislav
17.01.2017
07:39:03
Ну и почему за счет денормализации идет ускорение, я так и не понял, хотя должно быть наоборот

Yury
17.01.2017
07:40:19

Vladislav
17.01.2017
07:40:54

Yury
17.01.2017
07:41:32

Alex
17.01.2017
07:41:33
правильней говорить все привыкли работать с нормализованными данными

Vladislav
17.01.2017
07:42:08
Это все таки не колоночная бд

Yury
17.01.2017
07:42:52

Alex
17.01.2017
07:42:55
всё зависит от того насколько вы это дермолизуете )

Yury
17.01.2017
07:43:44
это ведь надо не с бухты барахты делать... это конкретный подход который решает конкретную проблемму
но это лучше чем 16 join... если конечно место есть
и write не страшен
нормализация она больше про то, что бы не хранить ничего лишнего (в стародавние времена диски были маленькие).
Сейчас это не так остро стоит но надо уже думать о сокрости записи, хотя у многих проектов 5% запись 95% чтение.

Dmitry
17.01.2017
07:47:30

Yury
17.01.2017
07:47:43

Dmitry
17.01.2017
07:47:49
чё?

Yury
17.01.2017
07:48:01
данные == место на диске
нету избыточных данных - лишнее место не занимается

Dmitry
17.01.2017
07:49:01
Юр, представь базу кредитов выдали кредит человеку с паспортом Иванов Иван Иванович, как ты это будешь хранить в денормализованной базе?

Fike
17.01.2017
07:49:32

Google

Anton [Mgn, az09@osm]
17.01.2017
07:50:09

Alex
17.01.2017
07:50:57

Yury
17.01.2017
07:51:06

Dmitry
17.01.2017
07:51:43

Vladislav
17.01.2017
07:52:08
наоборот
Почему наоборот? Только если индекс читать, не много, как только надо вытащить более двух полей, это сразу чтение всех данных

Alex
17.01.2017
07:52:17
не считая накладных расходов на work_mem всё работало отлично

Yury
17.01.2017
07:52:44

Alex
17.01.2017
07:53:37
с этим не буду спорить

Dmitry
17.01.2017
07:53:40
ну Юр, ты какую-то шляпу про место несешь. место не причем. задача - избавление от избыточных данных. избыточные данные - лишняя возможность для ошибки.

Yury
17.01.2017
07:53:40

Alex
17.01.2017
07:54:20
в вк в мускуле такое хранят как-то вроде местами
(это к слову о нагрузке)

Dmitry
17.01.2017
07:56:40
что fb что vk - штучные продукты, со своими костылями, что вы под одну гребенку всех зачесываете?

Alex
17.01.2017
07:57:24
не такие уж и штучные, хотя со своми тараканами

Yury
17.01.2017
07:57:44

Alex
17.01.2017
07:57:45
в плане субд там всё достаточно традиционно

Mike Chuguniy
17.01.2017
07:58:19

Google

Mike Chuguniy
17.01.2017
07:59:17
А повышение скорости запросов при денормализации - это такое вот из мыскля приползло несколько-летней давности.
Вадим Ткаченко тогда в мыскльперформансблоге выступил, что для оченно ускорения, денормализация - это очень хорошо и правильно. Я, прочитав тот материал, возрыдал слезами горючими.

Vladislav
17.01.2017
08:00:35
Это повышения формирование таблицы фактов
Вот только таблица фактов в полном виде нужна в редких случаях и обычно там скорость не нужна

Mike Chuguniy
17.01.2017
08:02:24

Vladislav
17.01.2017
08:03:08

Fike
17.01.2017
08:03:08

Vladislav
17.01.2017
08:03:28

Anton [Mgn, az09@osm]
17.01.2017
08:03:37
кстати про сложность против "негде запутаться". ОRМ-ы на плоской таблице точно ничего лишнего не придумают. так что в этом точно есть свои плюсы.

Yury
17.01.2017
08:03:39

Ivan
17.01.2017
08:04:07

Yury
17.01.2017
08:04:16

Fike
17.01.2017
08:04:23

Vladislav
17.01.2017
08:04:42

Dmitry
17.01.2017
08:05:07

Fike
17.01.2017
08:05:10