Кэширование большой таблицы поиска в памяти JVM
У нас есть большой набор данных по историческим транзакциям, и у нас есть система, которая обязана проверять новые транзакции по каждой исторической транзакции в этом наборе данных.
Это включает в себя запуск алгоритма для каждой исторической транзакции, который производит сопоставление баллов с новой транзакцией. Это означает последовательное выполнение транзакций, и мы не можем использовать индексирование или хеширование, чтобы попытаться уменьшить количество транзакций, которые необходимо проверить.
Пара других моментов: транзакции всегда добавляются в набор данных, и они никогда не исключаются. Кроме того, мы распределяем обработку, разделяя набор данных между работниками на разных серверах.
Просто сейчас система использует класс Java Collection для кэширования набора данных транзакций в памяти. Это происходит главным образом из-за требований к скорости, поскольку обеспечивает быстрый последовательный доступ к транзакциям.
Я хотел бы знать, существуют ли какие-либо системы кэширования, такие как EHCache, которые помогли бы нам распределить набор данных по различным серверам, но все же обеспечили бы быстрый последовательный доступ к записям в кэше.
1 ответ
Изобретать колесо - это так заманчиво! Когда у Oracle есть в базе данных память, почему мы не можем сделать то же самое... Позвольте мне попробовать тоже. Как насчет хэширования массива байтов и хранения этих хешей? А когда возникает коллизия хешей, тогда идите в реальную базу данных и перепроверьте весь массив. Так заманчиво...