
Alexander
21.08.2018
11:42:36
спасибо

Yaroslav
21.08.2018
11:46:08
спасибо
То есть да, reload-а достаточно. А то как-то непонятно ответил. ;)

Nikita
21.08.2018
12:16:34
Всем привет. Хочу сделать репликацию через слоты. Можно ли сделать так: поднимается слот на мастере, делается pg_basebackup на стэндбае и при этом веб-приложения продолжают работать с базой?
или обязательно нужно, чтобы не было обращений к БД?

Google

Anton
21.08.2018
12:18:56
Скорее всего очень быстро все засинхронизируется по окончании выполнения транзакций и работа так и будет продолжаться.
Даже не заметите

Nikita
21.08.2018
12:21:10

Anton
21.08.2018
12:22:27
Это прям очень гениально с точки зрения идеи придумано. Меня это восхищает :)

Eugene
21.08.2018
12:25:53
Всем привет. Ребята, кто с обертками работал. Что лучше, красивее и быстрее?
foreign table -> table с триггером на обновление и селектить из таблицы на PG
ЛИБО
foreign table -> materialized view и refresh в расписании, скажем
И знает ли кто, возможна ли группировка схем?

Yaroslav
21.08.2018
12:28:39

Nikita
21.08.2018
12:30:27

Anton
21.08.2018
12:31:37

Sergey
21.08.2018
12:31:50

Google

Eugene
21.08.2018
12:31:57
postgres_fdw, тащим данные с Sybase и MSSQL, они обновляются там, тащим на PG (не спрашивайте, зачем).
Нужно быстренько усечь часть данных и прогнать на них процедурки.

Anton
21.08.2018
12:33:16
А усекать до не получится?

Yaroslav
21.08.2018
12:35:08

Nikita
21.08.2018
12:38:01
@antihaos @SergeyPpro спасибо. И последний вопрос - узнать прогресс репликации можно через pg_replication_origin_progress()?


Eugene
21.08.2018
12:42:01
Усекать до можно, надо замерять, что быстрее, создание foreign таблицы в принципе не занимает большого времени, тут больше вопрос к идеологии, и к тому, как грамотно.
На одной базе, которой ведает Sybase лежит огромное количество различных процедур, часть из которых работают плохо. Было принято решение часть процедур для ежедневного выполнения перетянуть на pg, ясен красен, данные нужно брать с прежнего сервера, используем обертки. Как усечь? Брать данные за последний день, например.
При всем этом должен быть задел на то, чтобы точку входа подсунуть PG напрямую
Возможно стоит создать отдельную схему для подобных вещей, и тогда в принципе будет неважно, как данные представлять, либо использовать ту же структуру, но подливать данные в материализованые вьюхи, чтобы соблюдать смысловое разграничение. Может просто у кого-то был опыт с замерами всего этого дела, ибо тянуть данные напрямую с обертки оооооочень долго.


Yaroslav
21.08.2018
12:48:14
Усекать до можно, надо замерять, что быстрее, создание foreign таблицы в принципе не занимает большого времени, тут больше вопрос к идеологии, и к тому, как грамотно.
На одной базе, которой ведает Sybase лежит огромное количество различных процедур, часть из которых работают плохо. Было принято решение часть процедур для ежедневного выполнения перетянуть на pg, ясен красен, данные нужно брать с прежнего сервера, используем обертки. Как усечь? Брать данные за последний день, например.
При всем этом должен быть задел на то, чтобы точку входа подсунуть PG напрямую
То есть, postgres_fdw тут на самом деле ни при чём?
А что за процедуры, что-то вроде отчётов?
А если нет, куда Вы их результаты будете сохранять?
> Как усечь? Брать данные за последний день, например.
По идее, да, можно сделать matview на FDW, и обновлять "по требованию".
А вот как и что вы хотите делать триггерами, я не понял. :(
> тянуть данные напрямую с обертки оооооочень долго.
В смысле, тянуть прямо из foreign table?
Да, это запросто, т.к. большинство FDW (кроме postgres_fdw), эээ... не очень качественные. ;)


