Загрузка файла с миллиардами записей на сервер и вставка записей в БД

1

В нашем приложении, разработанном java-j2ee, нам нужно импортировать записи из загруженного файла с клиента. Содержимое файла будет выглядеть следующим образом:

id,email,name,last-name,text
1,[email protected],John,Lives in LA

... миллиард таких записей в файле.

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

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

Предлагаемые подходы,

  • Использование многопоточности в
    • Присоединение вилки
    • Несколько потоков
  • JMS

Пожалуйста, предложите.

Теги:

1 ответ

3

Если вы хотите поистине кратчайшее время, скопируйте файл в куски на сервер с помощью базы данных (возможно, используя реализацию Java SCP, если она доступна), а затем выполните свою версию DB LOAD DATA INFILE (что соответствует MySQL).

Более разумный подход - это просто вставки в пакет.

Предлагаемые подходы: использование многопоточности, JMS

Наверное, это не поможет. JMS не решает этого, и параллелизм не поможет, когда вы привязаны к IO (размер трубы или скорости дисков действительно то, что вы получаете).

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню