metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-07-11 03:31 pm

Про обфускацию БД

http://belnetmon.livejournal.com/1973180.html?style=mine
Читаю и никак не могу проникнуться священным ужасом.
Потому что у меня в продакшене (уже 12 лет) есть самодельная объектно-ориентированная база с собственным бинарным форматом файлов и запросами на XML. Только вот в этом году с ребе белнетмоном чуть-чуть подобрались к вопросу "переделать все по-человечески".
И я обслуживал сторонний продукт, написанный на Clarion под дос, а потом под винду, в котором был собственный язык программирования (с разными диалектами в разных версиях и разных модулях программы) и собственная иерархическая база поверх кларионовской.
И потом я чуть было не поучаствовал во внедрении продукта этих же производителей, уже на С++ и Oracle, где поверх оракла была сделана графовая БД с собственным языком запросов и собственный документный фреймворк.
И еще у меня есть продукты с всякого рода дебильной защитой от копирования. И продукты с асимметричным криптованием передаваемых файлов и ключами, непонятно как храняющимися. И прочий security theater.
А сейчас софты я пишу на кложури и F#, причем из них генерируется C# и дельфи. И есть ненулевая вероятность, что через 20 лет над этими софтами будут рыдать и проклинать последователи.

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

[identity profile] ennor.livejournal.com 2012-07-11 01:14 pm (UTC)(link)
Приятель рассказывал, у них в местечковом провайдере внедрили какой-то документооборот (Amdocs кажется, но сейчас уже точно не уверен) и он полез в профайлер смотреть, почему тормозит.

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

Руки бы вырвать из этих людей.

[identity profile] theiced.livejournal.com 2012-07-11 01:42 pm (UTC)(link)
гуиды не тру. надо ксор!

[identity profile] feorex.livejournal.com 2012-07-11 01:48 pm (UTC)(link)
База тормозит из-за имен-гуидов? Да ладно?

[identity profile] ennor.livejournal.com 2012-07-11 02:10 pm (UTC)(link)
Нет, конечно. Но выяснение истинной причины (индекс забыли, или еще чего) в такой БД гораздо проблематичнее, чем обычно. Особенно, если гуиды последовательные, а не рандомные.

[identity profile] n16bs.livejournal.com 2012-07-11 02:29 pm (UTC)(link)
Почему этим занимается месный админ, а не поставщик продукта?
Edited 2012-07-11 14:29 (UTC)

[identity profile] ennor.livejournal.com 2012-07-11 02:46 pm (UTC)(link)
Хм, точно не в курсе, но наверное по той же причине, почему обслуживанием баз 1С занимается свой админ, а не приходящий франч.

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

[identity profile] bydl0coder.livejournal.com 2012-07-11 03:51 pm (UTC)(link)
Так поставщик не нанимался гондон на глобус натягивать.

[identity profile] n16bs.livejournal.com 2012-07-11 01:57 pm (UTC)(link)
Какая разница базе называется таблица UCHOT_PRIHODA_CHERVEI или 9DB4B538-317D-4D49-A21F-4ABD17D515E6?

[identity profile] ennor.livejournal.com 2012-07-11 02:16 pm (UTC)(link)
Если просто запустить анализатор (DETA или из sys.dm_db_missing_index_details тянуть) и втупую применить выданные рекомендации, то никакой.

Если пытаться анализировать ситуацию мозгом, то разниц много, и все большие.

[identity profile] zmila.livejournal.com 2012-07-11 02:33 pm (UTC)(link)
не только таблиц, а и столбцов.

разница, насколько я понял того, кто поднял бучу - в поддержке.
т.е. топает он свои 7 км пешочком домой, слушает по радио что-то, и тут звонок от самого главного заказчика: "беда! всё пропало!"
он, не сбиваясь с ритма, по смартфону через удалённый десктоп заходит на главный сервер заказчика, просматривает логи, понимает причину, запускает консольку, и правит alter table alter column ...
и вот в этом случае CHISLO_DNEJ_V_PUTI на тачскрине тайпать легче, чем гуид
либо не он сам будет фиксать, а по телефону объяснит местному админу, что надо сделать, но при этом опять таки надиктовать "расстояние с двумя с латинскими буквами" проще, чем гуид.
:)

[identity profile] n16bs.livejournal.com 2012-07-11 02:38 pm (UTC)(link)
Если мы говорим о персонале на стороне разработчика системы, то у него ессно должен быть тулкит для работы с базой с нормальными именами. Если мы говорим о персонале со стороны заказчика - то УБЕРИ СВОИ ГРЯЗНЫЕ РУКИ ОТ ЧУЖОЙ БАЗЫ!11

[identity profile] alexandr0.livejournal.com 2012-07-11 03:04 pm (UTC)(link)
За транслит надо убивать.

[identity profile] familom.livejournal.com 2012-07-11 01:57 pm (UTC)(link)
Это ж если {} вокруг гуида убрать, то даже в оракл положить можно.

[identity profile] ennor.livejournal.com 2012-07-11 02:12 pm (UTC)(link)
В MSSQL фигурных скобок тоже нет, так что можно вообще ничего не менять.

[identity profile] familom.livejournal.com 2012-07-11 02:18 pm (UTC)(link)
Я про оракловое ограничение на длину имен таблиц/столбцов.

[identity profile] ennor.livejournal.com 2012-07-11 02:23 pm (UTC)(link)
А, ну да, там же... 30 символов вроде было. Не, не влезет - даже если вырезать дефисы, то все равно 32 символа.

Я думаю, если у них был порт на Оракл, они просто брали первые 30 чаров, хоть это и значительно увеличивало вероятность повторений, гы-гы :)))

[identity profile] alexandr0.livejournal.com 2012-07-11 03:10 pm (UTC)(link)
По аналогии с base64 перекодировать :)

[identity profile] bydl0coder.livejournal.com 2012-07-11 03:49 pm (UTC)(link)
Возможно, DocsVision это был. Там не для обфускации (разработчики активно шли на контакт), а типа так задумано.

[identity profile] ennor.livejournal.com 2012-07-11 08:57 pm (UTC)(link)
Запросто, я не помню уже детали, лет 5 назад было.

Однако, в то же время мне страшновато представить себе те думки, которые лежали в основе такого решения. Ну ведь реально, никаких преимуществ.