2013-03-13 3 views
0

Я кодирую компонент на основе Java, чтобы выполнить некоторую переработку около миллиона элементов данных (следовательно, производительность имеет первостепенное значение).Reconcillation - любая java-библиотека?

Два источника данных: 1. Таблица в базе данных 2. Плоский файл.

В базе данных имеется несколько столбцов, которые должны совпадать с несколькими столбцами в файле. Данные не сортируются или что-то еще. Поэтому каждый элемент данных (скажем, это имя и соответствующий номер телефона) должен быть таким же в базе данных и в плоском файле. Например. если одна из строк в базе данных говорит для «john», номер «220 343 123», то строка в плоском файле для «john» должна иметь номер «220 343 123». Если нет, я сообщаю перерыв и перехожу дальше.

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

вопроса на форуме есть, знаете ли вы какой-либо библиотеки/инструмента (в java world), который можно было бы использовать для этого?

Спасибо.

ответ

0

Вы можете прочитать плоский файл и поместить данные в какую-то структуру Map. Затем вы перебираете строки базы данных и сравниваете их со значениями в Map.

Таким образом, вы только итерацию оба источника данных один раз ...

+0

OP больше заинтересован в вне-полке библиотеки/инструмент, чем подход, или алгоритма. – sgp15

+0

@Fortega - ну, да, это один из способов. Но не считаете ли вы, что размещение карты из 1 миллиона элементов данных в памяти может быть слишком слишком обремененным аппаратным обеспечением (учитывая, что это всего лишь один компонент гораздо более крупной системы). Я не снимаю идею, я просто пытаюсь взглянуть на нее с разных точек зрения. – partha

+0

Зависит от размера элементов данных и доступной памяти ... Поэтому я ничего не могу сказать об этом. – Fortega

Смежные вопросы