@pgsql

Страница 282 из 1062
Stanislav
26.03.2017
07:03:21
значения 26/15/786 меняются каждую сек. Нужно привязать каждое значение ко времени, и эти данные использовать для графика

Anton
26.03.2017
07:03:45
либо это чистый фронтенд будет, как вариант

храните историю в БД, разбивайте по партициям, делайте выборки

не реалтайм, но с минимальной задержкой, если БД шустрая

Google
Stanislav
26.03.2017
07:05:14
ну да, задержка небольшая устроит вполне..

Anton
26.03.2017
07:05:40
будут поля ts | equip_id | type | name

но equip_id | type | name вообще справочник

для данных (логов измерений) отдельную таблицу с ts | equip_id | value

Айтуар
26.03.2017
07:10:28
значения 26/15/786 меняются каждую сек. Нужно привязать каждое значение ко времени, и эти данные использовать для графика
Ну это малый размер данных. Я бы сделал тогда партиции по месяцам даже. всего получается примерно 2-3 млн строк.

Айтуар
26.03.2017
07:21:25
Можно и руками.

Anton
26.03.2017
07:24:23
https://gist.github.com/tarabanton/0fc9f13a4ad0d843f0fcb2d9fe401e36

вот пример функции и триггера для партицирования

без расширений можно обойтись нормально

я использую на партицировании таблиц Zabbix

Ildar
26.03.2017
07:51:35
согласен. Партицирование - то что надо учитывая параллельный сиквенс скан в 9.6
parallel seqscan при партицировании не сильно поможет. Сейчас на коммитфесте висит патч parallel append, вот оно для партицирования было бы очень полезно

Google
Anton
26.03.2017
07:52:03
ну я конкретно про выборки имел в виду

Ildar
26.03.2017
07:56:21
кстати, раз зашла речь про партиц-е, не могу не прорекламировать pg_pathman : )

Anton
26.03.2017
07:56:42
да да ) Знаем такое

я планирую даже потестить на своих Zabbix БД

там огромные таблицы с миллионами строк значений даже при партицировании по дням

ой.. на несколько порядков ошибся ) сотни миллионов. За сутки порядка 30-35 гигабайт

Ildar
26.03.2017
08:01:55
а как долго храните логи?

Anton
26.03.2017
08:02:03
Оно только благодаря партицированию хоть как-то и живёт

45 дней

очистка скриптом.

родной функционал заббикса умирает при попытке чистки истории )

Ildar
26.03.2017
08:02:56
тогда можно даже почаще нарезать - по часу или по нескольким часам

Anton
26.03.2017
08:02:57
Удаляем просто партиции старые

Roman
26.03.2017
08:03:38
Заббикс говно

Anton
26.03.2017
08:03:50
вот не надо ) Вопрос задач

Ildar
26.03.2017
08:04:11
тогда можно даже почаще нарезать - по часу или по нескольким часам
~1000 партиций при нарезке по часу. Для пафмана норм

Roman
26.03.2017
08:04:28
Не нужно использовать SQL для time series данных, это всем известно

Darafei
26.03.2017
08:04:57
причём язык запросов к типу данных?

Roman
26.03.2017
08:05:28
Оно только благодаря партицированию хоть как-то и живёт

Anton
26.03.2017
08:06:06
там объём данных огромен. на 10-20 хостах и без партиций жить можно

Google
Anton
26.03.2017
08:06:10
вопрос в числе метрик

а как инструмент - заббикс нормальный. Я уже с пол года юзаю mamonsu агент

написал пачку плагинов и горя не знаю

Roman
26.03.2017
08:06:58
Prometeus держит 1 млн метрик в секунду

Anton
26.03.2017
08:07:26
У вас такой инструмент, у нас исторически для мониторинга инфраструктуры - заббикс

Prometheus для метрик приложений

но это опять таки наш частный случай )

Артур
26.03.2017
08:09:55
Это случаем не ETL? Там обычная практика делать всякие copy. Типичный кейс выгрузка для внешних bi и прочих olap
Нет. Клиент хочет выгрузку в csv получить для синхронизации. Объем 50к-1000к строк. Через бекенд могу сделать, но памяти много надо. Есть идея сделать вьюху в pg и выплюнуть все через укащанный в примере запрос

Но ни разу так не делал. А значит не уверен в корректности своего решения

Anton
26.03.2017
08:11:32
ну если нет требований к переносимости окружения на другой хост, отличный от хоста БД - почему нет

Костыль, но работает )

разве что надо не забыть что БД будет писать от своего имени

