Очистка таблиц SQL от больших БД? - PullRequest
2 голосов
/ 29 октября 2009

Сайт, над которым я работаю в качестве студента, будет переработан и выпущен в ближайшее время, и мне было поручено вручную выполнить поиск по каждой таблице в БД, которую использует сайт для поиска таблиц, которые мы можем рассмотреть для удаления. Я выполняю поиск по каждому исходному коду HTML-файлов в Dreamweaver, но я надеялся, что есть автоматизированный способ проверки моей работы. У кого-нибудь есть предложения относительно того, как это делается в мире бизнеса?

Ответы [ 5 ]

2 голосов
/ 29 октября 2009

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

Вместо этого я бы предложил включить аудит базы данных и записать, какой SQL на самом деле используется. Например, в Oracle, вы бы сделали это так . Другие основные серверы баз данных имеют аналогичные возможности.

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

После того, как у вас есть таблицы-кандидаты для удаления из базы данных и утверждения от вашего менеджера, не просто отбрасывайте таблицы, создавайте их снова как пустую таблицу или помещайте одну фиктивную запись в таблицу с почти нулевыми значениями ( или ноль или пробел) в полях, за исключением полей имени и описания, где вы можете поместить что-то вроде «УДАЛЕНО», «Сообщить об ошибке УДАЛИТЬ в центр поддержки» и т. д. Таким образом, приложение не выйдет из строя с серьезной ошибкой, и у вас есть шанс выяснить, что делают пользователи, когда они получают эти неиспользованные таблицы.

1 голос
/ 29 октября 2009

Я бы начал с поиска в исходном коде HTML для ключевых слов:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

... используя grep / etc. Ни одна из них не является сущностью HTML, и вы не можете надежно использовать имена таблиц, потому что вы можете иметь дело с представлениями (при условии, что они существуют в системе). Затем вы должны залить сами утверждения, чтобы определить, что используется.

Если [надеюсь] функции и / или хранимые процедуры использовались в системе, большинство БД имеют справочную функцию для проверки зависимостей.

Это было бы подходящее время для создания проектного документа на экранной основе с перечислением атрибутов на экране и того, откуда поступают значения в базе данных на уровне table.column.

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

1 голос
/ 29 октября 2009

Выполните обратный инжиниринг БД (Visio, Toad и т. Д.), Запишите структуру и спросите дизайнеров нового сайта, что им нужно - затем выполните рефакторинг.

0 голосов
/ 29 октября 2009

Я предполагаю, что у вас нет никаких тестов для доступа к данным или пользовательскому интерфейсу, поэтому нет способа проверить, что используется, а что нет. При условии, что доступ к данным является согласованным, сценарии будут вашим лучшим выбором. Пусть он найдет вызываемые таблицы / представления / хранимые процедуры и сохранит их в файле для дальнейшего анализа. Это, по крайней мере, даст вам список всего, что на самом деле вызывается из какого-то места. А если эти страницы действительно используются где-то, это другая история.

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

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

0 голосов
/ 29 октября 2009

Если имена таблиц указаны в источнике HTML (и если это единственное место, которое они когда-либо указывали!), Вы можете выполнить поиск в файлах по имени каждой таблицы в БД. Если таблиц много, рассмотрите возможность использования такого инструмента, как grep, и создания сценария, который запускает grep для базы исходного кода (файлы HTML и любые другие, которые могут ссылаться на таблицу по имени) для каждого имени таблицы.

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

...