У меня есть требование заменить содержимое таблицы базы данных содержимым файла. Это происходит каждый день в определенное время. Это делается с использованием приложения Java. У меня нет доступа к исходной базе данных, которая создает файл.Как реплицировать таблицу базы данных из файла?
Унаследованное приложение создает новую таблицу и вставляет содержимое файла в новую таблицу. Затем он удаляет старую таблицу и переименовывает новую таблицу в старое имя.
Мое руководство говорит, что у него есть лучший способ, который должен загрузить содержимое файла в память. Затем мы загружаем содержимое старой таблицы в память. Мы делаем некоторые сравнения и придумываем список вставки (записи только в файле), список обновлений (записи с тем же pk, которые находятся в старой таблице и файл и не соответствуют), и список удаления (записи, которые только в старой таблице).
Мое руководство говорит, что преимущество в том, что чтение каждой строки из файла и вставка его занимает много времени, предположительно из-за ввода-вывода файлов. Мы все еще читаем каждую строку в файле. Возможно, преимущество состоит в том, что он не вставляет повторяющиеся строки, которые могут иметь очень хорошие данные в основном дублировать строки. Кроме того, этот метод не требует удаления и создания табличных разрешений, поскольку старый метод будет выглядеть как хорошо с точки зрения безопасности.
Мой вопрос: есть ли другие проблемы с этой техникой? Кажется, он использует много памяти, и мы в основном загружаем содержимое таблицы в память дважды. Есть лучший способ сделать это? Одна мысль заключалась бы в том, чтобы загрузить содержимое файла в новую таблицу и сделать несколько соединений. Хотя после загрузки новой таблицы мы могли бы просто поменять таблицы, как это делает устаревшее приложение.
Возможно, мне удастся сравнить две стратегии с точки зрения использования памяти и скорости, но я хотел бы знать, является ли одна из этих рекомендаций лучшей, а если нет, то какая?
Я думаю, что преимущества просто делать то, что говорит ваш лидер, вероятно, перевесят любые выигрыши в производительности;) Не забудьте сбалансировать время программирования (дорого) с временем работы компьютера (обычно дешево). Если это выполняется в задании cron, производительность часто не является проблемой. –
Унаследованная реализация была заданием cron. К сожалению, я застрял в реализации Java. Если ответ состоит в том, чтобы просто опустить голову и сделать то, что мне сказали, я в порядке. Это хороший момент, хотя повторная запись этой вещи, вероятно, дорогая по сравнению с любой прирост производительности за предыдущую реализацию. – Frank
Определенно чувствуйте это своим лидерством, он должен хорошо относиться к важности работы. Мой комментарий был всего лишь реакцией, я мог бы быть в стороне от того, что важно. Вы также вполне можете быть уверены в производительности ... –