История

История

Foxety

(Все имена заменены в целях сохранения конфиденциальности)

Идея о зарождении этого канала пришла ко мне давно, но технически реализовать её получилось только 23 марта 2018 года. Меня недавно приняли на работу в компанию, на должность, связанную непосредственно с отчётностью. Во время собеседования мне сказали, что в мои обязанности будет входить, ко всему прочему, частичный рефакторинг имеющихся в базе объектов и оптимизация запросов.

Когда я увидел настоящий масштаб перерабатываемых данных, у меня образовалась гамма эмоций.

Во первых - количество объектов в базе (триггеры, последовательности, таблицы, представления, мат. представления, пакеты) было около 1000, при том, что объем хранимых данных не превышал 70гб на жёстком диске. На самом деле, это не много, но наименования объектов были настолько разношерстными, что понимание, что в себе хранит таблица приходило только в тот момент, когда я смотрел на имеющиеся записи в ней.

Во вторых - частичная структуризация и однотипное наименование объектов, являющихся членами одного семейства благополучно менялись от одного разработчика к другому, в итоге семейства одной какой-либо определенной метрики имели 3 разных префикса.

В третьих - предыдущие разработчики благополучно забывали о том, что после них код будут читать совершенно другие люди, их решения на счёт каких-то спорных моментов были написаны, но аргументация по этому поводу ушла вместе с ними.

На комментирование одного пакета, состоящего из 10-15 функций и типов у меня уходило порядка 3-х часов. На самом деле это был Ад, в прямом смысле, особенно когда происходило частичное переписывание процедур/функций другими разработчиками(интуитивно это понятно по стилю написания кода).

В четвёртых - отсутствие комментариев. Вообще. То есть прям вообще. Да, код можно читать и, исходя из написанного делать выводы относительно функционала той или иной части можно, но на это уходит изрядное количество времени и сил.

Но рефакторинг - меньшее из зол. Оптимизация кода - вот настоящий бич.

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

В более-менее серьезной компании, на пути к SYS-правам перед вами встанут как минимум 2 преграды : непосредственно ораклисты, отвечающие за поддержку системы(индусы) и безопасники.

Первые свято верят, что вокруг одни идиоты, и, выдай другому человеку права и логин к SYS-учетке, на следующий день они непременно найдут упавшую базу данных, либо не найдут ничего.

Безопасники же верят в то, что любой сотрудник, дай ему возможность, передаст все конфиденциальные права третьей стороне и даже картинки из Гугла таят в себе опасность.

Правда, об отсутствии прав администратора меня предупредили заранее и все, что можно сделать - просить улучшить характеристики сервера и искать пути оптимизации запросов.

Некоторые нюансы я опишу позже, а пока, держите голову ясной, впереди у нас ещё множество историй и неординарных решений.

Report Page