@pgsql

Страница 244 из 1062
Lev
15.02.2017
20:54:53
@korotovskii а исходные данные у тебя как лежат?

Dmitrii
15.02.2017
20:55:44
Это к Денису вопрос )

Lev
15.02.2017
20:57:57
Пардон. @den1970 Если данные можно положить в базу в 3857 (очень рекомендую сразу так сделать), и искать в ней. То индекс gist по колонке и <-> в помощь. Если, как в примере запроса 4326, то вызов st_transform всё съест и тогда лучше ::geography <-> ::geography делать.

Denis
15.02.2017
21:01:30
CREATE INDEX "user_point_index_st" ON "user" USING GIST (st_transform(st_setsrid(st_point(point[1], point[0]), 4326), '+proj=hammer')); CREATE INDEX "task_point_index_st" ON "task" USING GIST (st_transform(st_setsrid(st_point(point[1], point[0]), 4326), '+proj=hammer'));

Google
Denis
15.02.2017
21:02:01
Этого достаточно чтобы работало по индексу.

Lev
15.02.2017
21:09:06
но... зачем?

при запросе тогда будет поиск по индексу, а потом перевычисление значения. st_transform не дешёвая операция с тригономерией

а дистанция в 3857 это корень суммы квадратов координат

Denis
15.02.2017
21:14:46
В таком случае мне вообще достаточно a <-> б Мне ведь не принципиально в километрах результат

Но оказалось недостаточно

Lev
15.02.2017
21:20:18
нет. Фокус: [local]=# SELECT st_setsrid(st_point(1, 0), 4326) <-> st_setsrid(st_point(2, 0), 4326); ┌──────────┐ │ ?column? │ ├──────────┤ │ 1 │ └──────────┘ (1 row) Time: 0,512 ms [local] # SELECT st_setsrid(st_point(1, 0), 4326) <-> st_setsrid(st_point(359, 0), 4326); ┌──────────┐ │ ?column? │ ├──────────┤ │ 358 │ └──────────┘

Артур
15.02.2017
21:20:18
Это мой хлеб :)
Так и подмывает спросить. "Ты питаешься геоданными?" ))

Lev
15.02.2017
21:21:06
Так и подмывает спросить. "Ты питаешься геоданными?" ))
Если предложить ему геоданные хорошего качества и под правильной лицензией, то он вполне их переработает ;)

через lon:0 в лоб переходить не получается. А геойд, сцукко, круглый.

Артур
15.02.2017
21:27:28
Еще вопрос. Насколько правильно хранить фото в БД? Понимаю что звучит чуть придурковато. Но вот 1c хранит/хранило фото БД. Этому есть оправдание? Как это применимо в postgres?

Dmitrii
15.02.2017
21:30:16
Нет этому оправданий

Лучше не делать, а то будешь гореть в аду

Google
Fike
15.02.2017
21:30:34
Это снимает боль по менеджменту хранилища (на самом деле переносит его на БД) и удваивает передачу данных при чтении (вместо диск -> сеть получается диск -> приложение -> сеть)

В общем, это от жировых масс, обволакивающих чересчур ленивый мозг

Артур
15.02.2017
21:31:29
Ясно. Запомню

Dmitrii
15.02.2017
21:32:52
Я просто говорю как тот, у кого есть хостинг картинок

И там была такая схема ?

(надеюсь я не буду гореть в аду, т.к. я уже исправил это)

Аминь

Артур
15.02.2017
21:34:36
Я просто говорю как тот, у кого есть хостинг картинок
То есть исходник в базе хранил а статику на сервере?

Dmitrii
15.02.2017
21:35:18
Нет, все в базе лежало

Артур
15.02.2017
21:35:35
Ох....

Dmitrii
15.02.2017
21:35:43
Ну кроме css и js да

Если ты об этом

Артур
15.02.2017
21:36:30
Встречал я какие то расширения для работы с фото для postgres. и это тоже путает.

