2016-10-18 5 views
0

Привет, я разработчик сервера, и у нас есть большая база данных mysql (у самой большой таблицы около 0,5 миллиарда строк) работает 24-7.Очистка данных, миграция в большой базе данных в процессе эксплуатации

И есть много разбитых данных. Большинство из них логически ошибочны и связаны с несколькими источниками (несколько таблиц, s3). И так как это логично сложно, нам нужна модель Rails для их очистки (не может быть сделано с использованием чистых запросов sql)

Прямо сейчас, я использую свою собственную небольшую схему очистки и используя AWS Auto Scaling Group для расширения экземпляров и ускоряться. Но поскольку база данных находится в рабочем состоянии, я должен быть осторожным (блокировки таблиц и другие компоненты) и ограничить объем процесса.

Так мне любопытно

  1. Как вы (или крупные компании) очистить свои данные, когда база данных находится в рабочем состоянии?
    • Вы используете временные таблицы и свопите? или просто обновить/вставить/удалить в базу данных в службе?
    • Вы используете фреймворк или библиотеку или решение для эффективной очистки данных? (например, распределенная обработка)
  2. Как вы обнаруживаете испорченные данные в реальном времени?
    • Вы используете фреймворк или библиотеку или решение для обнаружения сломанных данных?
+0

Проведите 25% ресурсов, поддерживающих текущий оборот. 75 в системе с целостностью данных/ссылочной целостностью – Drew

+0

Но этот вопрос слишком широк. Я просто удалю его, потому что мы не сообщим вам ничего, чего вы еще не знаете. – Drew

ответ

1

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

  1. Первый доступ к инфраструктурным проблемам, например, может ли база данных находиться в автономном режиме или ограничена от использования в течение нескольких часов для обслуживания, если это так читать.
  2. Далее вам нужно определить, что представляет собой «сломанные данные».
  3. Как только вы достигнете своего определения «сломанные данные», переведите способ его программно идентифицировать.
  4. Напишите сценарий, который использует ваш программный алгоритм идентификации и запускает некоторый тест.
  5. Затем создайте резервные копии данных в процессе подготовки.
  6. Затем, учитывая масштаб вашего набора данных, вам, вероятно, потребуется увеличить ресурсы сервера, а не скрипку для скрипки.
  7. Выполнить скрипт
  8. Проверьте свои данные для оценки эффективности вашего сценария
  9. При необходимости отрегулировать и повторно запустите

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