
Alex
05.09.2017
13:38:23
есть и с 16

Darafei
05.09.2017
13:39:57
пошёл искать lenovo x280 и выяснилось, что его уже выпустили, только он не ноутбук

Ivan
05.09.2017
14:35:19
пришлось идти гуглить (:

loki
05.09.2017
14:41:10
Ребят у меня чет реплика приболела:
LOG: expected password response, got message type 88 сыплет в лог, подключение по md5 + hostip =(

Google

Dmitrii
05.09.2017
16:45:09
Всем привет, такой вопрос. Пострес умеет строить индексы на поле, значения которого эквивалентны регулярным выражениям?
Т.е. я бы делал что-то типа WHERE regex ~ 'foo-bar' а оно мне строки где в поле regex есть ^foo или bar$
Везде случаи, когда в WHERE подается регулярное выражение, а у меня по сути наоборот, база регулярок, и надо найти все записи с регулярками под строку в условии. Может я невозможного хочу и поэтому ничего нагуглить не смог?

Dmitry
05.09.2017
17:17:33
были попытки такое сделать на основе n-gram индекса, но, имхо, это реально под очень простые регулярки.
вот если Александр Коротков - это Александр из простгреспро, он может точнее сказать ;)

Dmitrii
05.09.2017
17:20:52
Его презентацию за 2012й год я уже посмотрел, ага

Andrey
05.09.2017
18:45:18
всем привет. Ребят подскажите как правильнее сделать.
Хочу чтоб при создании таблицы сразу навешивались гранты для нее.
Делаю так:
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT SELECT ON TABLES TO data_read;
если таблицу создает юзер с ролью овнера этой схемы, то права не навешиваются. Если суперюзер то все ок.
Рассматриваю также вариант триггера в стиле:
CREATE EVENT TRIGGER
on_create_table ON ddl_command_end
WHEN TAG IN ('CREATE TABLE')
EXECUTE PROCEDURE on_create_table_func();
как правильнее сделать? PG 9.5

Alexander
05.09.2017
20:03:25
Сейчас посмотрю и скажу точнее.

Dmitrii
05.09.2017
20:07:29

Alexander
05.09.2017
20:10:00
Да, я это делал, но оооочень давно...
https://www.postgresql.org/message-id/CAPpHfduMvS=sGPNh_88bUo3TEg_KhxV7s81Fa+ZV96yadgff2g@mail.gmail.com
Это были ещё те времена, когда я пытался пропихнуть хранение доп. информации в GIN.
Сейчас это стал RUM.

Google

Alexander
05.09.2017
20:10:46
По-идее нужно это вытаскивать и запихивать в отдельный contrib.
Вернее в отдельный extension:
pg_trgm_rum
RUM и просто для триграм может дать прирост скорости.
+1 задачка для стажёра будет ?
Дмитрий, BTW, вы не могли бы поделиться каким-нибудь набором данных для исследований индексного поиска по регуляркам? (как прямого, так и обратного)
А то в том треде, Хейки пробовал на регулярках из snort и там особо хороших результатов не получилось.
Может на ваших данных мой подход себя хорошо покажет.

Dmitrii
05.09.2017
22:00:53
У меня не такой уж и огромный (пока) набор данных
Юз-кейс легаси редирект регулярки, для роутера в приложении
Когда приложение генерит 404 мы перехватываем исключение и ищем в базе урл среди всех регулярок
Для одного из приложений у меня пока только 6000 регулярок, но и на них запрос работает 200мс
В целом пойдет, но опаска есть

Ilya
05.09.2017
22:03:06

Dmitrii
05.09.2017
22:04:10
Регулярки могут быть динамическими, т.к. нет конечного списка вариантов.

Ilya
05.09.2017
22:04:35
нафига 404 урл искать по регуляркам?

Dmitrii
05.09.2017
22:04:38
С захватом группы

Ilya
05.09.2017
22:04:47
огласите всю задачу пожалуйста

Dmitrii
05.09.2017
22:05:27
^/path/(\d+)$ => /path2/$1
В колонке regex хранится ^/path/(\d+)$ а в колонке target хранится переадресация

Google

Dmitrii
05.09.2017
22:06:39
Когда движек сайта не может найти страницу, то как fallback срабатывает legacy router который идет в базу
И идет "глобальные" переадресации

Ilya
05.09.2017
22:06:54
может это говно на нгинх повесить? все 6000 правил?

Dmitrii
05.09.2017
22:07:14
Нет, мы как раз оттуда вытащить хотим

Ilya
05.09.2017
22:07:22
не надо

Dmitrii
05.09.2017
22:07:23
Т.к. тогда все лоика будет в одном месте

Ilya
05.09.2017
22:07:25
(:

Dmitrii
05.09.2017
22:07:25
Надо
У нас штат из СЕО обезьянок
Они каждый день делают редиректы
Конфиг nginx нет и не будет никаких сил поддерживать

Ilya
05.09.2017
22:08:35
а морда на чем?

Dmitrii
05.09.2017
22:08:36
+ сайт поддерживает свою логику дляредиректов (корректных) которые связаны с бизнес объектами
Там недолжно быть конфликтов между легаси редиректами и новыми, поэтому все в БД должно лежать
Чтобы нормально валидаторы работали. Или придется все списки дублировать по два раза

Ilya
05.09.2017
22:09:21
просто одно дело 1 раз скомпиленый регексп
а другое - ты будешь каждый раз их компилить при сверках
это тормоза

Dmitrii
05.09.2017
22:09:49
Это только если возникает 404

Ilya
05.09.2017
22:09:51
морда на чем? похапе?

Google

Dmitrii
05.09.2017
22:09:59
Да
Таких запросов не будет много
Т.к. по сути это fallback

Ilya
05.09.2017
22:10:30
ну то есть если я завалю тебя скриптом делающим 404 с 3 адресов например - я тебе уложу сайт

Dmitrii
05.09.2017
22:10:31
1-5% если не меньше
Не уложишь

Ilya
05.09.2017
22:10:57
это как фокус в свое время с друпаловской таксономией
причем уложу малыми усилиями

Dmitrii
05.09.2017
22:11:12
В PHP есть куда более медленные места.
Предлагаю не обсуждать здесь PHP :)

Ilya
05.09.2017
22:11:33
ну да. одно из них preg_match
ну а где ты матчить будешь?
(:
в БД?

Dmitrii
05.09.2017
22:12:09
По сути вопроса есть что? :)

Ilya
05.09.2017
22:12:22
это говно один хрен лучше выносить наружу из пыха.

Dmitrii
05.09.2017
22:14:06
У нас RDS :(

Ilya
05.09.2017
22:15:46
как вариант ловить в пыхе 404 и отваливать его через X-internal-Redirect на другой сервис который будет матчингом заниматься
а список урлов+скомпиленых рег в этом сервисе обновлять по ключику(типа текущая версия списка) в мемкеше или редисе. например

Google

Ilya
05.09.2017
22:17:44
если у тебя именно регулярки

Dmitrii
05.09.2017
22:19:18
Илья, сколько еще раз надо повторить, что проблема не в скорости PHP и функции preg_match?

Ilya
05.09.2017
22:19:48
ну как. сколько прегматчей ты бушь делать на 1 вызов 404?

Dmitrii
05.09.2017
22:19:56
Мне индекс по базе как раз и нужен, чтобы база данных мне вернула одну (!) запись с корректным target
ОДИН
?

Ilya
05.09.2017
22:20:25
индекс по регулярке? да вы наркоман, батенька

Dmitrii
05.09.2017
22:20:56
Расскажите это Александру Короткову

Ilya
05.09.2017
22:20:56
индекс по вычисляемой функции значение которой зависит от вводимой строки? лол

Dmitrii
05.09.2017
22:21:22
Наверное, все люди, у кого фамилии начинаются на "Корот*" — наркоманы. Кто ж его знает

Ilya
05.09.2017
22:23:52
ну так это логично же что он тогда должен скомпилить все регулярки чтобы быстро матчится )
короче яб навалял служебный сервис на ноде или на го.... один хрен это говно в памяти гонять

Dmitrii
05.09.2017
22:27:37
Да да, над больше микросервисов.
Я бы хотел меньше оффтопика и более конкретных предложений в стиле Александа Короткова )

