[QUOTE]
Andrey_S пишет:
[QUOTE]
Andrey_S пишет:
Я вот о чем: не нужно считать, что мы, по сути не имея понятия, в чем заключаются причины неадекватной обработки очередей в ГИС ЖКХ, разбираемся в этом лучше.[/QUOTE]
По моему, об этом - [URL=https://m.habrahabr.ru/company/lanit/blog/351160/]https://m.habrahabr.ru/company/lanit/blog/351160/[/URL]
Они тоже подстраиваются. Проблема в отсутствии диалога. Поэтому они решают не те проблемы, которые очевидны поставщикам информации, а те, что есть у поставщиков информации в их собственном представлении.
Плюс в последние месяцы есть непоследовательное руководство проектом со стороны ответственных министерств (что в том числе связано и с внешними причинами).[/QUOTE]Про непоследовательность в целом соглашусь.
Да, я уже почитал эту статью в начале недели. Впечатление унылое - подтвердились худшие опасения по структуре БД. Про распределение нагрузки вообще что-то не заметил упоминаний. Если дословно понимать, то все свалили на виртуальную машину - отдельную для каждого сервиса. И понадеялись, что виртуальная машина как-то сама оптимально распределит нагрузку по физическим узлам. А теперь удивляются, что не распределяет и вместо использования настроек БД пытаются чего-то оптимизировать вручную.
Они что, реально, студенты? Вместо того, чтобы поделить базы в региональном разрезе (по населению регионов), они их поделили в разрезе сервисов. И теперь изобретают велосипед как же снизить время изменения структуры БД делением записей БД по диапазонам. Излишне говорить, что такие запросы как добавление полей, индексов вообще не делятся по диапазонам. Их тоже запускают по сто раз? Хотя да, на втором запуске будет ошибка что индекс уже есть и многопоточка остановится. Гениально.
Про то, что "многопоточка" запускается автоматом только в одном потоке и ее надо вручную "распараллелить" вообще молчу. Чего ж мы удивляемся, что один запрос обработался сразу, а другой завис на неделю? Может это админ запустил вручную обработку первого, а потом поток получил некую ошибку обработки и до второго "не дошел".
Если бы разделили БД по регионам, то такое "деление диапазонов" бы вышло естественным образом (хотя идентификаторы были бы уникальны только в регионе). И запускать многопоточку было бы еще проще - только указать имя БД, без всяких параметров диапазона. И сам "вес" БД был бы меньше - вертелось бы шустрее. Полагаю, интеграцию с системой версий кода можно построить и в таком случае. Однако похоже у рядовых разработчиков нет права голоса о распределении БД и они пытаются сделать "изящное решение" как быстро выдрать зуб через задний проход. И останавливают все регионы на несколько часов вместо остановки по расписанию одного региона на 5-10 минут.
В то время как при "удачном" разделении БД и взаимодействии поставщиков только с очередями обработки, можно вообще сделать техработы незаметными для поставщика. Просто аккуратно переключать с веб-интерфейса (или сервиса-обработчика) необновленной по структуре БД региона на веб-интерфейс (обработчик) БД обновленной структуры. Допустим раз в час. И хоть 24/7 можно вести техработы. Опять же не надо админам ночью сидеть и полусонными набирать команды в терминале.
На мой взгляд само наличие эффекта "время обработки целого больше сумма времен обработки всех частей" - показывает наличие серьезных проблем либо в структуре БД либо в самих запросах. Например, запрос написан без учета оптимизации работы по индексам в БД. Что серьезно в Postgre нет средств для оптимизации обработки запроса?
Про размер - насколько помню пара-тройка индексов по длинным текстовым полям легко удваивает размер БД. А всякие идентификаторы гис включают буквы и тире, то есть по сути текстовые поля. И по идентификаторам естественно есть индексы. Без комментариев.
К слову, guid можно преобразовать к двоичному виду, про них не говорю. Хотя иногда встречал БД хранящие guid в текстовом виде.
Заметьте, они оптимизируют не время обработки запроса от поставщика информации, а время когда изменяют структуру данных во время техработ. Даже не "те (проблемы), что есть у поставщиков информации в их собственном представлении". Про диалог с поставщиками похоже они и не думали.