
Darafei
24.08.2017
20:22:11
вставлять дату как iso8601

Evgeniy
24.08.2017
20:22:37

Darafei
24.08.2017
20:23:25
в доке, гуглящейся по словам "postgres timestamp", есть примеры

Evgeniy
24.08.2017
20:24:54

Google

Darafei
24.08.2017
20:25:15
unix [epoch] time[stamp]

Evgeniy
24.08.2017
20:25:36

Alexander
25.08.2017
05:58:56
ребят, какой самый правильный способ сделать глобальные идентификаторы? допустим, есть база данных, там несколько табличек, хочется, чтобы у каждого объекта был некий uuid, который бы был с ним связан, то есть по uuid можно было бы установить название таблицы и pk объекта в ней..
первое, что приходит в голову - сделать отдельную таблицу идентификаторов, там id (pk), uuid (unique), table_name, table_object_id, а со стороны всех других таблиц сделать uuid_fk со ссылкой на эту таблицу... такой вариант чем-то плох?
то есть чтобы можно было в обе стороны смотреть, по объекту получать его uuid, по uuid получать объект, цель - чтобы было единое пространство имён, чтобы uuid из разных таблиц не пересекались

Darafei
25.08.2017
06:04:27
а почему ты тогда в разные таблицы эти объекты складываешь?

Alexander
25.08.2017
06:05:41
ну, теоретически, можно сделать 1 таблицу, там только uuid и jsonb поле и вообще всё туда запихнуть) это такой универсальный способ описать любую схему)
но у нас ведь не NoSQL ?

Mike Chuguniy
25.08.2017
06:06:05
Вам необходимо уяснить, что в БД есть системный каталог, а именно - схемы pg_catalog, которая родная постгресовая, и information_schema,
1. https://www.postgresql.org/docs/current/static/catalogs.html
2. https://www.postgresql.org/docs/current/static/information-schema.html
В этих схемах реализовано решение вашей задачи.

Oleg
25.08.2017
06:29:24

Darafei
25.08.2017
06:32:09

Ivan
25.08.2017
06:35:48

Google

Alexander
25.08.2017
06:36:27

Ivan
25.08.2017
06:36:51
зачем?

Alexander
25.08.2017
06:37:54
uuid используются как внешние идентификаторы, пользователю при этом лучше не показывать, как устроена схема данных, сколько там данных внутри таблицы, какие названия таблиц и прочие такие вещи
то есть вместо ссылки users.123 хочется некий uuid
который бы заменял название таблицы и ид объекта в ней
возможно, стоило бы генерировать uuid по какому-нибудь особому алгоритму, который бы включал в себя код таблицы, то есть чтобы можно было бы как-то восстановить это из uuid
и тогда просто в каждую таблицу можно было бы добавить поле uuid и всё, не делая отдельную таблицу вообще


Ivan
25.08.2017
06:43:58
В целом, не должно быть проблем с отдельной таблицей которую ты обозначил, но проблема вся в том, что ты считаешь что если отдаёшь юзеру идентификатор users/pk или users/uuid, то раскрываешь ему структуру таблиц, тогда как на самом деле ты отдаёшь ему доменную модель которая под капотом может быть и из нескольких таблиц, и из NoSQL, etc...
т.е. ещё раз задумался бы о задаче :)

Kirill
25.08.2017
06:47:05
для пущего эфекта можно вот это прикупить http://stupidcasual.ru/suveniry/shapochki-iz-folgi/

Ilya
25.08.2017
06:48:18

Alexander
25.08.2017
06:48:34
если отдаю users/pk то как минимум раскрываю то, сколько там примерно объектов) а если сделать такой же запрос через некоторое время, то будет понятно, сколько объектов добавилось за это время) то есть уже какие-то выводы можно сделать)
необходимость во внешних идентификаторах типа uuid, а не int я осознаю чётко)
а про доменную модель - ну, если можно не показывать, зачем показывать?)

Ivan
25.08.2017
06:48:45

Kirill
25.08.2017
06:57:47

Darafei
25.08.2017
07:01:28
ну, если очень хотите - положите тип объекта в шестую букву uuid
вычислительно не сильно убьётесь, оттрассировать такое надо постараться, зачем - в общем тоже непонятно
или в остаток от деления по модулю, не кратному двум, чтобы визуально вообще не нашлось

Ilya
25.08.2017
07:07:26

Google

Alexander
25.08.2017
07:14:47
реально слегка пугает только то, что эта таблица с идентификаторами будет по количеству записей равна количеству записей во всех других таблицах вместе взятых

Kirill
25.08.2017
07:20:12

Alexey
25.08.2017
07:20:53

Darafei
25.08.2017
07:21:12
ну, ууиды удобно, но скрывать семантику запроса - странная тема

Ilya
25.08.2017
07:23:20

Ivan
25.08.2017
07:23:22

Jim
25.08.2017
07:41:18
посоны, а fuzzystrmatch в пг с русским языком норм работает?
треба нечёткий поиск по паре таблиц реализовать