Eugene
21.08.2018
12:53:50
Не совсем, я так полагаю, до меня обертки для серверов/баз создали и они присутствуют в pg.
Да, типа отчетов.
Можно по требованию, но лучше делать обновление через расписание (мне это видится оптимальным решением) перед запуском тестов. В каком-нибудь cron.
Предыдущий сотрудник писал триггеры, которые обновляют усеченные таблицы на PG. Но имхо это неудобно и некрасиво. Хватит двух сущностей, еще третью создавать((
Да, из foreign table. Подсовывать процедурам данные из foreign table - неэффективно (капитаню, наверное)
Да, я так понимаю, работать людям есть куда))

Sergey
21.08.2018
12:54:01

Nikita
21.08.2018
12:55:14

Anton
21.08.2018
12:57:13

elfiki
21.08.2018
12:57:57
refresh materialized view concurrently
с уникальным индексом на вьюхе

Eugene
21.08.2018
12:58:03
можно использовать refresh

Yaroslav
21.08.2018
12:58:31
Не совсем, я так полагаю, до меня обертки для серверов/баз создали и они присутствуют в pg.
Да, типа отчетов.
Можно по требованию, но лучше делать обновление через расписание (мне это видится оптимальным решением) перед запуском тестов. В каком-нибудь cron.
Предыдущий сотрудник писал триггеры, которые обновляют усеченные таблицы на PG. Но имхо это неудобно и некрасиво. Хватит двух сущностей, еще третью создавать((
Да, из foreign table. Подсовывать процедурам данные из foreign table - неэффективно (капитаню, наверное)
Да, я так понимаю, работать людям есть куда))
> Можно по требованию, но лучше делать обновление через расписание (мне это видится оптимальным решением) перед запуском тестов. В каком-нибудь cron.
Расписание — это всего лишь регулярный вызов "по требованию". :)

Eugene
21.08.2018
12:59:17
Ну да) формулировки - враг программиста

Sergey
21.08.2018
12:59:31


Yaroslav
21.08.2018
12:59:40
Не совсем, я так полагаю, до меня обертки для серверов/баз создали и они присутствуют в pg.
Да, типа отчетов.
Можно по требованию, но лучше делать обновление через расписание (мне это видится оптимальным решением) перед запуском тестов. В каком-нибудь cron.
Предыдущий сотрудник писал триггеры, которые обновляют усеченные таблицы на PG. Но имхо это неудобно и некрасиво. Хватит двух сущностей, еще третью создавать((
Да, из foreign table. Подсовывать процедурам данные из foreign table - неэффективно (капитаню, наверное)
Да, я так понимаю, работать людям есть куда))
> Предыдущий сотрудник писал триггеры, которые обновляют усеченные таблицы на PG. Но имхо это неудобно и некрасиво. Хватит двух сущностей, еще третью создавать((
Вот этого-то я и не понял. :( Триггеры где, в PostgreSQL? Так они не "чувствуют" обновлений на "той стороне" (в MS SQL, например).

Google

Eugene
21.08.2018
12:59:41

elfiki
21.08.2018
12:59:55

Eugene
21.08.2018
13:00:07
Спасибо!

Yaroslav
21.08.2018
13:00:50

Anton
21.08.2018
13:01:30

Eugene
21.08.2018
13:02:09
concurency в pg пока не трогал. По моим ощущениям, вьюха полностью обновляется

elfiki
21.08.2018
13:02:34
Просто не блокируется на время обновления

Yaroslav
21.08.2018
13:02:38
Не совсем, я так полагаю, до меня обертки для серверов/баз создали и они присутствуют в pg.
Да, типа отчетов.
Можно по требованию, но лучше делать обновление через расписание (мне это видится оптимальным решением) перед запуском тестов. В каком-нибудь cron.
Предыдущий сотрудник писал триггеры, которые обновляют усеченные таблицы на PG. Но имхо это неудобно и некрасиво. Хватит двух сущностей, еще третью создавать((
Да, из foreign table. Подсовывать процедурам данные из foreign table - неэффективно (капитаню, наверное)
Да, я так понимаю, работать людям есть куда))
> Подсовывать процедурам данные из foreign table - неэффективно (капитаню, наверное)
Ну да, скорее всего. Я так понимаю, что многие FDW делают по принципу "для начала пусть хоть-как то работает"... что потом переходит в "да ладно, и так сойдёт". ;)
> Да, я так понимаю, работать людям есть куда))
Это да.


