Найти тему
Jonny Enjoy

Как навести порядок в 20 excel таблицах пользуясь принципом реляционных баз данных

Оглавление

Сеть Авантела - десяток тысяч единиц оборудования, сотни километров оптики и тысяча - медных линий связи. Это сейчас все знания о том, как эта сеть устроена, содержится в одной уютной CRM, а в 2009 (год выхода iPhone 3G) ее описывали 300 файлов MS Visio, около 20 excel таблиц, три системы мониторинга и графическая схема в несколько гигабайт

Потрясающее количество информации. И еще более потрясающе: сколько мы усилий тратили на поддержание ее в актуальном состоянии и насколько при этом она была не актуальна (~10% записей были неверны).

Суть проблемы видна в этом процессе установки оборудования в сеть:

-2

В качестве идентификатора отдельной железки использовался IP или пара адрес+модель или серийный номер, поэтому мотрудники вносили однотипную информацию в 5 разных местах (на самом деле их даже больше), д аже если поменялся всего один элемент: IP или модель

Решение - нормировать

Я ввел понятие единого ключа "имя оборудования" - который присутсвует во всех таблицах и является уникальным идентификатором железки. То есть с этого момента каждая железка, установленная в сети, идентифицируется ни по ее модели, ни по IP, ни по серийинику, а по специальному имени:

Роль оборудования + его местоположение + сквозной номер

И выглядит это так:

ACC-Narymskaya-27-II
CR-Lavrenteva-6-I

ACC - означает, что железка - это коммутатор доступа, в который включаются клиенты, а CR - это коммутатор ядра сети, который обеспечивает работу главной магистрали и в него включаются сами коммутаторы типа"ACC", и так далее - кроме этих двух примеров в компании еще около 40 типов оборудования.

Почему именно эта пара ?

Это информация, которая меняется реже всего: пройдет 10 лет, изменится 10 раз модель, IP, серийиник, но на Нарымской 27 по-прежнему будет какой-то коммутатор доступа и название его останется прежним.

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

На латиннице - потому что русский оборудование не поддерживает, и этот нюанс потребовал +3 месяца на внедрение системы именования, потому что у каждого сотрудника была своя система транслитерации, соответсвенно мы уже не можем использовать идентификатор, который пишется то как Jeleznodorojnaya, то как Zheleznodorozhnaia.

Поэтому нам потребовалась:

Единая система транслитерации

-3

И единая систем написания адресов

Спасибо РФ за столько вариантов их написания (и спасибо Сибири за отстуствие литер, бульваров и прочих извращений) :

Все адреса пишутся с маленькой буквы, разделителем между полями является дефис или подчеркивание в зависимости от типа оборудования: pisemskogo-1a,
После названия улицы указывается ее "тип" (если она не просто "улица"): dzerzhinskogo-pr-1/1, vokzalnaya-mag-16, krasnyi-pr-220/5, arhonskiy-per-15/2, tolmachevskoe-sh-17/1, truda-pl-1
Проспект -pr-, переулок -per-, проезд -prz-
Номер улицы указывать перед номером дома по английски: elcovka_1st_1, stancionnaya-2nd-30, trikotazhnyi_per_5th_1
Номер корпуса указывается без разделителей после номера дома: koroleva_40k40, suharnaya-35k7, tolmachevskaya-19bk6
Название состоит из двух слов? Первое – сокращаем точкой: m.dzhalilya-11, b.hmelnickogo-2, d.kovalchuk-1k2, s.shamshinyh-22/1, s.gvardeycev-25, n.danchenko-104
В скобках после адреса не возбраняется (а иногда следует) указывать альтернативное название узла(без пробела): arhonskiy_1(ors), в случае, если название – 2 или более слов – разделяем разделителем: elcovka-1st-1(interer_studiya), b.hmelnickogo-103(msu-78)
Если филиал Авантела и населенный пункт железки не совпадают - его название указывается перед улицей: voshod-voentorgovskaya-4/1
Название поселка состоит из двух слов ? Первое слово сокращаем: k.vostok-sovetskaya-62

Почему +3 месяца ?

  • 1 день: Устроить собрание и рассказать про новую систему, выслушать обратную связь
  • 2 дня: По результатам обратной связи написать статью и разослать
  • 1 месяц: изменить структуру всех таблиц
  • 3 месяца: объяснять сотрудникам, почему важно "ц" писать как "c" а не "ts" , а проспект, как "pr"

В результате

Мы почистили таблицы, удалив лишнюю информацию (которую можно получить из любой другой таблицы)

-4

И теперь, если нам нужно поменять IP- он меняется в двух местах, если меняется модель - то только в одной таблице. Актуальность выросла с 90% до 99.5%

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