Ilya
05.09.2017
22:31:32
ну я патч посмотрел. он там походу компилит регулярки. и скомпиленое хранит
(:


Dmitrii
05.09.2017
22:32:19
Задача сформулирована бизнесом, так, что решение ее при прочих равных именно такое. Как минимум врятли у нас будет даже 10000 регулярок на приложение. В условиях нашей архитектуры, когда каждое приложение это отдельная база данных, по сути слайс с центральной, в которой хранятся все данные по всем приложениям, то в каждой из баз будет максимум по 10000 регулярок, что даст не более чем 400-500мс по скорости. В угоду бизнеса и того, что фокус направлен на юзабилити решения для конечных редакторов и специалистов по SEO, я готов даже оставить самый простой вариант с SELECT *, REGEXP_MATCHES('blue-tomato-gutschein', regex) FROM fallback_redirects; запросом, плюс, специальный rate-limiter для Ильи Азарова :)
Цена времени разработчиков больше, чем железа и процессорнго времени в амазоне. То, как эффективно работает отдел редакторов и как корректно они создают контент и следят за редиректами и прочим хламом — вот та метрика, которая важна для бизнеса. А не сколько там preg_match работает на реквест который возникает в 5% случаев.


Ilya
05.09.2017
22:35:14
5% может быть очень дофига.
а может быть ошибка редактора с сылкой в статье или картинкой )
и это будет не 5% )
короче не мой проект. мне пофиг.