Артур
26.03.2017
08:14:54
Согласен. Но я могу в принципе сообщать папку при формированиии запроса. Запрос будет формироватьс не через хранимку, а на бекенде. Будет что-то типа: $query= "Copy (Select * From foo) To ".__DIR__."/export/tmp.csv' With CSV DELIMITER ',';" По поводу авторства файла (chown) - есть идеи?

Петр
26.03.2017
09:52:46
copy to program? (только надо будет разрешить пользователю, от которого пг запущено, выполнять chown)

Darafei
26.03.2017
10:49:52
to stdin / stdout

Andrew
26.03.2017
11:16:38
> но памяти много надо заюзать server side cursor?

Yury
26.03.2017
11:16:41
cvs можно генрить поточно

Centrino
26.03.2017
11:18:19
Привет. Есть таблица: тип продукта|значение| дата Как написать запрос, который будет для каждого типа выводить разницу двух последних по дате значений?

Google
Igor
26.03.2017
11:18:56
https://blog.jooq.org/2015/05/12/use-this-neat-window-function-trick-to-calculate-time-differences-in-a-time-series/

Centrino
26.03.2017
11:19:16
и здесь ты). Спасибо

Igor
26.03.2017
11:19:16
https://www.postgresql.org/docs/9.6/static/functions-window.html

и здесь ты). Спасибо
даже стыдно стало немного

Centrino
26.03.2017
11:19:51
почему стыдно?

Igor
26.03.2017
11:20:52
а, блин. сорри, я не так тебя понял.

хотя, может оконными функциями будет правильнее. но можно еще через GROUP BY product_type и MAX() с GREATEST()

Admin
ERROR: S client not available

Centrino
26.03.2017
11:23:15
тоже подумал про оконные функции. Но я в них слабо умею. Django ORM расслабила меня)

Andrew
26.03.2017
11:26:41
Юрий, как можно без server side cursor получить только часть данных от выполненнго запроса?.. питонячий psycopg2 данные сразу все стягивает, хоть и дает потом по ним итерироваться через fetchone/fetchmany/fetchall... в других библиотеках подругому?

можно делать запросы по offset/limit, но чем это лучше server side cursor?

или ты имел ввиду copy to в клиент?

в смысле stdout

вообще да, смысла нет на сервере БД файл писать, copy to stdout делаешь и пишешь нормально на бакенде

памяти тут никакой не надо, в отличии от обычных select'ов

Stanislav
26.03.2017
12:39:59
{ "driver":"org.postgresql.Driver", "url":"jdbc:postgresql://104.111.111.111:5432/hackaton", "username":"postgres", "password":"iY9hUq999tY", "id":"objectId", "geometry":"vector", "sql":"Select * From geom Inner Join l1030 on l1030.objectId = geom.objectId Where layerId = 1030", "proj4":"+proj=tmerc +ellps=krass +lon_0=35d30E +lat_0=0d0N +k=1 +x_0=5300000 +y_0=-9214.69 +towgs84=25.0,-141,-78.5,0.0,0.35,0.736,0.0" }

ребят вопрос

Есть 2 разных сервера . С одного этот скрипт карту выводит на гис платформу

со второго нет



Google
Stanislav
26.03.2017
12:41:33
со второго поля не выводит

это со второй



Lev
26.03.2017
12:43:08
данные во втором сервере вообще есть? Чистый запрос что вернёт?

Stanislav
26.03.2017
12:43:32
да

геометрия и атрибуты







А есть какой-нибудь опенсорос веб что бы на нём ещё тест провести

может мой портачит

Lev
26.03.2017
12:48:05
select st_srid(vector) что вернёт для обоих серверов?

select st_srid(vector) from geom Inner Join l1030 on l1030.objectId = geom.objectId Where layerId = 1030

Stanislav
26.03.2017
12:55:02
Ситуация следующая в рабочим сервером - поля не выгружает общую карту земли даёт

тот которй не выводил ничего - опять ничего не вывел

Lev
26.03.2017
12:59:48
Сначала нужно понять есть ли данные, которые выводить. И в правильной ли они системе координат. Если запрос возвращает пустоту, то там может ничего не быть. Подключись к базе утилитой psql. Не гисами.

Stanislav
26.03.2017
13:10:00
Есть подозрение что сервер в облаке не верно настроен

Может кто поделиться сервером, базу поднять буквально на 2 часа. Только поля накинуть для презентации

Lev
26.03.2017
13:16:27
Кстати, если сервер с базой данных второй в дефолтном конфиге и далеко, возможно он режет подключение с внешних IP адресов.

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