Объединение большой таблицы с большим текстовым файлом с использованием JPA? - PullRequest
0 голосов
/ 03 декабря 2010

У нас есть большая таблица приблизительно из 1 миллиона строк и файл данных с миллионами строк.Нам необходимо регулярно объединять подмножество данных в текстовом файле в таблицу базы данных.

Основная причина медленной работы заключается в том, что данные в файле имеют ссылки на другие объекты JPA, что означает другой jpaобъекты должны быть прочитаны обратно для каждой строки в файле.т.е. представьте, что у нас 100 000 человек и 1 000 000 объектов активов

Объект Person -> Список активов

Наше приложение в настоящее время использует чистый JPA для всех своих требований к обработке данных.Есть ли эффективный способ сделать это с использованием методологий JPA / ORM или мне нужно будет вернуться к чистому SQL и командам конкретного поставщика?

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

почему не используется древняя техника: разделяй и властвуй?Разделите файл на небольшие куски, а затем параллельные процессы будут одновременно работать с этими небольшими файлами.

И использовать пакетные вставки / обновления, предлагаемые JPA и Hibernate.подробнее здесь

На мой взгляд, идеальный способ - использовать пакетную поддержку, предоставляемую простым JDBC, а затем фиксировать с регулярными интервалами.

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

0 голосов
/ 03 декабря 2010

Один из возможных очень медленных ответов - сделать следующее:

  • Для каждой строки в файле:

    • Считать строку данных
    • извлечь эталонный объект
    • проверить, присоединены ли данные к эталонному объекту
    • , если не добавить данные в эталонный объект и сохранить

Итакмедленно это не стоит рассматривать.

...