Получается есть не только неправильные структуры, так еще и для них расширения написаны

Dmitrii
15.02.2017
21:37:17
Очереди тоже есть (mbus) — не поддавайся на провакацию.

Артур
15.02.2017
21:38:33
Очереди тоже есть (mbus) — не поддавайся на провакацию.
Вот ты хорошо предупредил. Я так поглядывал и только из-за недостатка времени не добрался до этого

Fike
15.02.2017
21:38:42
Получается есть не только неправильные структуры, так еще и для них расширения написаны
мы сейчас говорим про веб-приложения, все кейсы под это подгонять было бы неправильно

Артур
15.02.2017
21:39:14
а в чём различие? В передаче файла?

Fike
15.02.2017
21:39:23
не могу сходу придумать кейс, где это было бы оправдано и не факт, что такой существует, но это не обязательно плохая практика вообще во всех случаях

Dmitrii
15.02.2017
21:39:44
Хотя Skype вот использует mbus (типа)

Google
Dmitrii
15.02.2017
21:39:59
Или pgq?

Артур
15.02.2017
21:40:06
Ок, раз ты готов отвечать. "WITH COMPRESSION" юзал?

Dmitrii
15.02.2017
21:40:11
Не суть, одного рода поделие короче

Это мне вопрос?

Артур
15.02.2017
21:41:22
ну обоим уж :)

а можно и каждому 821 участнику :)

Dmitrii
15.02.2017
21:42:29
Я хранил картинки в базе кгда был молодой^W^W у меня был MySQL

Так что это был дабл факап.

Артур
15.02.2017
21:43:00
Ок, раз ты готов отвечать. "WITH COMPRESSION" юзал?
кейс: есть 1,5 гигабайта скачанных исходных страниц, хранимых в postgres в виде base_64(gzip())

кейс: есть 1,5 гигабайта скачанных исходных страниц, хранимых в postgres в виде base_64(gzip())
Так вот, мне кажется я где-то костыль делаю и можно обойтись простым сжатием на уровне БД

или нет?

ну и логи хранить можно так

Просто если верить oracle (провожу параллель) то эта операция как раз и нужна для того чтобы текстовые данные ужимались

есть ли в этом подводные камни?

Аггей
15.02.2017
22:11:12
Ну у оракла вы имеете ввиду сжатие CLOB в secure file?

Вроде в постгре аналога нет пока (или я о нем не слышал)

Darafei
16.02.2017
06:20:43
неужели никто не сделал fdw для хранения картинок на fs? :)

Vadim
16.02.2017
06:33:09
https://wiki.postgresql.org/wiki/Foreign_data_wrappers

Аггей
16.02.2017
07:12:57
Ну можно nosql для этих целей - они местами лучше фс

VlIvYur
16.02.2017
07:21:09
Про кластерные индексы же ведь речь?первичный ключ не обязан быть кластерным.Более того,это скорее всего от безысходности он такой.Когда данные вставляются хаотично в этом тоже есть плюс:можно не ждать когда закончится предыдущая вставка в голову,если ты добавляешь в середину.Да,в таблице появляется много полупустых страниц и выше накладные расходы,когда нужно разделить страницу.Но зато все нужные тебе данные окажутся на одной странице,ну или на соседних,а не разбросаны по всему базе.Правда не знаю что из этого подходит к postgres.Ну и за var не скажу,по-моему,уж лучше фиксированный размер иметь

Google
Denis
16.02.2017
07:22:06
Доклад был на dump-2015 вродь, там Армин Роначер расказывал, что они хранят сами blob’ы картинок в постгресе как значение это для cdn вродь

Wom
16.02.2017
07:24:34
вот у этого трансляции не будет? https://www.meetup.com/postgresqlrussia/events/229372553/

Victor
16.02.2017
07:39:37
нет, так разработчики сделали

большие фото и прочее - на диске, мелкие в базе

Fike
16.02.2017
07:44:58
я думаю, стоит развеять их заблуждения по поводу скорости

