@pgsql

Страница 1001 из 1062
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
Привет всем! Подскажите, есть ли инструкции по реализации кластера postgresql?
Среда - маленькая пятница? А, блин, Ярослав быстрее печатает. :(

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
Смотря что Вы понимаете под кластером...
Аналогия MySQL NDB Cluster, если сталкивались.

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
А как обычно отказоусточивать организуется и репликация данных?
Я только на описание посморел: > NDB Cluster is a technology that enables clustering of in-memory databases in a shared-nothing system. Эээ... при чём тут вообще отказоустойчивость?!

Игорь
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
Я только на описание посморел: > NDB Cluster is a technology that enables clustering of in-memory databases in a shared-nothing system. Эээ... при чём тут вообще отказоустойчивость?!
Меня спросили что я под кластером понимаю. Я ответил, проведя аналогию. Отказойстойчивость, вы сами накрутили уже.

Yaroslav
26.09.2018
07:43:24
Меня спросили что я под кластером понимаю. Я ответил, проведя аналогию. Отказойстойчивость, вы сами накрутили уже.
А это не Ваши слова? > А как обычно отказоусточивать организуется и репликация данных? Я-то думал, что NDB Cluster был приведён как пример того, что Вам нужно, а не просто так. ;)

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

А это не Ваши слова? > А как обычно отказоусточивать организуется и репликация данных? Я-то думал, что NDB Cluster был приведён как пример того, что Вам нужно, а не просто так. ;)
Внимательные просто читайте и все норм будет. Повторю, я ответил про NDB в плане понятия кластера. А потом отдельно спросил как реализуется репликация и отказоустойчивость в psql

Yaroslav
26.09.2018
07:45:04
Artem
26.09.2018
07:47:00
Подскажите пожалуйста новичку, с чего вобще начать. С psql не имел опыта. В основном меня репликация данных интересует, ну на втором месте отказойстойчивость.
Репликация встроенная. Вот здесь документация на русском https://postgrespro.ru/docs/postgresql/10/index . Там все очень хорошо расписано

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, двух серверов просто недостаточно. :(

Andrey
26.09.2018
07:59:46
Вы имеете ввиду для автоматического переключения 2х серверов не достаточно?
А куда денется читающая нагрузка со слейва после переключения на новый мастер, пока старый мастер в отключке, например?

Dmitry
26.09.2018
08:01:07
А куда денется читающая нагрузка со слейва после переключения на новый мастер, пока старый мастер в отключке, например?
Читающая нагрузка - это опциональная штука. К высокой доступности относится весьма косвенно

Yaroslav
26.09.2018
08:03:57
Вы имеете ввиду для автоматического переключения 2х серверов не достаточно?
Я имею в виду следующий простой вопрос: когда единственная синхронная реплика упадёт (или просто станет недоступна), сколько r/w транзакций Вы сможете выполнить на primary? ;)

Andrey
26.09.2018
08:04:13
Читающая нагрузка - это опциональная штука. К высокой доступности относится весьма косвенно
Хорошо. Для автоматического переключения 2 узлов достаточно. Но именно для автоматического переключения. И второй раз сразу же вы переключиться не сможете потому что уже некуда.

Andrey
26.09.2018
08:08:51
Только с целью сохранения данных.
https://postgrespro.ru/education/courses/DBA3

Andrey
26.09.2018
08:09:52
Как раз для автоматического переключения не достаточно. Задача двух генералов для N=2 решения не имеет
Это уже вопрос о выборе нового мастера. Если есть арбитр, то можно и среди 2 выбрать. Patroni так делает, например.

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

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

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

https://postgrespro.ru/education/courses/DBA3
они здесь репликацию на этой же машине запускают.

на саму себя

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
процедуры есть и в postgres
только в 11. Нужна 9.6

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

Ale
26.09.2018
13:49:02
create function

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, и за него Вам должно было бы быть стыдно. ;) Лучше всего сделать это запросом. Можете завернуть его в функцию, и запускать её когда и как хотите.

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

Yaroslav
26.09.2018
14:41:06
Парни, подскажите пожалуйста, если изменить тип колонки(id c integer на biginteger) будут блокировки на таблице в 400мл записей?
Да, будут. Хуже того, это table rewrite, что значит — MVCC-unsafe operation, т.е. запускать параллельно с работающими транзакциями по-хорошему вообще не стоит (лучше дождитесь maintenance window). :(

Парни, подскажите пожалуйста, если изменить тип колонки(id c integer на biginteger) будут блокировки на таблице в 400мл записей?
Кстати, что Вам мешает искать ответы на подобные вопросы проверкой на маленьких таблицах в тестовой базе? ;)

MikaelBox
26.09.2018
14:44:43
Yaroslav
26.09.2018
14:47:48
достаточно почтитать справку по БД и применить элементарную логику
Проверить даже быстрее, мне кажется. ;) Т.к. по мере развития PostgreSQL MVCC-unsafe операции потихоньку превращаются в safe, легче за минуту проверить именно на своей версии.

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

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