Рефакторинг баз данных — удаление неиспользуемых таблиц в SQL Server

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

Рефакторинг  — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы.

Можно выделить несколько причин для внезапного рефакторинга, но как правильно, это одна причина: всех достал говнокод, который накопился со временем. С базами данных тоже самое — технический долг накапливается и рано или поздно его придется отдавать. Хорошо если начальство понимает необходимость рефакторинга и выделит на это драгоценное время. Если же не понимает то, все труднее. Но морально-технический аспект обработки заказчика оставим за рамками этой статьи.

У нас на работе  есть проект (веб сайт и прочие сервисы), который использует базу данных с очень большим числом таблиц, а точнее более 800 штук. База развилась до такого размера не за один день, а за много лет работы.  Со временем появились таблицы, которые перестали использоваться или вообще так и не были использованы с момента разработки когда-то очень нужной функциональности.
И вот в один прекрасный день заказчик, волевым решением ,ставит задачу удалить неиспользуемые таблицы не затрачивая лишнего времени. Задача понятна. Приступаем к реализации.

Читать далее Рефакторинг баз данных — удаление неиспользуемых таблиц в SQL Server

Заказчик просит сделать ерунду?! Как быть?

Часто нам приходится сталкиваться не только с техническими, но и этическими вызовами. Что если заказчик просит Вас сделать что-то технически не правильно или даже откровенно ерунду. Как поступить? Сделать, не сделать и оспорить это решение? Как должен поступить профессионал сталкиваясь с такой проблемой?

John Z. Sonmez в своей книге «Soft Skills The software developer’s  life manual» размышляет о том, что значит быть профессионалом:

«Один из моих любимых разработчиков софта и авторов Боб Мартин  написал отличную статью  как говорить НЕТ, которая как раз и посвящена этому вопросу. В этой статье он сравнивает программиста с врачом. Он говорит о том, как нелепо пациенту учить врача делать свою работу. В этом примере пациент говорит о том, что у него болит рука и врач должен отрезать ему руку. Конечно врач говорит «нет» в этом случае. Но во многих подобных случаях программисты, страшась гнева начальства, говорят «да» и выполняют ампутацию своему коду «

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

«Это может даже означать, что вы будете уволены, но иногда это цена которую надо заплатить  если вы хотите называть себя профессионалом. В краткосрочном периоде это может быть болезненно, но постоянно делать свою работу правильно на протяжении всей карьеры  лучше и оправдает себя в итоге в отличии от альтернативного варианта,  плюс вы будете спать лучше по ночам»

Мне приходилось часто сталкиваться с таким вопросом, но мое мнение отличается от Джона и Боба.

Читать далее Заказчик просит сделать ерунду?! Как быть?

Памятка по настройке рабочего места ASP.NET программиста

В конце 90-ых гг. приходилось устанавливать(переустанавливать ) windows 95 чуть ли не раз в неделю. В компьютерном классе было около 10 компов и постоянно какая-то машина нуждалась в переустановке. Переход на windows 98 не сильно поменял ситуацию . Вообщем, в то время я помнил наизусть, что и как надо было делать  во время настройки с нуля рабочей станции. Даже серийный номер вводился по памяти. Было время.

Последняя моя винда проработала  5 лет без переустановки и каких либо проблем*. Это был Windows 7 Home Premium, который шел в комплекте с ноутбуком.  Пока я ее не сломал сам устанавливая обновление, которое не стоило ставить. Но кто знал?!

Подробнее об этой истории можно почитать тут.

А поскольку настройка рабочей станции раз в 5 лет дело не частое, кое что забывается. Совсем не давно, я прошел этот процесс с нуля решил написать памятку с основными шагами установки и настройки.

Читать далее Памятка по настройке рабочего места ASP.NET программиста

SQL Server FILESTREAM и уменьшение размеров хранилища файлов

Есть любопытный компонент SQL Server  —  FILESTREAM.  И этот компонент представляет собой хранилище файлов не внутри базы(на мой взгляд идея не очень), а внутри файловой системы (что уже обнадеживает).   В целом штука нужная и полезная, но со своими особенностями. И вот, волею судьбы, мне пришлось в эти особенности вникать.

Не так давно на проекте S решили использовать FILESTREAM. Проект старый и изначально файлы хранились внутри базы. Почему такое решение было принято мне трудно сказать т.к. дело было давно и принималось это решение другой командой программистов.  Лично я бы постарался всячески этого не делать т.к рано или поздно файлов станет много и база станет большой и медленной. И вообще контролировать хранение файлов лучше программно, хотя это и труднее.
База проекта S в итоге стала весить около 80 гигов и регулярные бекапы базы стали большой проблемой. Решили перейти на FILESTREAM и перешли.  База на сервере, в части данных, усохла до 5 гигов. Ну и остальные файлы теперь поселились в файловой системе сервера.  Результатом остались довольны.  Локальная база (сильно урезанная для целей разработки) тоже благополучно обновилась миграциями и все заработало.

Через некоторое время в один прекрасный воскресный вечер я решил установить себе языковое  обновление на свою Windows 7 Home Premium т.е. захотел всего-то чтобы моя винда была на английском языке, вот такая вот странная прихоть?! Да и чем же еще заняться в воскресенье вечером? В этой идее была одна проблема:  W7 Home Premium смену языков интерфейса явно не поддерживает, да и не явно видимо тоже, как покажут дальнейшие события.

Читать далее SQL Server FILESTREAM и уменьшение размеров хранилища файлов

Предыстория или беграунд блога и автора

Хочется рассказать о блоге и планах на будущее в контексте прошлого. Идея создать блог ненова для меня,  и этот блог уже вторая попытка. Первый —  был создан в 2009 году, но прожил не долго т.к. не было четкого понимания зачем он нужен и о чем я хочу писать. Плюс ко всему, количество работы зашкаливало и просто не хватало времени на все проекты.
Блог 2.0 или 0.2 (скорее так ) появился по нескольким причинам:

Читать далее Предыстория или беграунд блога и автора