У меня есть приложение rails с таблицей из примерно 30 миллионов строк, которую я строю из текстового документа, который мой поставщик данных предоставляет мне ежеквартально.Оттуда я делаю некоторые манипуляции и сравнение с некоторыми другими таблицами и создаю дополнительную таблицу с более настраиваемыми данными.
В первый раз, когда я делал это, я запускал скрипт ruby через консоль Rails.Это было медленно и, очевидно, не лучшим способом.
Каков наилучший способ упростить этот процесс и обновить его на моем производственном сервере без каких-либо или хотя бы очень ограниченных простоев?
Этопроцесс, который я считаю лучшим на данный момент:
создание граблей для чтения данных.Используйте плагин activerecord-import, чтобы выполнить пакетную запись и отключить проверки activerecord.Загрузите эти данные в новые дублирующиеся таблицы.
Создание индексов для вновь создаваемых таблиц.
Переименование вновь созданных таблиц в имена, соответствующие рельсам.приложение ищет.
Удалить старое.
Все это я планирую сделать прямо на рабочем сервере.
Есть ли лучший способ сделать это?
Другие примечания к комментариям:
- Таблицы уже существуют
- Старые таблицы и данные одноразовые
- Таблицы могут быть заблокированы только для выбора
- Необходимо свести к минимуму время простоя
- В настоящее время у нас есть 2 экземпляра Amazon EC2 с высоким процессором.Я полагаю, что они имеют 1,7 ГБ ОЗУ, поэтому временное хранение всего импорта, вероятно, не вариант.
- Новые данные - это необработанный текстовый файл с разделителями строк.У меня есть скрипт для разбора, он уже написан на Ruby.