Size: a a a

pgsql – PostgreSQL

2020 June 03

Ð

Ð in pgsql – PostgreSQL
я бы не рисковал
источник

RU

Roman Usachev in pgsql – PostgreSQL
самое страшное что я в исходники посгри залез своими шаловливыми ручонками ))
источник

Ð

Ð in pgsql – PostgreSQL
зачем?
источник

RU

Roman Usachev in pgsql – PostgreSQL
и это патченная мной версия, так что все страшнее в 2 раза )
источник

RU

Roman Usachev in pgsql – PostgreSQL
Ну.... если вкратце - то задача была запихать очень много xml-файлов в бд (база налоговой, единый госреестр юридических лиц). Там капец бардак и разбирать эти xml на 2 форму - это я б месяц трахался. Поэтому я принял решение класть целиком xml в базу и через xpath выковыривать на ssd те данные, по которым до конца не определившийся заказчик захочет вести поиск
источник

Ð

Ð in pgsql – PostgreSQL
пц..
источник

Ð

Ð in pgsql – PostgreSQL
поиск вести по хмл? без нф? а индексировать их как?
источник

RU

Roman Usachev in pgsql – PostgreSQL
так вот, xml в этой базе в жутком состоянии. местами там просто битые данные (например буква "я" в рандомных местах), а где-то такие адовые юр-лица, где xml весит 20 метров
источник

RU

Roman Usachev in pgsql – PostgreSQL
так вот эти 20-метровые файлы отказалась жрать библиотека libxml, которую использует постгря для проверки и поиска. Вначале она ваще на инсерте роняла базу с segmetation fault. Потом я собрал последнюю версию, подсунул посгре, она перестала падать и дала exception - типа слишком дофига нодов в теге. если ты хочешь переварить - дай мне флаг XML_HUGE. Ну, я пошел смотреть сорцы и понял что флаг посунуть так просто не выйдет и надо использовать другую функцию. Пропатчил, но снова не завелось. Оказалось что в одном месте этот флаг не передается. Подсунул его по-новому, но и тут засада - libxml это флаг не читает вообще. Короче кончилось тем, что я пропатчил посгрес, пропатчил libxml и флаг зашел. Ну и база падать перестала...
источник

RU

Roman Usachev in pgsql – PostgreSQL
Ну вот такое и теперь работает....
источник

RU

Roman Usachev in pgsql – PostgreSQL
Ð
поиск вести по хмл? без нф? а индексировать их как?
просто - вот надо например имя юр-лица найти, я пишу запрос create table .. as select ogrn, xpath_query('...', xml)... и накидываю gin(to_tsvector)
источник

RU

Roman Usachev in pgsql – PostgreSQL
3 часа на 1 xpath запрос (это по ssd-таблицам)
источник

Ð

Ð in pgsql – PostgreSQL
Roman Usachev
просто - вот надо например имя юр-лица найти, я пишу запрос create table .. as select ogrn, xpath_query('...', xml)... и накидываю gin(to_tsvector)
и оно фулсканом ищет, да? по терабайту?
источник

Ð

Ð in pgsql – PostgreSQL
это пц
источник

RU

Roman Usachev in pgsql – PostgreSQL
Ð
и оно фулсканом ищет, да? по терабайту?
угу ) Ну а че делать, так я собираю таблицу и индекс - потом поиск быстрый, по 40мс
источник

Ð

Ð in pgsql – PostgreSQL
лучше распарсил бы ее в json и построил индексы по тем нодам которые участвуют в поиске
источник

Ð

Ð in pgsql – PostgreSQL
а, так индексы по хпас все таки есть
источник

RU

Roman Usachev in pgsql – PostgreSQL
ну, а есть принципиальная разница между json и xml?
источник

Ð

Ð in pgsql – PostgreSQL
как минимум, жсонб компактнее, а еще быстрее
источник

RU

Roman Usachev in pgsql – PostgreSQL
последний весит больше только, а доступ все равно через функции и там не такая большая производительность
источник