@pgsql

Страница 441 из 1062
Darafei
24.08.2017
20:22:11
вставлять дату как iso8601

Evgeniy
24.08.2017
20:22:37
вставлять дату как iso8601
спасибо а я думал timestamp это типа 123345667

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

Evgeniy
24.08.2017
20:24:54
в доке, гуглящейся по словам "postgres timestamp", есть примеры
всё понял((( а как же называется тип подразумеващий тип времени 1233435455

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

Evgeniy
24.08.2017
20:25:36
unix [epoch] time[stamp]
спасибо))

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

В этих схемах реализовано решение вашей задачи.

Darafei
25.08.2017
06:32:09
Google
Alexander
25.08.2017
06:36:27
а почему не в каждую табличку добавлять колонку uuid? у тебя же запросы всё равно будут к конкретной табличке
мне хочется, чтобы был некий единый способ получения объекта по uuid, при этом чтобы можно было не указывать тип объекта

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/

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

Darafei
25.08.2017
07:01:28
ну, если очень хотите - положите тип объекта в шестую букву uuid

вычислительно не сильно убьётесь, оттрассировать такое надо постараться, зачем - в общем тоже непонятно

или в остаток от деления по модулю, не кратному двум, чтобы визуально вообще не нашлось

Google
Alexander
25.08.2017
07:14:47
зачем тогда вообще вы хотите открывать что-то наружу если можно не открывать ?
ну вот для того же API, например) просто хочется некий универсальный способ идентификации объектов, чтобы если вдруг я поменяю там что-то у себя, структуру таблиц или что-нибудь такое, мне не пришлось бы париться про идентификаторы

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

Alexey
25.08.2017
07:20:53
information_schema в постгрес куцый и неполный.
а чего нужного не хватает? я только знаю, что нет аналога мусклевскому information_schema.tables.update_time

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

Ilya
25.08.2017
07:23:20
а чего нужного не хватает? я только знаю, что нет аналога мусклевскому information_schema.tables.update_time
Там не все вытянешь по индексам таблиц. Мне нужно было сверки структуры делать. Кончилось тем что все стал делать через pg_

Ivan
25.08.2017
07:23:22
ну, ууиды удобно, но скрывать семантику запроса - странная тема
во, а то я думал у меня одного такие мысли (:

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

треба нечёткий поиск по паре таблиц реализовать

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

Alex
25.08.2017
13:30:29
Привет! Порт haproxy ведь не 5432 слушает.
порт haproxy : bind *:5000 а слушает он : server postgresql_pg1 10.80.80.195:5432 maxconn 100 check port 8008

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?

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;

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

Петр
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 для партицирования в заббиксе проще триггером и удобнее

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

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

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