Сергей
16.02.2017
07:55:18
Всем доброго дня! Помогите разобраться. Есть две таблицы: T1 и T2. Запрос такой: SELECT T1.f_service, T1.f_template, T2.is_inherit, T2.name FROM T1 JOIN T2 ON T2.f_template = T1.f_template AND COALESCE(T2.f_client,3) = 3 AND T2.stat = 0 WHERE T1.f_object = 2 AND T1.stat = 0 И он уходит в Nested Loop: "Nested Loop (cost=0.00..6.29 rows=1 width=50)" " Join Filter: (T2.f_template = T1.f_template)" " -> Seq Scan on T2 (cost=0.00..1.14 rows=1 width=42)" " Filter: (((stat)::smallint = 0) AND (COALESCE(f_client, '3'::bigint) = 3))" " -> Seq Scan on T1 (cost=0.00..5.09 rows=5 width=16)" " Filter: ((f_object = 2) AND ((stat)::smallint = 0))" При этом причина - в фильтре T1.f_object = 2. Если его убрать - то Hash Join...

Alexey
16.02.2017
08:06:34
ну наверное его статистика говорит, что после фильтрации T1.f_object = 2 будет 5 строк а после фильтрации T2 будет вообще 1

так что Nested Loop тут как бы неплох, ибо не нужно создавать хэш структуры промежуточные и все такое

Denis
16.02.2017
08:12:57
Поддерживаю, надо смотреть на реальных объемах данных.

Аггей
16.02.2017
08:26:30
Seriously?
Масштабирование не?

Fike
16.02.2017
08:26:57
ну да, распределенных файловых систем не существует

Аггей
16.02.2017
08:29:23
ну да, распределенных файловых систем не существует
На них возникают вопросы к скорости. В каждом конкретном случае подойдёт разное решение. Но в общем случае распределённую фс сложнее заточить под поиск по определенному ключу, чем тот же couchbase

Darafei
16.02.2017
08:29:34
файловая система - это специфичный вид базы данных, с основной фишкой про seek() внутри записи

Аггей
16.02.2017
08:30:11
Опять я холиварище закинул )

Darafei
16.02.2017
08:31:11
я к тому, что часто вместо файловой системы достаточно объектного хранилища

Google
Сергей
16.02.2017
08:31:56
так что Nested Loop тут как бы неплох, ибо не нужно создавать хэш структуры промежуточные и все такое
Спасибо за наводку. В целом это уже реальный набор данных ))) И принципиально много строк после фильтрации быть не может... Максимуму 100-200

Darafei
16.02.2017
08:32:27
listdir на мнoгих ФС не оптимизирован

Аггей
16.02.2017
08:33:44
база на фс будет быстрей фс? серьезно?
Ну вы определитесь про какую файловую систему вы говорите. Распределённая фс - с большой вероятностью медленнее шардированной БД

Darafei
16.02.2017
08:34:01
из-за чего народ городит вложенные каталоги по префиксам

Alex
16.02.2017
08:34:01
так то и по direct i/o можно ходить... фс еще какие-то выдумали ;)

Darafei
16.02.2017
08:34:26
после mmap от ФС мало что остаётся

Darafei
16.02.2017
08:35:11
а, из живых примеров

Darafei
16.02.2017
08:35:31
тайлы карт миллионами пакуют в sqlite-базы

и называют это стандартом mbtiles

и оно быстрее, чем фс

и нет страданий с закончившимися инодами или tail packing

Fike
16.02.2017
08:36:54
и оно быстрее, чем фс
там придется сильно попотеть, чтобы вытащить всякие няшки типа zero copy

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

Pavel
16.02.2017
11:02:54
Памятка для презентаций: Никогда не вставляйте в презентацию видео с YouTube. Конференц Wi-Fi упадет именно в тот момент, когда две сотни глаз будут ждать его загрузки

Alexey
16.02.2017
11:03:31
Эм, а локально положить?

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