Pull to refresh

Comments 15

В этом точно есть рациональное зерно. Только много ли есть задач, где нужна вся страна разом?

ну вы же знаете, какие указания приходят "сверху" - "нужна вся страна. Зачем? На всякий случай, шобы было". А потом, по факту, как всегда, максимум 3 - 4 региона и МСК и используются

Данные из DBF можно было вставлять в базу как есть, с XML так не получается

У DBF тривиальный формат, создавали бы сразу его, сами.

Развернуть архив, файлы импорта займут 300 GB

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

чтение с диска PHP - 2 Mb/s, PostreSql - 1.5 Mb/s

(Голосом Швондера) это какой-то... позор!

ЗЫ: задачка из разряда сортировки за час. Видится мне здесь генерация всех дбф должна занять также не более часа.

Если реализация займёт всего час, то я с удовольствием посмотрю на реализацию, особенно если она будет для PHP8.
У меня на этот код ушло две недели, и на статью ещё 6 часов, у вас получиться потратить один час своего времени для меня ?
Я буду вам очень признателен.

Если реализация займёт всего час

Где я это сказал ? Я говорил о "сортировке за час", намекая на вот эту недавнюю статью: https://habr.com/ru/post/714524/

Реализация займёт полдня-день, по моим прикидкам.

у вас получиться потратить один час своего времени для меня ?

Не час. Взять и просто так потратить свой день ? Нет, не получится.

то я с удовольствием посмотрю на реализацию, особенно если она будет для PHP8.

В любом случае у меня это был бы не PHP. ))

>И тут же рядом лежит БД в формате КЛАДР 4.0. В dbf

как-то странно сравнивать ж и п

Вопрос к автору: а как в ФИАСе нынче с номерами домов? Год-два назад их было очень мало.

Я не автор, но отвечу. Очень даже неплохо. Не всё есть, но никакие OSM и иже с ними даже рядом не стояли.



Нам тоже нужна вся страна. Грузили через xml2csv: конвертируем xml в csv (там вполне плоская иерархия) и грузим в postges через COPY. Грузится минут за 30

Друзья, внимательнее надо быть (по вашей же ссылке):

В целях повсеместного использования (ч. 2 ст. 8 Федерального закона № 443 от 28.12.2013) в информационных системах пользователей ФИАС сведений об адресах (унифицированных и структурированных), содержащихся в Государственном адресном реестре, еженедельно на портале ФИАС размещаются файлы выгрузки адресных сведений в формате «ГАР».

Так вот то что в статье это и есть формат "ГАР"

Во первых необязательно вообще архив распаковывать и занимать почти 300 гб, есть же XMLReader который умеет читать файлы прям с архива. Например так:

$reader = new XMLReader();
$reader->open('zip://gar_xml.zip#77/AS_ADDR_OBJ_20230202_e407fd98-b92a-45dd-9e34-ef15f6d3bae5.XML', 'UTF-8', LIBXML_COMPACT | LIBXML_NONET | LIBXML_NOBLANKS);

Во вторых есть готовое решение которе справляется с задачей ни чуть не хуже:

https://github.com/liquetsoft/fias-component базовый компонент, на его основе есть библиотеки для работы с базой ФИАС в формате ГАР для рахных фреймворков итд. Например для Laravel, Symfony или для импорта сразу в Elasticsearch.

Так же не увидел в Вашем решении работы с обновлениями, а они выходят регулярно. Каждый понедельник если мне не изменяет память.

P.S.

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

развернуть базу ФИАС за 9 часов на 6-ти ядерном процессоре.

Вам определенно надо менять технологию - для примера, я на Rust XML файл весом 25 гигабайт разбираю за меньше чем за минуту, правда это все лежит на NVMe диске.

Я не знаю зачем в ФНС сделали это убожество с XML, да еще и нормализовали все как по учебнику. Чем они думали -не знаю. Но вот то, что они для всех создали мега головню боль - это точно. В общем, жуткая непродуманность.

P.S. Понятно, что с Rust можно быстрее, но вот "за минуту" ФИАС - не понятно как. Хотелось бы подробнее - как это? От структуры XML много зависит. Если там мало записей и много полей, и много атрибутов, которые игнорируются - мб.... Но вот что б ФИАС - сомнения меня берут.

Автор комментария про скорость раста скромно умолчал о дальнейшей обработке этого xml, а с разбором на такой скорости любой SAX парсер справится.

Sign up to leave a comment.

Articles