Stas
25.08.2017
07:45:14

Jim
25.08.2017
07:50:30
а то смущает алярма на странице с докой https://postgrespro.ru/docs/postgrespro/9.5/fuzzystrmatch что оно с юникодом не очень

Adikhanov
25.08.2017
11:06:39
Здравствуйте. Нужна помощь в разъяснении как правильно выполнить соединение INNER JOIN. При выборе записей из таблицы отчета, использую соединение таблиц для вывода информации о сотрудниках. В одном из соединении я использую внутреннее соединение, поскольку нужно вывести именно те записи которые присутствуют в обоих таблицах.

Adikhanov
25.08.2017
11:07:18
При использовании данного соединения, время выполнение запроса превышает 130 сек
при использовании LEFT JOIN время выполнение запроса не превышает 9 сек

Darafei
25.08.2017
11:08:58
explain?
-> https://explain.depesz.com/

Adikhanov
25.08.2017
11:20:41

Alex
25.08.2017
13:24:41
Игорь доброго времени суток , с помощью psql на порт 5432 обычно обращаюсь к патрони ,а через haproxy не получается в логах постгреса все тихо, у вас не встречалась такая проблема ?
Конфиги и тесты :
https://pastebin.com/j66knwEm

Игорь
25.08.2017
13:29:10

Alex
25.08.2017
13:30:29

Google

Alex
25.08.2017
13:31:25
по идее ведь он должен с порта 5000 соединить меня с одним из серверов ?

Аггей
25.08.2017
13:35:51
на 8008 скрипт висит ?

Alex
25.08.2017
13:36:44
А что у вас с check port?
чек порт это rest api patroni
-bash-4.2$ curl http://10.80.80.195:8008
{"database_system_identifier": "6454854252090454266", "postmaster_start_time": "2017-08-21 03:32:41.782 EDT", "xlog": {"received_location": 7298089280, "replayed_timestamp": null, "paused": false, "replayed_location": 7298089280}, "patroni": {"scope": "pg1", "version": "1.2.5"}, "state": "running", "role": "replica", "server_version": 90603}

Admin
ERROR: S client not available

Аггей
25.08.2017
13:37:13
Я просто с патрони дел не имел - не вкурсе )

Konstantin
25.08.2017
18:46:40

Alex
25.08.2017
18:48:16
Тебе нужно на 5000 подключаться
Я пробовал :
[root@localhost ~]# psql -h 10.80.80.195 -p 5000 -U patroni -W -d postgres -c "select inet_server_addr();"
Password for user patroni:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

Konstantin
25.08.2017
18:49:51
Ну это ничего не меняет, порт 5000, вопрос в конфигурации
Конфиг сам составлял? Статистику хапрокси смртерл, бэкенд жив?

Alex
25.08.2017
19:01:30
конфиг взял с шаблона патрони и изменил под свои IP

Konstantin
25.08.2017
19:10:13
У них там есть кривые конфиги
Тестовые в репе зачем-то, а кто мастер? 196?

Alex
25.08.2017
19:11:49

Konstantin
25.08.2017
19:12:54
role": "replica"

Alex
25.08.2017
19:13:17
завтра посмотрю на работе бекенд haproxy ,а пока подниму у себя на виртуалках и буду тестить

Konstantin
25.08.2017
19:13:37
Чек урл как я помню только мастер отдаёт

Just
26.08.2017
02:28:36
всем привет, нужно создать индекс на существующих партициях, созданых с помощью pg_pathman, это вручную для каждой таблицы надо делать или можно сразу для всех?
врочем, создал вручную, но если есть способ получше (можеш что-то типа create index on table_name ... select table_name ...), то будет интересно узнать

Google

Ildar
26.08.2017
07:37:37
штатного способа пока нет. Но можно, например, как-то так:
do
$$
declare
rec record;
begin
for rec in select * from pathman_partition_list where parent = 'test'::regclass
loop
execute format('create index on %s (id)', rec.partition);
end loop;
end
$$
language plpgsql;

Ilya
26.08.2017
07:52:45

Петр
26.08.2017
08:01:00
Удивительно как много народа пользует pg_pathman, на сколько помню он не создает автоматом новые партиции, это же жутко неудобно

Ilya
26.08.2017
08:08:16
Я так делал

Петр
26.08.2017
08:08:45
зачем тогда он вообще нужен?

Ilya
26.08.2017
08:09:41

Петр
26.08.2017
08:09:48
Мы тоже

Ilya
26.08.2017
08:10:08
Лисапедил своё на хранимках
Все работает

Петр
26.08.2017
08:10:33
но как-то решил покрутить pg_pathman для партицирования в заббиксе
проще триггером и удобнее

Ildar
26.08.2017
08:14:45

Петр
26.08.2017
08:15:22
Это новая функциональность? Или я невнимательно смотрел когда-то?

Ildar
26.08.2017
08:15:59
нет, не новая. Вроде бы с первого релиза было