Sergey
21.08.2018
13:03:28

Yaroslav
21.08.2018
13:03:33

Eugene
21.08.2018
13:04:22
Да, "не чувствуют", все правильно, обновление раньше было в расписании, проглядел.

Anton
21.08.2018
13:05:09

Yaroslav
21.08.2018
13:06:46

Anton
21.08.2018
13:08:53
А еще такой момент- можно как то сделать непрерывный wal? Чтобы проинициализировал кластер и дальше все что происходит копилось и можно было отматывать на любой интервал в начало при желании? Так вообще в практике делается ? Или это плохая идея?

Eugene
21.08.2018
13:08:58
Хм, может быть, кстати говоря. Ну это не сложно, мне просто не хочется хранить еще одну процедуру, если можно refresh накидать во вьюхи. 5млн записей рефрешатся за пару минут

Anton
21.08.2018
13:09:32
Грубо говоря метрики на каждый день

Yaroslav
21.08.2018
13:11:21

Anton
21.08.2018
13:12:49

Google

Eugene
21.08.2018
13:14:20
Кстати, никому не доводилось, может быть чисто случайно использовать jdbc для sybase 2003?
Все перерыл, ни в какую. Pg в этом плане просто чудо. С IDEA в связке работать очень удобно

Nikita
21.08.2018
13:18:06

Terminator
21.08.2018
15:17:25
user будет жить. Поприветствуем!
@unknown000000 будет жить. Поприветствуем!
@ChazzyChaz будет жить. Поприветствуем!

Anton
21.08.2018
15:35:24
подскажите, есть ли простой способ написать свою агрегатную функцию в запросе? например просуммировать квадраты четных значений выборки? или в целом условные выражения в агрегации?

Terminator
21.08.2018
15:39:51
Maks Rybalkin будет жить. Поприветствуем!

Konstantin
21.08.2018
15:42:47

Anton
21.08.2018
15:47:34

Alexander
21.08.2018
15:49:05
https://www.postgresql.org/docs/11/static/sql-expressions.html#SYNTAX-AGGREGATES
В агрегатах можно указывать фильтр. Позволяет в ряде случаев обходится без CASE.

Terminator
21.08.2018
15:53:50
@matyushkins будет жить. Поприветствуем!

Anton
21.08.2018
15:55:16

Terminator
21.08.2018
16:07:01
@sobol будет жить. Поприветствуем!

Anton
21.08.2018
16:33:49
@knizhnik , подскажите, а вот эта штука - IMCS - живая или уже не сильно?

Yaroslav
21.08.2018
17:04:24

Anton
21.08.2018
17:05:00
create materialized view neo_olap as select s,now() as v from generate_series(0,10) s;
create unique index ON neo_olap (s,now);
refresh materialized view concurrently neo_olap ;
в таблице/вьюхе всегда остается 11 строк
а хотелось бы 11, 22, 33

Google

Yaroslav
21.08.2018
17:08:21
а хотелось бы 11, 22, 33
Так и запрос VIEW-а у Вас должен при каждом последующем обновлении возвращать 11, 22, 33 строк.
Такого, чтобы содержимое VIEW-а не соответствовало его запросу, у Вас не получится.

Anton
21.08.2018
17:11:11
угу. вот и я думал как так может быть и мечтать уже начал ?
приходится делать insert into ... from вьюха

Yaroslav
21.08.2018
17:12:02

Anton
21.08.2018
17:12:44
я это понял что выполняется полностью, но тело не очищается ?