2017-01-09 2 views
2

В настоящее время я делаю свой проект по миграции данных с MySql на NoSql с использованием Java в качестве языка программирования. Ниже приведены процесс вовлечены в него:Использование файла как среднего слоя при передаче данных с MySql на NoSql в Java

  • Чтение данных MySql и записывает в файл в формате Json
  • считывает файл JSon и записывает в NoSQL
  • Записывает журнал ошибок в случае возникновения какой-либо ошибки в любом из выше процесса

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

+0

Я отправил ответ, но понял после публикации, что может потребоваться некоторое разъяснение ... Есть ли какие-либо физические (аппаратные) ограничения? Например, обработка или хранение, сеть и т. Д.? – Sh4d0wsPlyr

+0

@ Sh4d0wsPlyr, может быть ограничение хранения и пропускной способности. –

ответ

1

Чтобы ответить на вопрос прямо: да, есть преимущества, но это зависит от вашей общей реализации.

Вот пара вопросов, которые следует учитывать (относительно того, почему это может быть активом).

  1. Целостность в случае отказа. В зависимости от того, как выполняется процесс, если что-то ужасное происходит во время передачи, наличие файлов показывает вам, где/почему возникла проблема.
  2. Если ваши базы данных физически разделены, файлы будут сэкономить много трафика накладных расходов между серверами.
  3. Обычно проще отлаживать файл, а затем процесс. Легко видеть проблему при экспорте в несколько читаемый файл, а также отслеживать ту же ошибку во время выполнения.

Причины против:

  1. файлы занимают дополнительное пространство вы не хотите использовать.
  2. Медленнее в целом (поскольку для этого по сути требуется чтение базы данных, сохранение в файл, загрузка из файла, запись в базу данных).
  3. Он добавляет дополнительную точку отказа. Вы должны читать и записывать в базу данных, а конвертировать в удобный формат, независимо от реализации файла. Однако добавленный уровень использования файла увеличивает риск сбоя (например, недостающие файлы, поврежденные, слишком большие и т. Д.).

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

+0

@ sh4dowsPlyr, вы бы посоветовали мне, что делать, если миграция выполняется на локальном компьютере, и если миграция выполняется через серверы? –

+0

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