
Rushan
26.09.2018
06:02:57

Mike Chuguniy
26.09.2018
06:49:54
Может быть что-нибудь и вам подойдёт

Google

А͗ ̼̞̪̹г̥̮͓͎̻̈́̓͝р̫̫̓ ͓̼е̸̠͙̫͖̪̰̒г̫̟͉̝̤ͧͫа̹̗͔͈̾͟ͅт ̗̔̓ͫ̉о͛̈̅͞р̛ͣͤ
26.09.2018
06:56:38

Andrey
26.09.2018
06:58:44
В экстримкоде, но пруф уже не найду, недели 1,5 назад было...


Yaroslav
26.09.2018
07:30:22
Уважаемые участники канала, подскажите пожалуйста. У меня в одной таблице есть объекты с ПК id типа bigint и в другой таблице колонка с массивом bigint[], содержащим эти id. Мне надо выбрать все строки из второй таблицы, в которых есть в массиве эти id с каким-то условием. Т.е. необходимо выполнить запрос типа такого:
select * from data.requests where places @> ARRAY[select id from data.places where query_id = 202]::bigint[]
Как правильно составить такой запрос? (Вышеописанный выдаёт ошибку.)
Заранее большое спасибо!
Ну так array записывается не так, и оператор Вы тоже, наверное, перепутали...
Что-то вроде:
SELECT *
FROM data.requests AS r
WHERE r.places @> ARRAY(SELECT p.id FROM data.places AS p WHERE p.query_id = 202)
Правда, непонятно, что именно Вам было нужно.
Кстати, совет — всегда квалифицируйте все названия полей ("table.query_id = 202", а не просто "query_id = 202"), а то рано или поздно нарвётесь на сюрприз. :(


Terminator
26.09.2018
07:31:15
@Demuzx будет жить. Поприветствуем!

Demuz
26.09.2018
07:32:54
Привет всем! Подскажите, есть ли инструкции по реализации кластера postgresql?

Yaroslav
26.09.2018
07:33:34

Mike Chuguniy
26.09.2018
07:33:54


Ilia
26.09.2018
07:34:01
Уважаемые участники канала, подскажите пожалуйста. У меня в одной таблице есть объекты с ПК id типа bigint и в другой таблице колонка с массивом bigint[], содержащим эти id. Мне надо выбрать все строки из второй таблицы, в которых есть в массиве эти id с каким-то условием. Т.е. необходимо выполнить запрос типа такого:
select * from data.requests where places @> ARRAY[select id from data.places where query_id = 202]::bigint[]
Как правильно составить такой запрос? (Вышеописанный выдаёт ошибку.)
Заранее большое спасибо!
Ну, вообще-то мягко говоря у тебя ошибка при проектировании БД, нарушение 1НФ.
PG конечно за счёт продвинутых типов данных типа ARRAY даже такую ошибку может разнулить, но в принципе тебе надо менять структуру БД, там, где у тебя одна таблица с ID ПК в массиве, тебе надо иметь две таблицы, ещё одна будет таблицей связи

Demuz
26.09.2018
07:34:38

Mike Chuguniy
26.09.2018
07:34:45
Кластер PostgreSQL - это набор баз, управляемых одним запущенным экземпляром СУБД.

Demuz
26.09.2018
07:35:51
А как обычно отказоусточивать организуется и репликация данных?

Let Eat
26.09.2018
07:36:38
Господа, а чем вы смотрите "историю" транзакции? Хочется понять сколько висят в idle in transaction, сколько планировали, сколько читали с диска, сколько доки ждали и прочие.

Google

Mike Chuguniy
26.09.2018
07:36:42
Отказоустойчивость - средств решения данной задачи совсем не одно.

Demuz
26.09.2018
07:37:40
Ну вот поэтому я у вас и интересуюсь.

Yaroslav
26.09.2018
07:39:46


Игорь
26.09.2018
07:41:15
Господа, а чем вы смотрите "историю" транзакции? Хочется понять сколько висят в idle in transaction, сколько планировали, сколько читали с диска, сколько доки ждали и прочие.
все что ты перечислил, относится к разному. Вот пример один из вариантов:
SELECT DISTINCT ON (queryid) coalesce(d.datname, '~unknown') AS database, coalesce(r.rolname, '~unknown') AS user, s.queryid, (CASE WHEN length(s.query) > 2048 THEN left(s.query,1004) || ' <CONCAT left 1004,right 1004 CONCAT> ' || right(s.query,1004) ELSE s.query END) as query, s.calls, s.mean_time, s.stddev_time, s.rows, s.shared_blks_hit, s.shared_blks_read, s.shared_blks_dirtied, s.shared_blks_written, s.local_blks_hit, s.local_blks_read, s.local_blks_dirtied, s.local_blks_written, s.temp_blks_read, s.temp_blks_written, s.blk_read_time, s.blk_write_time FROM pg_stat_statements s JOIN pg_roles r ON r.oid=s.userid JOIN pg_database d ON d.oid=s.dbid WHERE d.datname NOT IN ('postgres', 'template0', 'template1') AND r.rolname NOT IN ('pgsql', 'postgres');


Demuz
26.09.2018
07:41:53

Игорь
26.09.2018
07:42:44

Yaroslav
26.09.2018
07:43:24

Demuz
26.09.2018
07:43:42
Подскажите пожалуйста новичку, с чего вобще начать. С psql не имел опыта. В основном меня репликация данных интересует, ну на втором месте отказойстойчивость.

Yaroslav
26.09.2018
07:45:04

Demuz
26.09.2018
07:45:59

Artem
26.09.2018
07:47:00

Yaroslav
26.09.2018
07:47:05

Demuz
26.09.2018
07:47:07
Короче говоря, я могу просто на 2,5,10 и т.д. машин поставить psql и на все реплицировать данные, разумеется, чтобы с этих машин можно было еще чтение данных сделать

Yaroslav
26.09.2018
07:49:22
Короче говоря, я могу просто на 2,5,10 и т.д. машин поставить psql и на все реплицировать данные, разумеется, чтобы с этих машин можно было еще чтение данных сделать
Да, можете. А зачем Вам чтение?
Вообще, дело в том, что тут много тонкостей... поэтому лучше сразу и точно пишите, что Вам нужно.
> Чтобы при записи данных, они оказывались на всех машинах сразу
Вот это, например, может означать, что Вам нужна синхронная реплика... а может и нет.


Demuz
26.09.2018
07:51:55
Да, можете. А зачем Вам чтение?
Вообще, дело в том, что тут много тонкостей... поэтому лучше сразу и точно пишите, что Вам нужно.
> Чтобы при записи данных, они оказывались на всех машинах сразу
Вот это, например, может означать, что Вам нужна синхронная реплика... а может и нет.
Стоят две машины, на обеих бд, одна падает, вторая продолжает работать, потом первая поднимается и все данные оказываются на ней тоже.
Если я вобще в этом всем не разбираюсь, могу ил за пару дней реализовать такое?
У меня опыт только с MySQL NDB.

Google

Yaroslav
26.09.2018
07:56:34
Стоят две машины, на обеих бд, одна падает, вторая продолжает работать, потом первая поднимается и все данные оказываются на ней тоже.
Нет, стоп, это вообще так не работает. Я имею в виду в принципе, неважно, какая у Вас СУБД.
Если для Вас недопустима потеря данных вообще, и нужны какие-то гарантии HA, двух серверов просто недостаточно. :(

Dmitry
26.09.2018
07:58:01

Andrey
26.09.2018
07:59:46

Dmitry
26.09.2018
08:01:07

Yaroslav
26.09.2018
08:03:57

Andrey
26.09.2018
08:04:13

Dmitry
26.09.2018
08:04:59

Artem
26.09.2018
08:06:12

Dmitry
26.09.2018
08:07:33

Andrey
26.09.2018
08:08:51

Andrey
26.09.2018
08:09:52

Fike
26.09.2018
08:11:32

Yaroslav
26.09.2018
08:21:28
Если я вобще в этом всем не разбираюсь, могу ил за пару дней реализовать такое?
Придётся Вам разобраться хотя бы в том, что именно Вам нужно, короче говоря.
А там уже "it depends": если желания не превышают Ваши возможности (достаточно серверов, например; Вам не нужно что-то редкое, к примеру, full-ACID асинхронная реплика), то, скорее всего, реализуете.
Т.е. сначала определитесь с задачей, а там уже подскажем, скорее всего. :)

Demuz
26.09.2018
08:22:36
Для начала хватит репликации на соседнюю машину.

Andrey
26.09.2018
08:23:08

Demuz
26.09.2018
08:23:08
Но на крайний случай было бы не плохо оставить возможность "создания" из реплики, мастер-машины. как-то так.
на саму себя

Yaroslav
26.09.2018
08:26:48
Для начала хватит репликации на соседнюю машину.
Асинхронной (т.е. в случае какого-то сбоя транзакции могут быть потеряны, и, в худшем случае, много (т.к. реплика может отстать от primary, по разным причинам)) или синхронной (транзакции не могут быть потеряны, но... см. выше, я уже писал про минусы)?

Dmitry
26.09.2018
08:29:22

Google

Terminator
26.09.2018
08:54:54
@keiraline будет жить. Поприветствуем!


?????
26.09.2018
10:50:18
Привет уважаемым базданщикам и не только!
Питерская биржа рекламы (МедиаТех) ищет опытного DB-разработчка в нашу весёлую scrum-команду.
Что хотим от кандидата:
Работа *Nix на уровне пользователя;
Работа с Docker;
Опыт создания функций и процедур внутри реляционных СУБД (мы используем Postgres);
Опыт работы с CVS (мы используем Git);
Опыт работы с NoSQL (мы используем Redis, Scylla);
Навыки командной работы;
Уровень английского, достаточный для чтения технической документации;
Способность концентрировать внимание в условиях многозадачности
Бонусом будет:
Опыт работы с системой мониторинга Prometheus;
Опыт администрирования PostgreSQL
Почему мы классные:
Можно работать в крупной компании, где свято верят в дух стартапа;
Можно принимать решения в разработке продукта, а не просто работать по ТЗ;
Можно попробовать новые софты и технологии, которые остальные боятся использовать в продакшене;
Если любишь изменения, а не спокойно сидеть в углу -- это здорово, потому что мы постоянно меняем как процессы так и технологии в нашей работе;
Сможешь пробовать себя в разных сферах разработки
Что готовы дать взамен:
Стабильная заработная плата (135к-150к на руки), перспектива роста;
Условия для развития: оплата конференций и тренингов, учебных материалов и курсов;
Постоянная работа в комфортном офисе в бизнес центре А-класса в 5 минутах ходьбы от м. Горьковская;
Гибкий график работы: всегда можно договориться, когда приходить и когда уходить;
ДМС, корпоративный английский;
Кофе, печеньки, йогурты, настольный футбол, корпоративные спортивные и анти-спортивные мероприятия;
Оформление по ТК РФ.
#вакансия #cпб


Terminator
26.09.2018
11:21:03
@Lisaaaal будет жить. Поприветствуем!

Alex
26.09.2018
12:06:37
добрый день, а есть какие-нибудь подходы, чтобы реплицировать еще и сиквенсы при логической репликации?

Andrey
26.09.2018
12:08:27
Ребят, кто в курсе, умеет ли pgbouncer авторизовывать юзеров в самом PG? т.е. чтобы не держать файлик с юзерами еще и на нем

Игорь
26.09.2018
12:09:06
да, умеет

Andrey
26.09.2018
12:17:19
да, умеет
А где можно почитать про это? Гуглится что-то только про auth_file инфа

Айтуар
26.09.2018
12:17:37

Игорь
26.09.2018
12:18:45
auth_query не про то?

Айтуар
26.09.2018
12:19:17
Нужно глянуть в доку.

Игорь
26.09.2018
12:21:53
но я не использовал, могу ошибаться. Может есть какие-то ограничения

Lestat -
26.09.2018
13:45:47
Коллеги, есть задача:
из API сырые данные пишутся в postgres таблицу "a", после чего каждую строку нужно трансформировать и сложить в таблицу "b" предварительно сверив с со всеми строками в таблице "a"
В MSSQL под такие нужды создаётся процедура, внутри которой будет цикл по строкам, преобразование каждой строки, сверка и запись в таблицу "b"
как это реализуется в PG ?

Ale
26.09.2018
13:46:39
процедуры есть и в postgres

Lestat -
26.09.2018
13:47:27

Denis
26.09.2018
13:48:41
в 9.6 тоже есть

Ale
26.09.2018
13:49:02
create function

MikaelBox
26.09.2018
13:50:33

Lestat -
26.09.2018
14:00:57
триггер не подходит, убьет скорость вставки. Хотелось бы переложить данные в другую таблицу например ночью

Yaroslav
26.09.2018
14:06:02
Коллеги, есть задача:
из API сырые данные пишутся в postgres таблицу "a", после чего каждую строку нужно трансформировать и сложить в таблицу "b" предварительно сверив с со всеми строками в таблице "a"
В MSSQL под такие нужды создаётся процедура, внутри которой будет цикл по строкам, преобразование каждой строки, сверка и запись в таблицу "b"
как это реализуется в PG ?
> В MSSQL под такие нужды создаётся процедура, внутри которой будет цикл по строкам, преобразование каждой строки, сверка и запись в таблицу "b"
(Даже) в MS SQL такой подход называется RBAR, и за него Вам должно было бы быть стыдно. ;)
Лучше всего сделать это запросом. Можете завернуть его в функцию, и запускать её когда и как хотите.

Lestat -
26.09.2018
14:08:34

Google

Valery
26.09.2018
14:33:11
Парни, подскажите пожалуйста, если изменить тип колонки(id c integer на biginteger) будут блокировки на таблице в 400мл записей?

Yaroslav
26.09.2018
14:41:06

MikaelBox
26.09.2018
14:44:43

Yaroslav
26.09.2018
14:47:48

Alik
26.09.2018
15:27:36
Привет!
Расскажите, пожалуйста, как вы синхронизируете Postgres с Elasticsearch? Видел zombodb, но он вроде пока сыроват

Lestat -
26.09.2018
16:05:19
как в функции реализовать
x, y = select val1, val2 from table ?
в mssql это
select @x = val1, @y = val2
from table;

MikaelBox
26.09.2018
16:06:31
select val1, val2 into x, y from table

Lestat -
26.09.2018
16:06:47