В настоящее время я использую Hibernate с H2 для своего приложения для создания музыкальных тегов. Основная причина использования hibernate заключается в том, чтобы остановить увеличение использования памяти пропорционально количеству помеченных файлов, что было бы, если бы вся обработка сохранялась в памяти, а не на диске.
Одной из вещей, для которых я использую Hibernate, является загрузка метаданных из онлайновой базы данных, а затем, если приложению необходимо снова использовать эти метаданные, они могут извлекать локально из Hibernate вместо медленной повторной загрузки из Интернета.
Приложение отлично работает на ПК с хорошей производительностью, но сейчас я пытаюсь улучшить производительность на медленных устройствах nas, и производительность снижается из-за медленного процессора и дискового ввода-вывода.
Это заставило меня взглянуть на кэш второго уровня Hibernates, т. Е. Я выделил Ehcache небольшой объем памяти, а затем приложение просматривает его перед поиском в Hibernate, что улучшило производительность.
Это заставило меня задуматься, поскольку поиск метаданных осуществляется только по первичному ключу (других типов запросов нет), я ошибаюсь, используя Hibernate для таких данных. Будет ли разумнее использовать Ehcache напрямую для данных этого типа, или мне лучше использовать базу данных NoSql.
Это в основном сводится к производительности процессора, но я не смог найти сопоставимых тестов. Я надеюсь, что кто-то с большим опытом в этой области, чем кто-либо, может дать мне представление о вероятных результатах работы.