Мы должны получать ежечасно (диапазон 3 часа) наш ежедневный отчет (диапазон 24 часа), этот отчет будет содержать Запись соответствие (ссылка, id1, id2) с Транзакцией записей в нашем DB (ссылка, id1, id2), если совпадение найдено, мы должны включить эту запись в наше окончательное сравнение суммы в отчете и суммы вычисления количества совпадающих записей в нашей базе данных.
Мы используем JEE7, и пока мы придумали такой подход:
1. Анализировать / десериализовать потоковую передачу XML Ввести в объект Java с помощью Jackson
2. Как только пороговое значение 10K в оперативной памяти достигнет суммы / отфильтруйте эти объекты, а затем сериализуйте их в json, прежде чем временно сохранить их в БД.
3. Таким образом, к концу полного разбора мы будем фильтровать / суммировать и сериализовать в данные json нашу запись в дБ. Теперь мы начнем параллельное сравнение этих объектов Entry с нашей записью Transaction .
Здесь я хочу провести некоторую оптимизацию, потому что все, что нам нужно, - это сравнить Entry (reference, id1, id2) = Transaction (reference, id1, id2) , и если совпадение найдено, мы рассматриваем эту транзакцию в наш окончательный расчет, потому что это было частью нашего отчета. Таким образом, все (ссылка, id1, id2) должны быть уникальными.
Я читаю о функции ora_hash или нескольких столбцов индекса, чтобы ускорить этот поиск. Тогда есть некоторое ограничение с SQL IN Clause (1000 записей), см. здесь
Мы также используем метод Ejb Async для достижения этого параллелизма и все еще должны работать над тем, чтобы знать, когда этот асинхронный вызов не хочет вводить задержку потока.
Я хочу знать несколько оптимизаций в этом подходе, и в целом, если этот подход в порядке после того, как мы пометим все наши транзакции по RHS, мы выполним шаг 4, чтобы запросить и суммировать все эти суммы и сопоставить с суммой, полученной в этом отчете. , это завершает наш процесс.